From 187ea93f814244707916025fdbd3c60cf19d0841 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 02:26:06 +0000 Subject: [PATCH 01/99] Get logs db resource --- app/cli.php | 33 +++++++++++++++++++++++++++++++++ app/init.php | 33 +++++++++++++++++++++++++++++++++ app/worker.php | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) diff --git a/app/cli.php b/app/cli.php index 47f4525f0b..dbd7c59784 100644 --- a/app/cli.php +++ b/app/cli.php @@ -160,6 +160,39 @@ CLI::setResource('getProjectDB', function (Group $pools, Database $dbForPlatform }; }, ['pools', 'dbForPlatform', 'cache']); +CLI::setResource('getLogsDB', function (Group $pools, Cache $cache) { + $database = null; + return function (?Document $project = null) use ($pools, $cache, $database) { + if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getInternalId()); + return $database; + } + + $dbAdapter = $pools + ->get('logs') + ->pop() + ->getResource(); + + $database = new Database( + $dbAdapter, + $cache + ); + + $database + ->setSharedTables(true) + ->setNamespace('logsV1') + ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS) + ->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES); + + // set tenant + if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getInternalId()); + } + + return $database; + }; +}, ['pools', 'cache']); + CLI::setResource('queue', function (Group $pools) { return $pools->get('queue')->pop()->getResource(); }, ['pools']); diff --git a/app/init.php b/app/init.php index f812ef094c..651d62979a 100644 --- a/app/init.php +++ b/app/init.php @@ -1542,6 +1542,39 @@ App::setResource('getProjectDB', function (Group $pools, Database $dbForPlatform }; }, ['pools', 'dbForPlatform', 'cache']); +App::setResource('getLogsDB', function (Group $pools, Cache $cache) { + $database = null; + return function (?Document $project = null) use ($pools, $cache, $database) { + if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getInternalId()); + return $database; + } + + $dbAdapter = $pools + ->get('logs') + ->pop() + ->getResource(); + + $database = new Database( + $dbAdapter, + $cache + ); + + $database + ->setSharedTables(true) + ->setNamespace('logsV1') + ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS) + ->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES); + + // set tenant + if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getInternalId()); + } + + return $database; + }; +}, ['pools', 'cache']); + App::setResource('cache', function (Group $pools) { $list = Config::getParam('pools-cache', []); $adapters = []; diff --git a/app/worker.php b/app/worker.php index 6eb1363e9b..81b1367873 100644 --- a/app/worker.php +++ b/app/worker.php @@ -173,6 +173,39 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForPlatf }; }, ['pools', 'dbForPlatform', 'cache']); +Server::setResource('getLogsDB', function (Group $pools, Cache $cache) { + $database = null; + return function (?Document $project = null) use ($pools, $cache, $database) { + if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getInternalId()); + return $database; + } + + $dbAdapter = $pools + ->get('logs') + ->pop() + ->getResource(); + + $database = new Database( + $dbAdapter, + $cache + ); + + $database + ->setSharedTables(true) + ->setNamespace('logsV1') + ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS) + ->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES); + + // set tenant + if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getInternalId()); + } + + return $database; + }; +}, ['pools', 'cache']); + Server::setResource('abuseRetention', function () { return time() - (int) System::getEnv('_APP_MAINTENANCE_RETENTION_ABUSE', 86400); }); From c6360cce065f84abea056417683d3faf3ce9069f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 02:50:50 +0000 Subject: [PATCH 02/99] logs collection config --- app/config/collections.php | 2 + app/config/collections/logs.php | 94 +++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 app/config/collections/logs.php diff --git a/app/config/collections.php b/app/config/collections.php index 8c8356aafd..533dee57a8 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -5,6 +5,7 @@ $common = include __DIR__ . '/collections/common.php'; $projects = include __DIR__ . '/collections/projects.php'; $databases = include __DIR__ . '/collections/databases.php'; $platform = include __DIR__ . '/collections/platform.php'; +$logs = include __DIR__ . '/collections/logs.php'; // see - http.php#245 // $collections['buckets']['files']; @@ -27,6 +28,7 @@ $collections = [ 'databases' => $databases, 'projects' => array_merge($projects, $common), 'console' => array_merge($platform, $common), + 'logs' => $logs, ]; return $collections; diff --git a/app/config/collections/logs.php b/app/config/collections/logs.php new file mode 100644 index 0000000000..d6fba35722 --- /dev/null +++ b/app/config/collections/logs.php @@ -0,0 +1,94 @@ + ID::custom(Database::METADATA), + '$id' => ID::custom('stats'), + 'name' => 'Stats', + 'attributes' => [ + [ + '$id' => ID::custom('metric'), + 'type' => Database::VAR_STRING, + 'format' => '', + 'size' => 255, + 'signed' => true, + 'required' => true, + 'default' => null, + 'array' => false, + 'filters' => [], + ], + [ + '$id' => ID::custom('region'), + 'type' => Database::VAR_STRING, + 'format' => '', + 'size' => 255, + 'signed' => true, + 'required' => true, + 'default' => null, + 'array' => false, + 'filters' => [], + ], + [ + '$id' => ID::custom('value'), + 'type' => Database::VAR_INTEGER, + 'format' => '', + 'size' => 8, + 'signed' => true, + 'required' => true, + 'default' => null, + 'array' => false, + 'filters' => [], + ], + [ + '$id' => ID::custom('time'), + 'type' => Database::VAR_DATETIME, + 'format' => '', + 'size' => 0, + 'signed' => false, + 'required' => false, + 'default' => null, + 'array' => false, + 'filters' => ['datetime'], + ], + [ + '$id' => ID::custom('period'), + 'type' => Database::VAR_STRING, + 'format' => '', + 'size' => 4, + 'signed' => true, + 'required' => true, + 'default' => null, + 'array' => false, + 'filters' => [], + ], + ], + 'indexes' => [ + [ + '$id' => ID::custom('_key_time'), + 'type' => Database::INDEX_KEY, + 'attributes' => ['time'], + 'lengths' => [], + 'orders' => [Database::ORDER_DESC], + ], + [ + '$id' => ID::custom('_key_period_time'), + 'type' => Database::INDEX_KEY, + 'attributes' => ['period', 'time'], + 'lengths' => [], + 'orders' => [Database::ORDER_ASC], + ], + [ + '$id' => ID::custom('_key_metric_period_time'), + 'type' => Database::INDEX_UNIQUE, + 'attributes' => ['metric', 'period', 'time'], + 'lengths' => [], + 'orders' => [Database::ORDER_DESC], + ], + ], +]; + +return $logsCollection; From 5685c8ac25917ff2a2200cb481f0ad4386d5951e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 02:51:01 +0000 Subject: [PATCH 03/99] refactor create collection and create logs db --- app/http.php | 251 ++++++++++++++++++++++++++------------------------- 1 file changed, 129 insertions(+), 122 deletions(-) diff --git a/app/http.php b/app/http.php index 608ac2ec12..b9aa69a7cc 100644 --- a/app/http.php +++ b/app/http.php @@ -17,7 +17,6 @@ use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; -use Utopia\Database\Exception\Duplicate; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; @@ -156,6 +155,79 @@ function dispatch(Server $server, int $fd, int $type, $data = null): int include __DIR__ . '/controllers/general.php'; +function createDatabase(App $app, string $resourceKey, string $dbName, array $collections, mixed $pools, callable $extraSetup = null): void +{ + $max = 10; + $sleep = 1; + $attempts = 0; + + do { + try { + $attempts++; + $resource = $app->getResource($resourceKey); + /* @var $database Database */ + $database = is_callable($resource) ? $resource() : $resource; + break; // exit loop on success + } catch (\Exception $e) { + Console::warning(" └── Database not ready. Retrying connection ({$attempts})..."); + $pools->reclaim(); + if ($attempts >= $max) { + throw new \Exception(' └── Failed to connect to database: ' . $e->getMessage()); + } + sleep($sleep); + } + } while ($attempts < $max); + + Console::success("[Setup] - $dbName database init started..."); + + // Attempt to create the database + try { + Console::info(" └── Creating database: $dbName..."); + $database->create(); + } catch (\Exception $e) { + Console::info(" └── Skip: metadata table already exists"); + } + + // Process collections + foreach ($collections as $key => $collection) { + if (($collection['$collection'] ?? '') !== Database::METADATA) { + continue; + } + + if (!$database->getCollection($key)->isEmpty()) { + continue; + } + + Console::info(" └── Creating collection: {$collection['$id']}..."); + + $attributes = array_map(fn ($attr) => new Document([ + '$id' => ID::custom($attr['$id']), + 'type' => $attr['type'], + 'size' => $attr['size'], + 'required' => $attr['required'], + 'signed' => $attr['signed'], + 'array' => $attr['array'], + 'filters' => $attr['filters'], + 'default' => $attr['default'] ?? null, + 'format' => $attr['format'] ?? '' + ]), $collection['attributes']); + + $indexes = array_map(fn ($index) => new Document([ + '$id' => ID::custom($index['$id']), + 'type' => $index['type'], + 'attributes' => $index['attributes'], + 'lengths' => $index['lengths'], + 'orders' => $index['orders'], + ]), $collection['indexes']); + + $database->createCollection($key, $attributes, $indexes); + } + + if ($extraSetup) { + $extraSetup($database); + } +} + $http->on(Constant::EVENT_START, function (Server $http) use ($payloadSize, $register) { $app = new App('UTC'); @@ -164,140 +236,75 @@ $http->on(Constant::EVENT_START, function (Server $http) use ($payloadSize, $reg /** @var Group $pools */ App::setResource('pools', fn () => $pools); - // wait for database to be ready - $attempts = 0; - $max = 10; - $sleep = 1; - - do { - try { - $attempts++; - $dbForPlatform = $app->getResource('dbForPlatform'); - /** @var Utopia\Database\Database $dbForPlatform */ - break; // leave the do-while if successful - } catch (\Throwable $e) { - Console::warning("Database not ready. Retrying connection ({$attempts})..."); - if ($attempts >= $max) { - throw new \Exception('Failed to connect to database: ' . $e->getMessage()); - } - sleep($sleep); - } - } while ($attempts < $max); - - Console::success('[Setup] - Server database init started...'); - - try { - Console::success('[Setup] - Creating console database...'); - $dbForPlatform->create(); - } catch (Duplicate) { - Console::success('[Setup] - Skip: metadata table already exists'); - } - - if ($dbForPlatform->getCollection(Audit::COLLECTION)->isEmpty()) { - $audit = new Audit($dbForPlatform); - $audit->setup(); - } - /** @var array $collections */ $collections = Config::getParam('collections', []); - $consoleCollections = $collections['console']; - foreach ($consoleCollections as $key => $collection) { - if (($collection['$collection'] ?? '') !== Database::METADATA) { - continue; - } - if (!$dbForPlatform->getCollection($key)->isEmpty()) { - continue; + + // create logs database first, `getLogsDB` is a callable. + createDatabase($app, 'getLogsDB', 'logs', $collections['logs'], $pools); + + // create appwrite database, `dbForPlatform` is a direct access call. + createDatabase($app, 'dbForPlatform', 'appwrite', $collections['console'], $pools, function (Database $dbForPlatform) use ($collections) { + if ($dbForPlatform->getCollection(Audit::COLLECTION)->isEmpty()) { + $audit = new Audit($dbForPlatform); + $audit->setup(); } - Console::success('[Setup] - Creating console collection: ' . $collection['$id'] . '...'); + if ($dbForPlatform->getDocument('buckets', 'default')->isEmpty() && + !$dbForPlatform->exists($dbForPlatform->getDatabase(), 'bucket_1')) { + Console::info(" └── Creating default bucket..."); + $dbForPlatform->createDocument('buckets', new Document([ + '$id' => ID::custom('default'), + '$collection' => ID::custom('buckets'), + 'name' => 'Default', + 'maximumFileSize' => (int) System::getEnv('_APP_STORAGE_LIMIT', 0), + 'allowedFileExtensions' => [], + 'enabled' => true, + 'compression' => 'gzip', + 'encryption' => true, + 'antivirus' => true, + 'fileSecurity' => true, + '$permissions' => [ + Permission::create(Role::any()), + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'search' => 'buckets Default', + ])); - $attributes = \array_map(fn ($attribute) => new Document($attribute), $collection['attributes']); - $indexes = \array_map(fn (array $index) => new Document($index), $collection['indexes']); + $bucket = $dbForPlatform->getDocument('buckets', 'default'); - $dbForPlatform->createCollection($key, $attributes, $indexes); - } - - if ($dbForPlatform->getDocument('buckets', 'default')->isEmpty() && !$dbForPlatform->exists($dbForPlatform->getDatabase(), 'bucket_1')) { - Console::success('[Setup] - Creating default bucket...'); - $dbForPlatform->createDocument('buckets', new Document([ - '$id' => ID::custom('default'), - '$collection' => ID::custom('buckets'), - 'name' => 'Default', - 'maximumFileSize' => (int) System::getEnv('_APP_STORAGE_LIMIT', 0), // 10MB - 'allowedFileExtensions' => [], - 'enabled' => true, - 'compression' => 'gzip', - 'encryption' => true, - 'antivirus' => true, - 'fileSecurity' => true, - '$permissions' => [ - Permission::create(Role::any()), - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'search' => 'buckets Default', - ])); - - $bucket = $dbForPlatform->getDocument('buckets', 'default'); - - Console::success('[Setup] - Creating files collection for default bucket...'); - $files = $collections['buckets']['files'] ?? []; - if (empty($files)) { - throw new Exception('Files collection is not configured.'); - } - - $attributes = \array_map(fn ($attribute) => new Document($attribute), $files['attributes']); - $indexes = \array_map(fn (array $index) => new Document($index), $files['indexes']); - - $dbForPlatform->createCollection('bucket_' . $bucket->getInternalId(), $attributes, $indexes); - } - - $projectCollections = $collections['projects']; - $sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', '')); - $sharedTablesV1 = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES_V1', '')); - $sharedTablesV2 = \array_diff($sharedTables, $sharedTablesV1); - - $cache = $app->getResource('cache'); - - foreach ($sharedTablesV2 as $hostname) { - $adapter = $pools - ->get($hostname) - ->pop() - ->getResource(); - - $dbForProject = (new Database($adapter, $cache)) - ->setDatabase('appwrite') - ->setSharedTables(true) - ->setTenant(null) - ->setNamespace(System::getEnv('_APP_DATABASE_SHARED_NAMESPACE', '')); - - try { - Console::success('[Setup] - Creating project database: ' . $hostname . '...'); - $dbForProject->create(); - } catch (Duplicate) { - Console::success('[Setup] - Skip: metadata table already exists'); - } - - foreach ($projectCollections as $key => $collection) { - if (($collection['$collection'] ?? '') !== Database::METADATA) { - continue; - } - if (!$dbForProject->getCollection($key)->isEmpty()) { - continue; + Console::info(" └── Creating files collection for default bucket..."); + $files = $collections['buckets']['files'] ?? []; + if (empty($files)) { + throw new Exception('Files collection is not configured.'); } - $attributes = \array_map(fn ($attribute) => new Document($attribute), $collection['attributes']); - $indexes = \array_map(fn (array $index) => new Document($index), $collection['indexes']); + $attributes = array_map(fn ($attr) => new Document([ + '$id' => ID::custom($attr['$id']), + 'type' => $attr['type'], + 'size' => $attr['size'], + 'required' => $attr['required'], + 'signed' => $attr['signed'], + 'array' => $attr['array'], + 'filters' => $attr['filters'], + 'default' => $attr['default'] ?? null, + 'format' => $attr['format'] ?? '' + ]), $files['attributes']); - Console::success('[Setup] - Creating project collection: ' . $collection['$id'] . '...'); + $indexes = array_map(fn ($index) => new Document([ + '$id' => ID::custom($index['$id']), + 'type' => $index['type'], + 'attributes' => $index['attributes'], + 'lengths' => $index['lengths'], + 'orders' => $index['orders'], + ]), $files['indexes']); - $dbForProject->createCollection($key, $attributes, $indexes); + $dbForPlatform->createCollection('bucket_' . $bucket->getInternalId(), $attributes, $indexes); } - } + }); $pools->reclaim(); - Console::success('[Setup] - Server database init completed...'); }); From 9955b6b61c0e7fc5fdfab48f7c74e24a246f2635 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 04:33:33 +0000 Subject: [PATCH 04/99] usage count container and events --- .env | 1 + Dockerfile | 3 +- app/cli.php | 4 + bin/usage-count | 3 + docker-compose.yml | 32 +++++++ src/Appwrite/Event/Usage.php | 12 +++ src/Appwrite/Platform/Action.php | 90 ++++++++++++++++++ src/Appwrite/Platform/Services/Tasks.php | 2 + src/Appwrite/Platform/Tasks/UsageCount.php | 101 +++++++++++++++++++++ 9 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 bin/usage-count create mode 100644 src/Appwrite/Platform/Action.php create mode 100644 src/Appwrite/Platform/Tasks/UsageCount.php diff --git a/.env b/.env index 8f7d7996e7..58cd9c13fb 100644 --- a/.env +++ b/.env @@ -86,6 +86,7 @@ _APP_MAINTENANCE_RETENTION_EXECUTION=1209600 _APP_MAINTENANCE_RETENTION_ABUSE=86400 _APP_MAINTENANCE_RETENTION_AUDIT=1209600 _APP_USAGE_AGGREGATION_INTERVAL=30 +_APP_USAGE_COUNT_INTERVAL=3600 _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000 _APP_MAINTENANCE_RETENTION_SCHEDULES=86400 _APP_USAGE_STATS=enabled diff --git a/Dockerfile b/Dockerfile index 41810f5dc4..30554289ef 100755 --- a/Dockerfile +++ b/Dockerfile @@ -86,7 +86,8 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/worker-migrations && \ chmod +x /usr/local/bin/worker-webhooks && \ chmod +x /usr/local/bin/worker-usage && \ - chmod +x /usr/local/bin/worker-usage-dump + chmod +x /usr/local/bin/worker-usage-dump && \ + chmod +x /usr/local/bin/usage-count # Letsencrypt Permissions RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ diff --git a/app/cli.php b/app/cli.php index dbd7c59784..91fef8dc55 100644 --- a/app/cli.php +++ b/app/cli.php @@ -5,6 +5,7 @@ require_once __DIR__ . '/init.php'; use Appwrite\Event\Certificate; use Appwrite\Event\Delete; use Appwrite\Event\Func; +use Appwrite\Event\Usage; use Appwrite\Platform\Appwrite; use Appwrite\Runtimes\Runtimes; use Utopia\Cache\Adapter\Sharding; @@ -205,6 +206,9 @@ CLI::setResource('queueForDeletes', function (Connection $queue) { CLI::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); }, ['queue']); +CLI::setResource('queueForUsage', function (Connection $queue) { + return new Usage($queue); +}, ['queue']); CLI::setResource('logError', function (Registry $register) { return function (Throwable $error, string $namespace, string $action) use ($register) { $logger = $register->get('logger'); diff --git a/bin/usage-count b/bin/usage-count new file mode 100644 index 0000000000..c5d696cbd4 --- /dev/null +++ b/bin/usage-count @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php usage-count $@ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 2fb19f7126..44d5fb6d01 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -722,6 +722,38 @@ services: - _APP_MAINTENANCE_DELAY - _APP_DATABASE_SHARED_TABLES + appwrite-task-usage-count: + container_name: appwrite-task-usage-count + entrypoint: usage-count + <<: *x-logging + image: appwrite-dev + networks: + - appwrite + volumes: + - ./app:/usr/src/code/app + - ./src:/usr/src/code/src + depends_on: + - redis + - mariadb + environment: + - _APP_ENV + - _APP_WORKER_PER_CORE + - _APP_OPENSSL_KEY_V1 + - _APP_DB_HOST + - _APP_DB_PORT + - _APP_DB_SCHEMA + - _APP_DB_USER + - _APP_DB_PASS + - _APP_REDIS_HOST + - _APP_REDIS_PORT + - _APP_REDIS_USER + - _APP_REDIS_PASS + - _APP_USAGE_STATS + - _APP_LOGGING_CONFIG + - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_DATABASE_SHARED_TABLES + - _APP_USAGE_COUNT_INTERVAL + appwrite-worker-usage: entrypoint: worker-usage <<: *x-logging diff --git a/src/Appwrite/Event/Usage.php b/src/Appwrite/Event/Usage.php index 5609859f37..e7423362cd 100644 --- a/src/Appwrite/Event/Usage.php +++ b/src/Appwrite/Event/Usage.php @@ -7,9 +7,14 @@ use Utopia\Queue\Connection; class Usage extends Event { + public const TYPE_USAGE_DUMP = 'usage-dump'; + public const TYPE_USAGE_COUNT = 'usage-count'; + protected array $metrics = []; protected array $reduce = []; + protected string $type = self::TYPE_USAGE_DUMP; + public function __construct(protected Connection $connection) { parent::__construct($connection); @@ -19,6 +24,12 @@ class Usage extends Event ->setClass(Event::USAGE_CLASS_NAME); } + public function setType(string $type): self + { + $this->type = $type; + return $this; + } + /** * Add reduce. * @@ -61,6 +72,7 @@ class Usage extends Event 'project' => $this->project, 'reduce' => $this->reduce, 'metrics' => $this->metrics, + 'type' => $this->type, ]; } diff --git a/src/Appwrite/Platform/Action.php b/src/Appwrite/Platform/Action.php new file mode 100644 index 0000000000..72c41582ea --- /dev/null +++ b/src/Appwrite/Platform/Action.php @@ -0,0 +1,90 @@ +disableValidation(); + $results = $database->find($collection, $newQueries); + $database->enableValidation(); + } catch (\Exception $e) { + if (!empty($this->logError)) { + call_user_func_array($this->logError, [$e, "CLI", "fetch_documents_namespace_{$database->getNamespace()}_collection{$collection}"]); + } + } + + if (empty($results)) { + return; + } + + $sum = count($results); + + if ($concurrent) { + $callables = []; + $errors = []; + + foreach ($results as $document) { + if (is_callable($callback)) { + $callables[] = Co\go(function () use ($document, $callback, &$errors) { + try { + $callback($document); + } catch (\Throwable $error) { + $errors[] = $error; + } + }); + } + } + + Co::join($callables); + + if (!empty($errors)) { + throw new \Error("Errors found in concurrent foreachDocument: " . \json_encode($errors)); + } + } else { + foreach ($results as $document) { + if (is_callable($callback)) { + $callback($document); + } + } + } + + $latestDocument = $results[array_key_last($results)]; + } + } +} diff --git a/src/Appwrite/Platform/Services/Tasks.php b/src/Appwrite/Platform/Services/Tasks.php index 7a0d5b60ac..b2f1000f3e 100644 --- a/src/Appwrite/Platform/Services/Tasks.php +++ b/src/Appwrite/Platform/Services/Tasks.php @@ -15,6 +15,7 @@ use Appwrite\Platform\Tasks\SDKs; use Appwrite\Platform\Tasks\Specs; use Appwrite\Platform\Tasks\SSL; use Appwrite\Platform\Tasks\Upgrade; +use Appwrite\Platform\Tasks\UsageCount; use Appwrite\Platform\Tasks\Vars; use Appwrite\Platform\Tasks\Version; use Utopia\Platform\Service; @@ -40,6 +41,7 @@ class Tasks extends Service ->addAction(Upgrade::getName(), new Upgrade()) ->addAction(Vars::getName(), new Vars()) ->addAction(Version::getName(), new Version()) + ->addAction(UsageCount::getName(), new UsageCount()) ; } } diff --git a/src/Appwrite/Platform/Tasks/UsageCount.php b/src/Appwrite/Platform/Tasks/UsageCount.php new file mode 100644 index 0000000000..ef25a4d3f5 --- /dev/null +++ b/src/Appwrite/Platform/Tasks/UsageCount.php @@ -0,0 +1,101 @@ +desc('Schedules projects for usage count') + ->inject('dbForPlatform') + ->inject('logError') + ->inject('queueForUsage') + ->callback(fn ($dbForPlatform, $logError, $queueForUsage) => $this->action($dbForPlatform, $logError, $queueForUsage)); + } + + public function action(Database $dbForPlatform, callable $logError, Usage $queueForUsage): void + { + $this->logError = $logError; + $this->dbForPlatform = $dbForPlatform; + $this->queue = $queueForUsage; + + Console::title("Usage count V1"); + + Console::success('Usage count: Started'); + + $interval = (int) System::getEnv('_APP_USAGE_COUNT_INTERVAL', '3600'); + Console::loop(function () use ($queueForUsage) { + $this->enqueueProjects($queueForUsage); + }, $interval); + + Console::log("Usage count: Exited"); + } + + /** + * Enqueue projects for counting + * @param Database $dbForPlatform + * @param Usage $queue + * @return void + */ + protected function enqueueProjects(Usage $queue): void + { + Authorization::disable(); + Authorization::setDefaultStatus(false); + + $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours')); + // Foreach Team + $this->foreachDocument($this->dbForPlatform, 'projects', [ + Query::greaterThanEqual('accessedAt', DateTime::format($last24Hours)) + ], function ($project) use ($queue) { + $queue + ->setProject($project) + ->setType(Usage::TYPE_USAGE_COUNT) + ->trigger(); + Console::success('project: ' . $project->getId() . '(' . $project->getInternalId() . ')' . ' queued'); + }); + } +} From 066273d0db84bd0121762b2e3a4323a6ff4b787f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 04:33:41 +0000 Subject: [PATCH 05/99] update usage worker for usage count --- app/init.php | 10 ++ src/Appwrite/Platform/Workers/Usage.php | 230 +++++++++++++++++++++++- 2 files changed, 238 insertions(+), 2 deletions(-) diff --git a/app/init.php b/app/init.php index 651d62979a..8a376823ce 100644 --- a/app/init.php +++ b/app/init.php @@ -301,6 +301,16 @@ const METRIC_FUNCTION_ID_EXECUTIONS_MB_SECONDS = '{functionInternalId}.execution const METRIC_NETWORK_REQUESTS = 'network.requests'; const METRIC_NETWORK_INBOUND = 'network.inbound'; const METRIC_NETWORK_OUTBOUND = 'network.outbound'; +const METRIC_USERS_ACTIVE = 'users.mau'; +const METRIC_WEBHOOKS = 'webhooks'; +const METRIC_PLATFORMS = 'platforms'; +const METRIC_PROVIDERS = 'providers'; +const METRIC_TOPICS = 'topics'; +const METRIC_KEYS = 'keys'; +const METRIC_RESOURCE_TYPE_ID_BUILDS = '{resourceType}.{resourceInternalId}.builds'; +const METRIC_RESOURCE_TYPE_ID_BUILDS_STORAGE = '{resourceType}.{resourceInternalId}.builds.storage'; +const METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS = '{resourceType}.{resourceInternalId}.deployments'; +const METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS_STORAGE = '{resourceType}.{resourceInternalId}.deployments.storage'; // Resource types diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 3f7428d0dd..24fcc1bb3b 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -2,17 +2,27 @@ namespace Appwrite\Platform\Workers; +use Appwrite\Event\Usage as UsageEvent; use Appwrite\Event\UsageDump; +use Appwrite\Platform\Action; use Exception; +use Throwable; use Utopia\CLI\Console; +use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; -use Utopia\Platform\Action; +use Utopia\Database\Query; use Utopia\Queue\Message; use Utopia\System\System; class Usage extends Action { + /** + * Log Error Callback + * + * @var callable + */ + protected mixed $logError; private array $stats = []; private int $lastTriggeredTime = 0; private int $aggregationInterval = 20; @@ -36,6 +46,9 @@ class Usage extends Action ->inject('project') ->inject('getProjectDB') ->inject('queueForUsageDump') + ->inject('getLogsDB') + ->inject('dbForPlatform') + ->inject('logError') ->callback([$this, 'action']); $this->aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); @@ -51,8 +64,10 @@ class Usage extends Action * @throws \Utopia\Database\Exception * @throws Exception */ - public function action(Message $message, Document $project, callable $getProjectDB, UsageDump $queueForUsageDump): void + public function action(Message $message, Document $project, callable $getProjectDB, UsageDump $queueForUsageDump, callable $getLogsDB, Database $dbForPlatform, callable $logError): void { + $this->logError = $logError; + $payload = $message->getPayload() ?? []; if (empty($payload)) { throw new Exception('Missing payload'); @@ -63,6 +78,12 @@ class Usage extends Action return; } + $type = $payload['type'] ?? UsageEvent::TYPE_USAGE_DUMP; + if ($type === UsageEvent::TYPE_USAGE_COUNT) { + $this->countForProject($dbForPlatform, $getLogsDB, $getProjectDB, $project); + return; + } + $projectId = $project->getInternalId(); foreach ($payload['reduce'] ?? [] as $document) { if (empty($document)) { @@ -285,4 +306,209 @@ class Usage extends Action console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); } } + + + protected function countForProject(Database $dbForPlatform, callable $getLogsDB, callable $getProjectDB, Document $project): void + { + Console::info('Begining count for: ' . $project->getId()); + + try { + /** @var \Utopia\Database\Database $dbForLogs */ + $dbForLogs = call_user_func($getLogsDB, $project); + /** @var \Utopia\Database\Database $dbForProject */ + $dbForProject = call_user_func($getProjectDB, $project); + + $region = $project->getAttribute('region'); + + $platforms = $dbForPlatform->count('platforms', [ + Query::equal('projectInternalId', [$project->getInternalId()]) + ]); + $webhooks = $dbForPlatform->count('webhooks', [ + Query::equal('projectInternalId', [$project->getInternalId()]) + ]); + $keys = $dbForPlatform->count('keys', [ + Query::equal('projectInternalId', [$project->getInternalId()]) + ]); + $databases = $dbForProject->count('databases'); + $buckets = $dbForProject->count('buckets'); + $users = $dbForProject->count('users'); + + $last30Days = (new \DateTime())->sub(\DateInterval::createFromDateString('30 days'))->format('Y-m-d 00:00:00'); + $usersActive = $dbForProject->count('users', [ + Query::greaterThanEqual('accessedAt', $last30Days) + ]); + $teams = $dbForProject->count('teams'); + $functions = $dbForProject->count('functions'); + $messages = $dbForProject->count('messages'); + $providers = $dbForProject->count('providers'); + $topics = $dbForProject->count('topics'); + + $metrics = [ + METRIC_DATABASES => $databases, + METRIC_BUCKETS => $buckets, + METRIC_USERS => $users, + METRIC_FUNCTIONS => $functions, + METRIC_TEAMS => $teams, + METRIC_MESSAGES => $messages, + METRIC_USERS_ACTIVE => $usersActive, + METRIC_WEBHOOKS => $webhooks, + METRIC_PLATFORMS => $platforms, + METRIC_PROVIDERS => $providers, + METRIC_TOPICS => $topics, + METRIC_KEYS => $keys, + ]; + + foreach ($metrics as $metric => $value) { + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $value); + } + + try { + $this->countForBuckets($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "usageCount", "count_for_buckets_{$project->getId()}"]); + } + + try { + $this->countForDatabase($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "usageCount", "count_for_database_{$project->getId()}"]); + } + + try { + $this->countForFunctions($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "usageCount", "count_for_functions_{$project->getId()}"]); + } + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "usageCount", "count_for_project_{$project->getId()}"]); + } + + Console::info('End of count for: ' . $project->getId()); + } + + protected function countForBuckets(Database $dbForProject, Database $dbForLogs, string $region) + { + $totalFiles = 0; + $totalStorage = 0; + $this->foreachDocument($dbForProject, 'buckets', [], function ($bucket) use ($dbForProject, $dbForLogs, $region, &$totalFiles, &$totalStorage) { + $files = $dbForProject->count('bucket_' . $bucket->getInternalId()); + + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $files); + + $storage = $dbForProject->sum('bucket_' . $bucket->getInternalId(), 'sizeActual'); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $storage); + + $totalStorage += $storage; + $totalFiles += $files; + }); + + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES, $totalFiles); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES_STORAGE, $totalStorage); + } + + protected function countForDatabase(Database $dbForProject, Database $dbForLogs, string $region) + { + $totalCollections = 0; + $totalDocuments = 0; + + $this->foreachDocument($dbForProject, 'databases', [], function ($database) use ($dbForProject, $dbForLogs, $region, &$totalCollections, &$totalDocuments) { + $collections = $dbForProject->count('database_' . $database->getInternalId()); + + $metric = str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $collections); + + $documents = $this->countForCollections($dbForProject, $dbForLogs, $database, $region); + + $totalDocuments += $documents; + $totalCollections += $collections; + }); + + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_COLLECTIONS, $totalCollections); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DOCUMENTS, $totalDocuments); + } + protected function countForCollections(Database $dbForProject, Database $dbForLogs, Document $database, string $region): int + { + $databaseDocuments = 0; + $this->foreachDocument($dbForProject, 'database_' . $database->getInternalId(), [], function ($collection) use ($dbForProject, $dbForLogs, $database, $region, &$totalCollections, &$databaseDocuments) { + $documents = $dbForProject->count('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId()); + + $metric = str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$database->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $documents); + + $databaseDocuments += $documents; + }); + + $metric = str_replace(['{databaseInternalId}'], [$database->getInternalId()], METRIC_DATABASE_ID_DOCUMENTS); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $databaseDocuments); + + return $databaseDocuments; + } + + protected function countForFunctions(Database $dbForProject, Database $dbForLogs, string $region) + { + $deploymentsStorage = $dbForProject->sum('deployments', 'size'); + $buildsStorage = $dbForProject->sum('builds', 'size'); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS_STORAGE, $deploymentsStorage); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS_STORAGE, $buildsStorage); + + $deployments = $dbForProject->count('deployments'); + $builds = $dbForProject->count('builds'); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS, $deployments); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS, $builds); + + + $this->foreachDocument($dbForProject, 'functions', [], function (Document $function) use ($dbForProject, $dbForLogs, $region) { + $functionDeploymentsStorage = $dbForProject->sum('deployments', 'size', [ + Query::equal('resourceInternalId', [$function->getInternalId()]), + Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), + ]); + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS_STORAGE), $functionDeploymentsStorage); + + $functionDeployments = $dbForProject->count('deployments', [ + Query::equal('resourceInternalId', [$function->getInternalId()]), + Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), + ]); + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS), $functionDeployments); + + /** + * As deployments and builds have 1-1 relationship, + * the count for one should match the other + */ + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS), $functionDeployments); + + $functionBuildsStorage = 0; + + $this->foreachDocument($dbForProject, 'deployments', [ + Query::equal('resourceInternalId', [$function->getInternalId()]), + Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), + ], function (Document $deployment) use ($dbForProject, &$functionBuildsStorage): void { + $build = $dbForProject->getDocument('builds', $deployment->getAttribute('buildId', '')); + $functionBuildsStorage += $build->getAttribute('size', 0); + }); + + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_STORAGE), $functionBuildsStorage); + }); + } + + protected function createOrUpdateMetric(Database $dbForLogs, string $region, string $metric, int $value) + { + $id = md5(self::INFINITY_PERIOD . $metric); + $current = $dbForLogs->getDocument('stats', $id); + + if ($current->isEmpty()) { + $dbForLogs->createDocument('stats', new Document([ + '$id' => $id, + 'metric' => $metric, + 'period' => 'inf', + 'region' => $region, + 'value' => $value, + ])); + Console::success('Usage logs created for metric: ' . $metric); + } else { + $dbForLogs->updateDocument('stats', $id, $current->setAttribute('value', $value)); + Console::success('Usage logs updated for metric: ' . $metric); + } + } } From 5d5547c6b9adff10654187a7dfd584505d3bcba1 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 06:11:58 +0000 Subject: [PATCH 06/99] periodic metric --- src/Appwrite/Platform/Workers/Usage.php | 42 +++++++++++++++---------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 24fcc1bb3b..a88023e175 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -17,6 +17,14 @@ use Utopia\System\System; class Usage extends Action { + /** + * Date format for different periods + */ + protected array $periods = [ + '1h' => 'Y-m-d H:00', + '1d' => 'Y-m-d 00:00', + 'inf' => '0000-00-00 00:00' + ]; /** * Log Error Callback * @@ -493,22 +501,24 @@ class Usage extends Action } protected function createOrUpdateMetric(Database $dbForLogs, string $region, string $metric, int $value) - { - $id = md5(self::INFINITY_PERIOD . $metric); - $current = $dbForLogs->getDocument('stats', $id); - - if ($current->isEmpty()) { - $dbForLogs->createDocument('stats', new Document([ - '$id' => $id, - 'metric' => $metric, - 'period' => 'inf', - 'region' => $region, - 'value' => $value, - ])); - Console::success('Usage logs created for metric: ' . $metric); - } else { - $dbForLogs->updateDocument('stats', $id, $current->setAttribute('value', $value)); - Console::success('Usage logs updated for metric: ' . $metric); + { + foreach ($this->periods as $period => $format) { + $time = 'inf' === $period ? null : \date($format, \time()); + $id = \md5("{$time}_{$period}_{$metric}"); + $current = $dbForLogs->getDocument('stats', $id); + if ($current->isEmpty()) { + $dbForLogs->createDocument('stats', new Document([ + '$id' => $id, + 'metric' => $metric, + 'period' => $period, + 'region' => $region, + 'value' => $value, + ])); + Console::success('Usage logs created for metric: ' . $metric . ' period:'. $period); + } else { + $dbForLogs->updateDocument('stats', $id, $current->setAttribute('value', $value)); + Console::success('Usage logs updated for metric: ' . $metric . ' period:'. $period); + } } } } From 55cbab62703c488db742ad339511aee06f48b20b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 06:15:59 +0000 Subject: [PATCH 07/99] fix format --- src/Appwrite/Platform/Workers/Usage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index a88023e175..f6219e5ff8 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -501,7 +501,7 @@ class Usage extends Action } protected function createOrUpdateMetric(Database $dbForLogs, string $region, string $metric, int $value) - { + { foreach ($this->periods as $period => $format) { $time = 'inf' === $period ? null : \date($format, \time()); $id = \md5("{$time}_{$period}_{$metric}"); From f593498c07100c9e68cada826ac2bf142ca11912 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 07:15:06 +0000 Subject: [PATCH 08/99] dual writing --- src/Appwrite/Platform/Workers/UsageDump.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/UsageDump.php index bb1d605442..4feaf650f8 100644 --- a/src/Appwrite/Platform/Workers/UsageDump.php +++ b/src/Appwrite/Platform/Workers/UsageDump.php @@ -38,6 +38,7 @@ class UsageDump extends Action $this ->inject('message') ->inject('getProjectDB') + ->inject('getLogsDB') ->callback([$this, 'action']); } @@ -48,7 +49,7 @@ class UsageDump extends Action * @throws Exception * @throws \Utopia\Database\Exception */ - public function action(Message $message, callable $getProjectDB): void + public function action(Message $message, callable $getProjectDB, callable $getLogsDB): void { $payload = $message->getPayload() ?? []; if (empty($payload)) { @@ -65,6 +66,7 @@ class UsageDump extends Action } $dbForProject = $getProjectDB($project); + $dbForLogs = $getLogsDB($dbForProject); $projectDocuments = []; $databaseCache = []; $collectionSizeCache = []; @@ -112,6 +114,11 @@ class UsageDump extends Action documents: $projectDocuments ); + $dbForLogs->createOrUpdateDocumentsWithIncrease( + collection: 'stats', + attribute: 'value', + documents: $projectDocuments + ); $end = \microtime(true); Console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys. ' Time: '.($end - $start).'s'); } From 336b0a7c02ef67a4e392f71e3353d22ac4d92a97 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 07:22:50 +0000 Subject: [PATCH 09/99] rename collection --- app/config/collections/logs.php | 6 +++--- src/Appwrite/Platform/Workers/Usage.php | 6 +++--- src/Appwrite/Platform/Workers/UsageDump.php | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/config/collections/logs.php b/app/config/collections/logs.php index d6fba35722..6beb6a8b32 100644 --- a/app/config/collections/logs.php +++ b/app/config/collections/logs.php @@ -5,10 +5,10 @@ use Utopia\Database\Helpers\ID; $logsCollection = []; -$logsCollection['stats'] = [ +$logsCollection['usage'] = [ '$collection' => ID::custom(Database::METADATA), - '$id' => ID::custom('stats'), - 'name' => 'Stats', + '$id' => ID::custom('usage'), + 'name' => 'usage', 'attributes' => [ [ '$id' => ID::custom('metric'), diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index f6219e5ff8..801d8117f7 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -505,9 +505,9 @@ class Usage extends Action foreach ($this->periods as $period => $format) { $time = 'inf' === $period ? null : \date($format, \time()); $id = \md5("{$time}_{$period}_{$metric}"); - $current = $dbForLogs->getDocument('stats', $id); + $current = $dbForLogs->getDocument('usage', $id); if ($current->isEmpty()) { - $dbForLogs->createDocument('stats', new Document([ + $dbForLogs->createDocument('usage', new Document([ '$id' => $id, 'metric' => $metric, 'period' => $period, @@ -516,7 +516,7 @@ class Usage extends Action ])); Console::success('Usage logs created for metric: ' . $metric . ' period:'. $period); } else { - $dbForLogs->updateDocument('stats', $id, $current->setAttribute('value', $value)); + $dbForLogs->updateDocument('usage', $id, $current->setAttribute('value', $value)); Console::success('Usage logs updated for metric: ' . $metric . ' period:'. $period); } } diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/UsageDump.php index 4feaf650f8..833d213a48 100644 --- a/src/Appwrite/Platform/Workers/UsageDump.php +++ b/src/Appwrite/Platform/Workers/UsageDump.php @@ -115,7 +115,7 @@ class UsageDump extends Action ); $dbForLogs->createOrUpdateDocumentsWithIncrease( - collection: 'stats', + collection: 'usage', attribute: 'value', documents: $projectDocuments ); From 3124554403b503871e4f5904d4c4ff476c107787 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 07:39:33 +0000 Subject: [PATCH 10/99] remove db listeners as counters are now done separately by usage worker --- app/controllers/shared/api.php | 115 +-------------------------------- 1 file changed, 1 insertion(+), 114 deletions(-) diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index e2845521f8..a3a41e33ed 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -90,98 +90,6 @@ $eventDatabaseListener = function (Document $project, Document $document, Respon } }; -$usageDatabaseListener = function (string $event, Document $document, Usage $queueForUsage) { - $value = 1; - if ($event === Database::EVENT_DOCUMENT_DELETE) { - $value = -1; - } - - switch (true) { - case $document->getCollection() === 'teams': - $queueForUsage - ->addMetric(METRIC_TEAMS, $value); // per project - break; - case $document->getCollection() === 'users': - $queueForUsage - ->addMetric(METRIC_USERS, $value); // per project - if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage - ->addReduce($document); - } - break; - case $document->getCollection() === 'sessions': // sessions - $queueForUsage - ->addMetric(METRIC_SESSIONS, $value); //per project - break; - case $document->getCollection() === 'databases': // databases - $queueForUsage - ->addMetric(METRIC_DATABASES, $value); // per project - - if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage - ->addReduce($document); - } - break; - case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections - $parts = explode('_', $document->getCollection()); - $databaseInternalId = $parts[1] ?? 0; - $queueForUsage - ->addMetric(METRIC_COLLECTIONS, $value) // per project - ->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_COLLECTIONS), $value) - ; - - if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage - ->addReduce($document); - } - break; - case str_starts_with($document->getCollection(), 'database_') && str_contains($document->getCollection(), '_collection_'): //documents - $parts = explode('_', $document->getCollection()); - $databaseInternalId = $parts[1] ?? 0; - $collectionInternalId = $parts[3] ?? 0; - $queueForUsage - ->addMetric(METRIC_DOCUMENTS, $value) // per project - ->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_DOCUMENTS), $value) // per database - ->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $collectionInternalId], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS), $value); // per collection - break; - case $document->getCollection() === 'buckets': //buckets - $queueForUsage - ->addMetric(METRIC_BUCKETS, $value); // per project - if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage - ->addReduce($document); - } - break; - case str_starts_with($document->getCollection(), 'bucket_'): // files - $parts = explode('_', $document->getCollection()); - $bucketInternalId = $parts[1]; - $queueForUsage - ->addMetric(METRIC_FILES, $value) // per project - ->addMetric(METRIC_FILES_STORAGE, $document->getAttribute('sizeOriginal') * $value) // per project - ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES), $value) // per bucket - ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES_STORAGE), $document->getAttribute('sizeOriginal') * $value); // per bucket - break; - case $document->getCollection() === 'functions': - $queueForUsage - ->addMetric(METRIC_FUNCTIONS, $value); // per project - - if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage - ->addReduce($document); - } - break; - case $document->getCollection() === 'deployments': - $queueForUsage - ->addMetric(METRIC_DEPLOYMENTS, $value) // per project - ->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project - ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value) // per function - ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE), $document->getAttribute('size') * $value); - break; - default: - break; - } -}; - App::init() ->groups(['api']) ->inject('utopia') @@ -436,11 +344,10 @@ App::init() ->inject('queueForDeletes') ->inject('queueForDatabase') ->inject('queueForBuilds') - ->inject('queueForUsage') ->inject('dbForProject') ->inject('timelimit') ->inject('mode') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Usage $queueForUsage, Database $dbForProject, callable $timelimit, string $mode) use ($usageDatabaseListener, $eventDatabaseListener) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Database $dbForProject, callable $timelimit, string $mode) { $route = $utopia->getRoute(); @@ -542,26 +449,6 @@ App::init() $queueForBuilds->setProject($project); $queueForMessaging->setProject($project); - // Clone the queues, to prevent events triggered by the database listener - // from overwriting the events that are supposed to be triggered in the shutdown hook. - $queueForEventsClone = new Event($queue); - $queueForFunctions = new Func($queue); - $queueForWebhooks = new Webhook($queue); - $queueForRealtime = new Realtime(); - - $dbForProject - ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForUsage)) - ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForUsage)) - ->on(Database::EVENT_DOCUMENT_CREATE, 'create-trigger-events', fn ($event, $document) => $eventDatabaseListener( - $project, - $document, - $response, - $queueForEventsClone->from($queueForEvents), - $queueForFunctions->from($queueForEvents), - $queueForWebhooks->from($queueForEvents), - $queueForRealtime->from($queueForEvents) - )); - $useCache = $route->getLabel('cache', false); if ($useCache) { $key = md5($request->getURI() . '*' . implode('*', $request->getParams()) . '*' . APP_CACHE_BUSTER); From 05f99dcdf007165e50ec03184f65a5a155965927 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 07:46:54 +0000 Subject: [PATCH 11/99] fix wrong arg --- src/Appwrite/Platform/Workers/UsageDump.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/UsageDump.php index 833d213a48..0c83a47bfc 100644 --- a/src/Appwrite/Platform/Workers/UsageDump.php +++ b/src/Appwrite/Platform/Workers/UsageDump.php @@ -66,7 +66,7 @@ class UsageDump extends Action } $dbForProject = $getProjectDB($project); - $dbForLogs = $getLogsDB($dbForProject); + $dbForLogs = $getLogsDB($project); $projectDocuments = []; $databaseCache = []; $collectionSizeCache = []; From 7b588219f914424ff05b9e7b430a64c1f38b08c0 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 27 Jan 2025 08:19:03 +0000 Subject: [PATCH 12/99] fix dual writing internal ID conflict --- src/Appwrite/Platform/Workers/UsageDump.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/UsageDump.php index 0c83a47bfc..6e7c59d200 100644 --- a/src/Appwrite/Platform/Workers/UsageDump.php +++ b/src/Appwrite/Platform/Workers/UsageDump.php @@ -108,6 +108,17 @@ class UsageDump extends Action } } + /** + * Create clone to dual write + * This is required as first request to db + * modifies the document's details like internal ID + * which will conflict in new DB + */ + $clonedProjectDoucments = []; + foreach ($projectDocuments as $document) { + $clonedProjectDoucments[] = new Document($document->getArrayCopy()); + } + $dbForProject->createOrUpdateDocumentsWithIncrease( collection: 'stats', attribute: 'value', @@ -117,7 +128,7 @@ class UsageDump extends Action $dbForLogs->createOrUpdateDocumentsWithIncrease( collection: 'usage', attribute: 'value', - documents: $projectDocuments + documents: $clonedProjectDoucments ); $end = \microtime(true); Console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys. ' Time: '.($end - $start).'s'); From d84f6e4ee0fc942119c819ce69ae295f077237ce Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 28 Jan 2025 06:40:20 +0000 Subject: [PATCH 13/99] reset database listeners --- app/controllers/shared/api.php | 115 ++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index a3a41e33ed..e2845521f8 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -90,6 +90,98 @@ $eventDatabaseListener = function (Document $project, Document $document, Respon } }; +$usageDatabaseListener = function (string $event, Document $document, Usage $queueForUsage) { + $value = 1; + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $value = -1; + } + + switch (true) { + case $document->getCollection() === 'teams': + $queueForUsage + ->addMetric(METRIC_TEAMS, $value); // per project + break; + case $document->getCollection() === 'users': + $queueForUsage + ->addMetric(METRIC_USERS, $value); // per project + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $queueForUsage + ->addReduce($document); + } + break; + case $document->getCollection() === 'sessions': // sessions + $queueForUsage + ->addMetric(METRIC_SESSIONS, $value); //per project + break; + case $document->getCollection() === 'databases': // databases + $queueForUsage + ->addMetric(METRIC_DATABASES, $value); // per project + + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $queueForUsage + ->addReduce($document); + } + break; + case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections + $parts = explode('_', $document->getCollection()); + $databaseInternalId = $parts[1] ?? 0; + $queueForUsage + ->addMetric(METRIC_COLLECTIONS, $value) // per project + ->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_COLLECTIONS), $value) + ; + + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $queueForUsage + ->addReduce($document); + } + break; + case str_starts_with($document->getCollection(), 'database_') && str_contains($document->getCollection(), '_collection_'): //documents + $parts = explode('_', $document->getCollection()); + $databaseInternalId = $parts[1] ?? 0; + $collectionInternalId = $parts[3] ?? 0; + $queueForUsage + ->addMetric(METRIC_DOCUMENTS, $value) // per project + ->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_DOCUMENTS), $value) // per database + ->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $collectionInternalId], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS), $value); // per collection + break; + case $document->getCollection() === 'buckets': //buckets + $queueForUsage + ->addMetric(METRIC_BUCKETS, $value); // per project + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $queueForUsage + ->addReduce($document); + } + break; + case str_starts_with($document->getCollection(), 'bucket_'): // files + $parts = explode('_', $document->getCollection()); + $bucketInternalId = $parts[1]; + $queueForUsage + ->addMetric(METRIC_FILES, $value) // per project + ->addMetric(METRIC_FILES_STORAGE, $document->getAttribute('sizeOriginal') * $value) // per project + ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES), $value) // per bucket + ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES_STORAGE), $document->getAttribute('sizeOriginal') * $value); // per bucket + break; + case $document->getCollection() === 'functions': + $queueForUsage + ->addMetric(METRIC_FUNCTIONS, $value); // per project + + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $queueForUsage + ->addReduce($document); + } + break; + case $document->getCollection() === 'deployments': + $queueForUsage + ->addMetric(METRIC_DEPLOYMENTS, $value) // per project + ->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project + ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value) // per function + ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE), $document->getAttribute('size') * $value); + break; + default: + break; + } +}; + App::init() ->groups(['api']) ->inject('utopia') @@ -344,10 +436,11 @@ App::init() ->inject('queueForDeletes') ->inject('queueForDatabase') ->inject('queueForBuilds') + ->inject('queueForUsage') ->inject('dbForProject') ->inject('timelimit') ->inject('mode') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Database $dbForProject, callable $timelimit, string $mode) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Usage $queueForUsage, Database $dbForProject, callable $timelimit, string $mode) use ($usageDatabaseListener, $eventDatabaseListener) { $route = $utopia->getRoute(); @@ -449,6 +542,26 @@ App::init() $queueForBuilds->setProject($project); $queueForMessaging->setProject($project); + // Clone the queues, to prevent events triggered by the database listener + // from overwriting the events that are supposed to be triggered in the shutdown hook. + $queueForEventsClone = new Event($queue); + $queueForFunctions = new Func($queue); + $queueForWebhooks = new Webhook($queue); + $queueForRealtime = new Realtime(); + + $dbForProject + ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForUsage)) + ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForUsage)) + ->on(Database::EVENT_DOCUMENT_CREATE, 'create-trigger-events', fn ($event, $document) => $eventDatabaseListener( + $project, + $document, + $response, + $queueForEventsClone->from($queueForEvents), + $queueForFunctions->from($queueForEvents), + $queueForWebhooks->from($queueForEvents), + $queueForRealtime->from($queueForEvents) + )); + $useCache = $route->getLabel('cache', false); if ($useCache) { $key = md5($request->getURI() . '*' . implode('*', $request->getParams()) . '*' . APP_CACHE_BUSTER); From fb5aeb14764e82df41fe2306516cf089195d64de Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 28 Jan 2025 07:19:27 +0000 Subject: [PATCH 14/99] skip some metrics override --- src/Appwrite/Platform/Workers/UsageDump.php | 53 +++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/UsageDump.php index 6e7c59d200..0e7103b8c2 100644 --- a/src/Appwrite/Platform/Workers/UsageDump.php +++ b/src/Appwrite/Platform/Workers/UsageDump.php @@ -19,6 +19,51 @@ const METRIC_PROJECT_LEVEL_STORAGE = 2; class UsageDump extends Action { protected array $stats = []; + + /** + * Metrics to skip writing to logsDB + * As these metrics are calculated separately + * by logs DB + * @var array + */ + protected array $skipBaseMetrics = [ + METRIC_DATABASES => true, + METRIC_BUCKETS => true, + METRIC_USERS => true, + METRIC_FUNCTIONS => true, + METRIC_TEAMS => true, + METRIC_MESSAGES => true, + METRIC_USERS_ACTIVE => true, + METRIC_WEBHOOKS => true, + METRIC_PLATFORMS => true, + METRIC_PROVIDERS => true, + METRIC_TOPICS => true, + METRIC_KEYS => true, + METRIC_FILES => true, + METRIC_FILES_STORAGE => true, + METRIC_DEPLOYMENTS_STORAGE => true, + METRIC_BUILDS_STORAGE => true, + METRIC_DEPLOYMENTS => true, + METRIC_BUILDS => true, + METRIC_COLLECTIONS => true, + METRIC_DOCUMENTS => true, + ]; + + /** + * Skip metrics associated with parent IDs + * these need to be checked individually with `str_ends_with` + */ + protected array $skipParentIdMetrics = [ + '.files', + '.files.storage', + '.collections', + '.documents', + '.deployments', + '.deployments.storage', + '.builds', + '.builds.storage', + ]; + protected array $periods = [ '1h' => 'Y-m-d H:00', '1d' => 'Y-m-d 00:00', @@ -116,6 +161,14 @@ class UsageDump extends Action */ $clonedProjectDoucments = []; foreach ($projectDocuments as $document) { + if (array_key_exists($document->getAttribute('metric'), $this->skipBaseMetrics)) { + continue; + } + foreach ($this->skipParentIdMetrics as $skipMetric) { + if (str_ends_with($document->getAttribute('metric'), $skipMetric)) { + continue; + } + } $clonedProjectDoucments[] = new Document($document->getArrayCopy()); } From 21097041f0513c3332e66a110b78a55dc28f337d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 03:50:27 +0000 Subject: [PATCH 15/99] refactor: rename usage count to stats resources --- Dockerfile | 2 +- bin/stats-resources | 3 +++ bin/usage-count | 3 --- docker-compose.yml | 6 +++--- src/Appwrite/Event/Usage.php | 2 +- src/Appwrite/Platform/Services/Tasks.php | 4 ++-- .../Platform/Tasks/{UsageCount.php => StatsResources.php} | 4 ++-- src/Appwrite/Platform/Workers/Usage.php | 8 ++++---- 8 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 bin/stats-resources delete mode 100644 bin/usage-count rename src/Appwrite/Platform/Tasks/{UsageCount.php => StatsResources.php} (97%) diff --git a/Dockerfile b/Dockerfile index 30554289ef..c38e0493fe 100755 --- a/Dockerfile +++ b/Dockerfile @@ -87,7 +87,7 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/worker-webhooks && \ chmod +x /usr/local/bin/worker-usage && \ chmod +x /usr/local/bin/worker-usage-dump && \ - chmod +x /usr/local/bin/usage-count + chmod +x /usr/local/bin/stats-resources # Letsencrypt Permissions RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ diff --git a/bin/stats-resources b/bin/stats-resources new file mode 100644 index 0000000000..3104bab896 --- /dev/null +++ b/bin/stats-resources @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php stats-resources $@ \ No newline at end of file diff --git a/bin/usage-count b/bin/usage-count deleted file mode 100644 index c5d696cbd4..0000000000 --- a/bin/usage-count +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -php /usr/src/code/app/cli.php usage-count $@ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 44d5fb6d01..d294896adc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -722,9 +722,9 @@ services: - _APP_MAINTENANCE_DELAY - _APP_DATABASE_SHARED_TABLES - appwrite-task-usage-count: - container_name: appwrite-task-usage-count - entrypoint: usage-count + appwrite-task-stats-resources: + container_name: appwrite-task-stats-resources + entrypoint: stats-resources <<: *x-logging image: appwrite-dev networks: diff --git a/src/Appwrite/Event/Usage.php b/src/Appwrite/Event/Usage.php index e7423362cd..7d630bf122 100644 --- a/src/Appwrite/Event/Usage.php +++ b/src/Appwrite/Event/Usage.php @@ -8,7 +8,7 @@ use Utopia\Queue\Connection; class Usage extends Event { public const TYPE_USAGE_DUMP = 'usage-dump'; - public const TYPE_USAGE_COUNT = 'usage-count'; + public const TYPE_USAGE_COUNT = 'stats-resources'; protected array $metrics = []; protected array $reduce = []; diff --git a/src/Appwrite/Platform/Services/Tasks.php b/src/Appwrite/Platform/Services/Tasks.php index b2f1000f3e..2622bd18a2 100644 --- a/src/Appwrite/Platform/Services/Tasks.php +++ b/src/Appwrite/Platform/Services/Tasks.php @@ -15,7 +15,7 @@ use Appwrite\Platform\Tasks\SDKs; use Appwrite\Platform\Tasks\Specs; use Appwrite\Platform\Tasks\SSL; use Appwrite\Platform\Tasks\Upgrade; -use Appwrite\Platform\Tasks\UsageCount; +use Appwrite\Platform\Tasks\StatsResources; use Appwrite\Platform\Tasks\Vars; use Appwrite\Platform\Tasks\Version; use Utopia\Platform\Service; @@ -41,7 +41,7 @@ class Tasks extends Service ->addAction(Upgrade::getName(), new Upgrade()) ->addAction(Vars::getName(), new Vars()) ->addAction(Version::getName(), new Version()) - ->addAction(UsageCount::getName(), new UsageCount()) + ->addAction(StatsResources::getName(), new StatsResources()) ; } } diff --git a/src/Appwrite/Platform/Tasks/UsageCount.php b/src/Appwrite/Platform/Tasks/StatsResources.php similarity index 97% rename from src/Appwrite/Platform/Tasks/UsageCount.php rename to src/Appwrite/Platform/Tasks/StatsResources.php index ef25a4d3f5..5f077bbe9f 100644 --- a/src/Appwrite/Platform/Tasks/UsageCount.php +++ b/src/Appwrite/Platform/Tasks/StatsResources.php @@ -19,7 +19,7 @@ const INFINITY_PERIOD = '_inf_'; * Runs every hour, schedules project * for aggregating resource count */ -class UsageCount extends Action +class StatsResources extends Action { /** * Log Error Callback @@ -44,7 +44,7 @@ class UsageCount extends Action public static function getName() { - return 'usage-count'; + return 'stats-resources'; } public function __construct() diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 801d8117f7..039dad939b 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -373,22 +373,22 @@ class Usage extends Action try { $this->countForBuckets($dbForProject, $dbForLogs, $region); } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "usageCount", "count_for_buckets_{$project->getId()}"]); + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_buckets_{$project->getId()}"]); } try { $this->countForDatabase($dbForProject, $dbForLogs, $region); } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "usageCount", "count_for_database_{$project->getId()}"]); + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_database_{$project->getId()}"]); } try { $this->countForFunctions($dbForProject, $dbForLogs, $region); } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "usageCount", "count_for_functions_{$project->getId()}"]); + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_functions_{$project->getId()}"]); } } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "usageCount", "count_for_project_{$project->getId()}"]); + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_project_{$project->getId()}"]); } Console::info('End of count for: ' . $project->getId()); From 31ddb6e48f1d383bcc995a5db0ab117aa892ac48 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 03:51:17 +0000 Subject: [PATCH 16/99] rename collection --- app/config/collections/logs.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/config/collections/logs.php b/app/config/collections/logs.php index 6beb6a8b32..069dcf5a4b 100644 --- a/app/config/collections/logs.php +++ b/app/config/collections/logs.php @@ -5,10 +5,10 @@ use Utopia\Database\Helpers\ID; $logsCollection = []; -$logsCollection['usage'] = [ +$logsCollection['stats'] = [ '$collection' => ID::custom(Database::METADATA), - '$id' => ID::custom('usage'), - 'name' => 'usage', + '$id' => ID::custom('stats'), + 'name' => 'stats', 'attributes' => [ [ '$id' => ID::custom('metric'), From 22ab23d009cfb0af9edc397baaf396734a0b37d2 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:05:51 +0000 Subject: [PATCH 17/99] feat: Stats resources worker --- Dockerfile | 3 +- bin/worker-stats-resources | 3 + docker-compose.yml | 31 ++ src/Appwrite/Platform/Services/Tasks.php | 2 +- src/Appwrite/Platform/Services/Workers.php | 3 +- .../Platform/Workers/StatsResources.php | 278 ++++++++++++++++++ 6 files changed, 317 insertions(+), 3 deletions(-) create mode 100644 bin/worker-stats-resources create mode 100644 src/Appwrite/Platform/Workers/StatsResources.php diff --git a/Dockerfile b/Dockerfile index c38e0493fe..1d50684535 100755 --- a/Dockerfile +++ b/Dockerfile @@ -87,7 +87,8 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/worker-webhooks && \ chmod +x /usr/local/bin/worker-usage && \ chmod +x /usr/local/bin/worker-usage-dump && \ - chmod +x /usr/local/bin/stats-resources + chmod +x /usr/local/bin/stats-resources && \ + chmod +x /usr/local/bin/worker-stats-resources # Letsencrypt Permissions RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ diff --git a/bin/worker-stats-resources b/bin/worker-stats-resources new file mode 100644 index 0000000000..9c5d2bebff --- /dev/null +++ b/bin/worker-stats-resources @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/worker.php stats-resources $@ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index d294896adc..d6345abddb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -754,6 +754,37 @@ services: - _APP_DATABASE_SHARED_TABLES - _APP_USAGE_COUNT_INTERVAL + appwrite-worker-stats-resources: + entrypoint: worker-stats-resources + <<: *x-logging + container_name: appwrite-worker-stats-resources + image: appwrite-dev + networks: + - appwrite + volumes: + - ./app:/usr/src/code/app + - ./src:/usr/src/code/src + depends_on: + - redis + - mariadb + environment: + - _APP_ENV + - _APP_WORKER_PER_CORE + - _APP_OPENSSL_KEY_V1 + - _APP_DB_HOST + - _APP_DB_PORT + - _APP_DB_SCHEMA + - _APP_DB_USER + - _APP_DB_PASS + - _APP_REDIS_HOST + - _APP_REDIS_PORT + - _APP_REDIS_USER + - _APP_REDIS_PASS + - _APP_USAGE_STATS + - _APP_LOGGING_CONFIG + - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_DATABASE_SHARED_TABLES + appwrite-worker-usage: entrypoint: worker-usage <<: *x-logging diff --git a/src/Appwrite/Platform/Services/Tasks.php b/src/Appwrite/Platform/Services/Tasks.php index 2622bd18a2..eb6d775da9 100644 --- a/src/Appwrite/Platform/Services/Tasks.php +++ b/src/Appwrite/Platform/Services/Tasks.php @@ -14,8 +14,8 @@ use Appwrite\Platform\Tasks\ScheduleMessages; use Appwrite\Platform\Tasks\SDKs; use Appwrite\Platform\Tasks\Specs; use Appwrite\Platform\Tasks\SSL; -use Appwrite\Platform\Tasks\Upgrade; use Appwrite\Platform\Tasks\StatsResources; +use Appwrite\Platform\Tasks\Upgrade; use Appwrite\Platform\Tasks\Vars; use Appwrite\Platform\Tasks\Version; use Utopia\Platform\Service; diff --git a/src/Appwrite/Platform/Services/Workers.php b/src/Appwrite/Platform/Services/Workers.php index 0e79f4257c..150c8cfd23 100644 --- a/src/Appwrite/Platform/Services/Workers.php +++ b/src/Appwrite/Platform/Services/Workers.php @@ -11,6 +11,7 @@ use Appwrite\Platform\Workers\Functions; use Appwrite\Platform\Workers\Mails; use Appwrite\Platform\Workers\Messaging; use Appwrite\Platform\Workers\Migrations; +use Appwrite\Platform\Workers\StatsResources; use Appwrite\Platform\Workers\Usage; use Appwrite\Platform\Workers\UsageDump; use Appwrite\Platform\Workers\Webhooks; @@ -34,7 +35,7 @@ class Workers extends Service ->addAction(UsageDump::getName(), new UsageDump()) ->addAction(Usage::getName(), new Usage()) ->addAction(Migrations::getName(), new Migrations()) - + ->addAction(StatsResources::getName(), new StatsResources()) ; } } diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php new file mode 100644 index 0000000000..e4ba59c464 --- /dev/null +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -0,0 +1,278 @@ + 'Y-m-d H:00', + '1d' => 'Y-m-d 00:00', + 'inf' => '0000-00-00 00:00' + ]; + + public static function getName(): string + { + return 'stats-resources'; + } + + /** + * @throws Exception + */ + public function __construct() + { + $this + ->desc('Stats resources worker') + ->inject('message') + ->inject('project') + ->inject('getProjectDB') + ->inject('getLogsDB') + ->inject('dbForPlatform') + ->inject('logError') + ->callback([$this, 'action']); + } + + /** + * @param Message $message + * @param Document $project + * @param callable $getProjectDB + * @param UsageDump $queueForUsageDump + * @return void + * @throws \Utopia\Database\Exception + * @throws Exception + */ + public function action(Message $message, Document $project, callable $getProjectDB, callable $getLogsDB, Database $dbForPlatform, callable $logError): void + { + $this->logError = $logError; + + $payload = $message->getPayload() ?? []; + if (empty($payload)) { + throw new Exception('Missing payload'); + } + + if (empty($project->getAttribute('database'))) { + var_dump($payload); + return; + } + + $this->countForProject($dbForPlatform, $getLogsDB, $getProjectDB, $project); + } + + + protected function countForProject(Database $dbForPlatform, callable $getLogsDB, callable $getProjectDB, Document $project): void + { + Console::info('Begining count for: ' . $project->getId()); + + try { + /** @var \Utopia\Database\Database $dbForLogs */ + $dbForLogs = call_user_func($getLogsDB, $project); + /** @var \Utopia\Database\Database $dbForProject */ + $dbForProject = call_user_func($getProjectDB, $project); + + $region = $project->getAttribute('region'); + + $platforms = $dbForPlatform->count('platforms', [ + Query::equal('projectInternalId', [$project->getInternalId()]) + ]); + $webhooks = $dbForPlatform->count('webhooks', [ + Query::equal('projectInternalId', [$project->getInternalId()]) + ]); + $keys = $dbForPlatform->count('keys', [ + Query::equal('projectInternalId', [$project->getInternalId()]) + ]); + $databases = $dbForProject->count('databases'); + $buckets = $dbForProject->count('buckets'); + $users = $dbForProject->count('users'); + + $last30Days = (new \DateTime())->sub(\DateInterval::createFromDateString('30 days'))->format('Y-m-d 00:00:00'); + $usersActive = $dbForProject->count('users', [ + Query::greaterThanEqual('accessedAt', $last30Days) + ]); + $teams = $dbForProject->count('teams'); + $functions = $dbForProject->count('functions'); + $messages = $dbForProject->count('messages'); + $providers = $dbForProject->count('providers'); + $topics = $dbForProject->count('topics'); + + $metrics = [ + METRIC_DATABASES => $databases, + METRIC_BUCKETS => $buckets, + METRIC_USERS => $users, + METRIC_FUNCTIONS => $functions, + METRIC_TEAMS => $teams, + METRIC_MESSAGES => $messages, + METRIC_USERS_ACTIVE => $usersActive, + METRIC_WEBHOOKS => $webhooks, + METRIC_PLATFORMS => $platforms, + METRIC_PROVIDERS => $providers, + METRIC_TOPICS => $topics, + METRIC_KEYS => $keys, + ]; + + foreach ($metrics as $metric => $value) { + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $value); + } + + try { + $this->countForBuckets($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_buckets_{$project->getId()}"]); + } + + try { + $this->countForDatabase($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_database_{$project->getId()}"]); + } + + try { + $this->countForFunctions($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_functions_{$project->getId()}"]); + } + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_project_{$project->getId()}"]); + } + + Console::info('End of count for: ' . $project->getId()); + } + + protected function countForBuckets(Database $dbForProject, Database $dbForLogs, string $region) + { + $totalFiles = 0; + $totalStorage = 0; + $this->foreachDocument($dbForProject, 'buckets', [], function ($bucket) use ($dbForProject, $dbForLogs, $region, &$totalFiles, &$totalStorage) { + $files = $dbForProject->count('bucket_' . $bucket->getInternalId()); + + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $files); + + $storage = $dbForProject->sum('bucket_' . $bucket->getInternalId(), 'sizeActual'); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $storage); + + $totalStorage += $storage; + $totalFiles += $files; + }); + + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES, $totalFiles); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES_STORAGE, $totalStorage); + } + + protected function countForDatabase(Database $dbForProject, Database $dbForLogs, string $region) + { + $totalCollections = 0; + $totalDocuments = 0; + + $this->foreachDocument($dbForProject, 'databases', [], function ($database) use ($dbForProject, $dbForLogs, $region, &$totalCollections, &$totalDocuments) { + $collections = $dbForProject->count('database_' . $database->getInternalId()); + + $metric = str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $collections); + + $documents = $this->countForCollections($dbForProject, $dbForLogs, $database, $region); + + $totalDocuments += $documents; + $totalCollections += $collections; + }); + + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_COLLECTIONS, $totalCollections); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DOCUMENTS, $totalDocuments); + } + protected function countForCollections(Database $dbForProject, Database $dbForLogs, Document $database, string $region): int + { + $databaseDocuments = 0; + $this->foreachDocument($dbForProject, 'database_' . $database->getInternalId(), [], function ($collection) use ($dbForProject, $dbForLogs, $database, $region, &$totalCollections, &$databaseDocuments) { + $documents = $dbForProject->count('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId()); + + $metric = str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$database->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $documents); + + $databaseDocuments += $documents; + }); + + $metric = str_replace(['{databaseInternalId}'], [$database->getInternalId()], METRIC_DATABASE_ID_DOCUMENTS); + $this->createOrUpdateMetric($dbForLogs, $region, $metric, $databaseDocuments); + + return $databaseDocuments; + } + + protected function countForFunctions(Database $dbForProject, Database $dbForLogs, string $region) + { + $deploymentsStorage = $dbForProject->sum('deployments', 'size'); + $buildsStorage = $dbForProject->sum('builds', 'size'); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS_STORAGE, $deploymentsStorage); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS_STORAGE, $buildsStorage); + + $deployments = $dbForProject->count('deployments'); + $builds = $dbForProject->count('builds'); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS, $deployments); + $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS, $builds); + + + $this->foreachDocument($dbForProject, 'functions', [], function (Document $function) use ($dbForProject, $dbForLogs, $region) { + $functionDeploymentsStorage = $dbForProject->sum('deployments', 'size', [ + Query::equal('resourceInternalId', [$function->getInternalId()]), + Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), + ]); + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS_STORAGE), $functionDeploymentsStorage); + + $functionDeployments = $dbForProject->count('deployments', [ + Query::equal('resourceInternalId', [$function->getInternalId()]), + Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), + ]); + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS), $functionDeployments); + + /** + * As deployments and builds have 1-1 relationship, + * the count for one should match the other + */ + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS), $functionDeployments); + + $functionBuildsStorage = 0; + + $this->foreachDocument($dbForProject, 'deployments', [ + Query::equal('resourceInternalId', [$function->getInternalId()]), + Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), + ], function (Document $deployment) use ($dbForProject, &$functionBuildsStorage): void { + $build = $dbForProject->getDocument('builds', $deployment->getAttribute('buildId', '')); + $functionBuildsStorage += $build->getAttribute('size', 0); + }); + + $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_STORAGE), $functionBuildsStorage); + }); + } + + protected function createOrUpdateMetric(Database $dbForLogs, string $region, string $metric, int $value) + { + foreach ($this->periods as $period => $format) { + $time = 'inf' === $period ? null : \date($format, \time()); + $id = \md5("{$time}_{$period}_{$metric}"); + $current = $dbForLogs->getDocument('usage', $id); + if ($current->isEmpty()) { + $dbForLogs->createDocument('usage', new Document([ + '$id' => $id, + 'metric' => $metric, + 'period' => $period, + 'region' => $region, + 'value' => $value, + ])); + Console::success('Usage logs created for metric: ' . $metric . ' period:'. $period); + } else { + $dbForLogs->updateDocument('usage', $id, $current->setAttribute('value', $value)); + Console::success('Usage logs updated for metric: ' . $metric . ' period:'. $period); + } + } + } +} From e78020d45a27e5ac1ed42625d249c3ebd0e421ef Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:06:57 +0000 Subject: [PATCH 18/99] stats resources evenet --- src/Appwrite/Event/Event.php | 3 ++ src/Appwrite/Event/StatsResources.php | 40 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/Appwrite/Event/StatsResources.php diff --git a/src/Appwrite/Event/Event.php b/src/Appwrite/Event/Event.php index 5cd5f8e7d6..9c9244c056 100644 --- a/src/Appwrite/Event/Event.php +++ b/src/Appwrite/Event/Event.php @@ -27,6 +27,9 @@ class Event public const USAGE_QUEUE_NAME = 'v1-usage'; public const USAGE_CLASS_NAME = 'UsageV1'; + public const STATS_RESOURCES_QUEUE_NAME = 'v1-stats-resources'; + public const STATS_RESOURCES_CLASS_NAME = 'StatsResources'; + public const USAGE_DUMP_QUEUE_NAME = 'v1-usage-dump'; public const USAGE_DUMP_CLASS_NAME = 'UsageDumpV1'; diff --git a/src/Appwrite/Event/StatsResources.php b/src/Appwrite/Event/StatsResources.php new file mode 100644 index 0000000000..d08e1b2c8e --- /dev/null +++ b/src/Appwrite/Event/StatsResources.php @@ -0,0 +1,40 @@ +setQueue(Event::STATS_RESOURCES_QUEUE_NAME) + ->setClass(Event::STATS_RESOURCES_CLASS_NAME); + } + + /** + * Prepare the payload for the usage event. + * + * @return array + */ + protected function preparePayload(): array + { + return [ + 'project' => $this->project + ]; + } + + /** + * Sends metrics to the usage worker. + * + * @return string|bool + */ + public function trigger(): string|bool + { + parent::trigger(); + return true; + } +} From a05d77437058a540ef5a8e8fdf2607bfbb41073e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:07:44 +0000 Subject: [PATCH 19/99] queue resources to cli --- app/cli.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/cli.php b/app/cli.php index 91fef8dc55..a895275f76 100644 --- a/app/cli.php +++ b/app/cli.php @@ -5,6 +5,7 @@ require_once __DIR__ . '/init.php'; use Appwrite\Event\Certificate; use Appwrite\Event\Delete; use Appwrite\Event\Func; +use Appwrite\Event\StatsResources; use Appwrite\Event\Usage; use Appwrite\Platform\Appwrite; use Appwrite\Runtimes\Runtimes; @@ -209,6 +210,9 @@ CLI::setResource('queueForCertificates', function (Connection $queue) { CLI::setResource('queueForUsage', function (Connection $queue) { return new Usage($queue); }, ['queue']); +CLI::setResource('queueForStatsResources', function (Connection $queue) { + return new StatsResources($queue); +}, ['queue']); CLI::setResource('logError', function (Registry $register) { return function (Throwable $error, string $namespace, string $action) use ($register) { $logger = $register->get('logger'); From c2ce2730654df51cce142fda371bac0e8d261301 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:10:35 +0000 Subject: [PATCH 20/99] update stats resources task to use new queue --- .../Platform/Tasks/StatsResources.php | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/Appwrite/Platform/Tasks/StatsResources.php b/src/Appwrite/Platform/Tasks/StatsResources.php index 5f077bbe9f..3445a009ec 100644 --- a/src/Appwrite/Platform/Tasks/StatsResources.php +++ b/src/Appwrite/Platform/Tasks/StatsResources.php @@ -2,7 +2,7 @@ namespace Appwrite\Platform\Tasks; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsResources as EventStatsResources; use Appwrite\Platform\Action; use Utopia\CLI\Console; use Utopia\Database\Database; @@ -11,8 +11,6 @@ use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; use Utopia\System\System; -const INFINITY_PERIOD = '_inf_'; - /** * Usage count * @@ -35,13 +33,6 @@ class StatsResources extends Action */ protected Database $dbForPlatform; - /** - * Queue for usage - * - * @var Usage - */ - protected Usage $queue; - public static function getName() { return 'stats-resources'; @@ -53,23 +44,22 @@ class StatsResources extends Action ->desc('Schedules projects for usage count') ->inject('dbForPlatform') ->inject('logError') - ->inject('queueForUsage') - ->callback(fn ($dbForPlatform, $logError, $queueForUsage) => $this->action($dbForPlatform, $logError, $queueForUsage)); + ->inject('queueForStatsResources') + ->callback([$this, 'action']); } - public function action(Database $dbForPlatform, callable $logError, Usage $queueForUsage): void + public function action(Database $dbForPlatform, callable $logError, EventStatsResources $queueForStatsResources): void { $this->logError = $logError; $this->dbForPlatform = $dbForPlatform; - $this->queue = $queueForUsage; Console::title("Usage count V1"); Console::success('Usage count: Started'); $interval = (int) System::getEnv('_APP_USAGE_COUNT_INTERVAL', '3600'); - Console::loop(function () use ($queueForUsage) { - $this->enqueueProjects($queueForUsage); + Console::loop(function () use ($queueForStatsResources) { + $this->enqueueProjects($queueForStatsResources); }, $interval); Console::log("Usage count: Exited"); @@ -78,22 +68,23 @@ class StatsResources extends Action /** * Enqueue projects for counting * @param Database $dbForPlatform - * @param Usage $queue + * @param EventStatsResources $queue * @return void */ - protected function enqueueProjects(Usage $queue): void + protected function enqueueProjects(EventStatsResources $queue): void { Authorization::disable(); Authorization::setDefaultStatus(false); $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours')); - // Foreach Team + /** + * For each project that were accessed in last 24 hours + */ $this->foreachDocument($this->dbForPlatform, 'projects', [ Query::greaterThanEqual('accessedAt', DateTime::format($last24Hours)) ], function ($project) use ($queue) { $queue ->setProject($project) - ->setType(Usage::TYPE_USAGE_COUNT) ->trigger(); Console::success('project: ' . $project->getId() . '(' . $project->getInternalId() . ')' . ' queued'); }); From 3fde465dfa541b1f6ce4b5d27b43a4b3ac6aad4b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:15:03 +0000 Subject: [PATCH 21/99] Update stats resources task container --- docker-compose.yml | 2 +- src/Appwrite/Platform/Tasks/StatsResources.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d6345abddb..4ea4336485 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -752,7 +752,7 @@ services: - _APP_LOGGING_CONFIG - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - - _APP_USAGE_COUNT_INTERVAL + - _APP_STATS_RESOURCES_INTERVAL appwrite-worker-stats-resources: entrypoint: worker-stats-resources diff --git a/src/Appwrite/Platform/Tasks/StatsResources.php b/src/Appwrite/Platform/Tasks/StatsResources.php index 3445a009ec..b2963ca87b 100644 --- a/src/Appwrite/Platform/Tasks/StatsResources.php +++ b/src/Appwrite/Platform/Tasks/StatsResources.php @@ -53,16 +53,16 @@ class StatsResources extends Action $this->logError = $logError; $this->dbForPlatform = $dbForPlatform; - Console::title("Usage count V1"); + Console::title("Stats resources V1"); - Console::success('Usage count: Started'); + Console::success('Stats resources: started'); - $interval = (int) System::getEnv('_APP_USAGE_COUNT_INTERVAL', '3600'); + $interval = (int) System::getEnv('_APP_STATS_RESOURCES_INTERVAL', '3600'); Console::loop(function () use ($queueForStatsResources) { $this->enqueueProjects($queueForStatsResources); }, $interval); - Console::log("Usage count: Exited"); + Console::log("Stats resources: exited"); } /** From 469dbf0a3155a254be20c3dca3a1642c98b0c209 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:33:42 +0000 Subject: [PATCH 22/99] reset usage --- src/Appwrite/Event/Usage.php | 39 +--- src/Appwrite/Platform/Workers/Usage.php | 280 ++---------------------- 2 files changed, 26 insertions(+), 293 deletions(-) diff --git a/src/Appwrite/Event/Usage.php b/src/Appwrite/Event/Usage.php index 7d630bf122..55f6bd6311 100644 --- a/src/Appwrite/Event/Usage.php +++ b/src/Appwrite/Event/Usage.php @@ -3,18 +3,14 @@ namespace Appwrite\Event; use Utopia\Database\Document; +use Utopia\Queue\Client; use Utopia\Queue\Connection; class Usage extends Event { - public const TYPE_USAGE_DUMP = 'usage-dump'; - public const TYPE_USAGE_COUNT = 'stats-resources'; - protected array $metrics = []; protected array $reduce = []; - protected string $type = self::TYPE_USAGE_DUMP; - public function __construct(protected Connection $connection) { parent::__construct($connection); @@ -24,12 +20,6 @@ class Usage extends Event ->setClass(Event::USAGE_CLASS_NAME); } - public function setType(string $type): self - { - $this->type = $type; - return $this; - } - /** * Add reduce. * @@ -52,7 +42,6 @@ class Usage extends Event */ public function addMetric(string $key, int $value): self { - $this->metrics[] = [ 'key' => $key, 'value' => $value, @@ -61,21 +50,6 @@ class Usage extends Event return $this; } - /** - * Prepare the payload for the usage event. - * - * @return array - */ - protected function preparePayload(): array - { - return [ - 'project' => $this->project, - 'reduce' => $this->reduce, - 'metrics' => $this->metrics, - 'type' => $this->type, - ]; - } - /** * Sends metrics to the usage worker. * @@ -83,8 +57,11 @@ class Usage extends Event */ public function trigger(): string|bool { - parent::trigger(); - $this->metrics = []; - return true; + $client = new Client($this->queue, $this->connection); + return $client->enqueue([ + 'project' => $this->getProject(), + 'reduce' => $this->reduce, + 'metrics' => $this->metrics, + ]); } -} +} \ No newline at end of file diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 039dad939b..1b5abd4443 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -2,41 +2,22 @@ namespace Appwrite\Platform\Workers; -use Appwrite\Event\Usage as UsageEvent; use Appwrite\Event\UsageDump; -use Appwrite\Platform\Action; use Exception; -use Throwable; use Utopia\CLI\Console; -use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; -use Utopia\Database\Query; +use Utopia\Platform\Action; use Utopia\Queue\Message; use Utopia\System\System; class Usage extends Action { - /** - * Date format for different periods - */ - protected array $periods = [ - '1h' => 'Y-m-d H:00', - '1d' => 'Y-m-d 00:00', - 'inf' => '0000-00-00 00:00' - ]; - /** - * Log Error Callback - * - * @var callable - */ - protected mixed $logError; private array $stats = []; private int $lastTriggeredTime = 0; - private int $aggregationInterval = 20; private int $keys = 0; private const INFINITY_PERIOD = '_inf_'; - private const KEYS_THRESHOLD = 20000; + private const KEYS_THRESHOLD = 10000; public static function getName(): string { @@ -48,50 +29,37 @@ class Usage extends Action */ public function __construct() { - $this - ->desc('Usage worker') - ->inject('message') - ->inject('project') - ->inject('getProjectDB') - ->inject('queueForUsageDump') - ->inject('getLogsDB') - ->inject('dbForPlatform') - ->inject('logError') - ->callback([$this, 'action']); - $this->aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); + $this + ->desc('Usage worker') + ->inject('message') + ->inject('getProjectDB') + ->inject('queueForUsageDump') + ->callback(function (Message $message, callable $getProjectDB, UsageDump $queueForUsageDump) { + $this->action($message, $getProjectDB, $queueForUsageDump); + }); + $this->lastTriggeredTime = time(); } /** * @param Message $message - * @param Document $project * @param callable $getProjectDB * @param UsageDump $queueForUsageDump * @return void * @throws \Utopia\Database\Exception * @throws Exception */ - public function action(Message $message, Document $project, callable $getProjectDB, UsageDump $queueForUsageDump, callable $getLogsDB, Database $dbForPlatform, callable $logError): void + public function action(Message $message, callable $getProjectDB, UsageDump $queueForUsageDump): void { - $this->logError = $logError; - $payload = $message->getPayload() ?? []; if (empty($payload)) { throw new Exception('Missing payload'); } + //Todo Figure out way to preserve keys when the container is being recreated @shimonewman - if (empty($project->getAttribute('database'))) { - var_dump($payload); - return; - } - - $type = $payload['type'] ?? UsageEvent::TYPE_USAGE_DUMP; - if ($type === UsageEvent::TYPE_USAGE_COUNT) { - $this->countForProject($dbForPlatform, $getLogsDB, $getProjectDB, $project); - return; - } - + $aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); + $project = new Document($payload['project'] ?? []); $projectId = $project->getInternalId(); foreach ($payload['reduce'] ?? [] as $document) { if (empty($document)) { @@ -106,12 +74,7 @@ class Usage extends Action ); } - - $this->stats[$projectId]['project'] = [ - '$id' => $project->getId(), - '$internalId' => $project->getInternalId(), - 'database' => $project->getAttribute('database'), - ]; + $this->stats[$projectId]['project'] = $project; $this->stats[$projectId]['receivedAt'] = DateTime::now(); foreach ($payload['metrics'] ?? [] as $metric) { $this->keys++; @@ -126,7 +89,7 @@ class Usage extends Action // If keys crossed threshold or X time passed since the last send and there are some keys in the array ($this->stats) if ( $this->keys >= self::KEYS_THRESHOLD || - (time() - $this->lastTriggeredTime > $this->aggregationInterval && $this->keys > 0) + (time() - $this->lastTriggeredTime > $aggregationInterval && $this->keys > 0) ) { Console::warning('[' . DateTime::now() . '] Aggregated ' . $this->keys . ' keys'); @@ -314,211 +277,4 @@ class Usage extends Action console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); } } - - - protected function countForProject(Database $dbForPlatform, callable $getLogsDB, callable $getProjectDB, Document $project): void - { - Console::info('Begining count for: ' . $project->getId()); - - try { - /** @var \Utopia\Database\Database $dbForLogs */ - $dbForLogs = call_user_func($getLogsDB, $project); - /** @var \Utopia\Database\Database $dbForProject */ - $dbForProject = call_user_func($getProjectDB, $project); - - $region = $project->getAttribute('region'); - - $platforms = $dbForPlatform->count('platforms', [ - Query::equal('projectInternalId', [$project->getInternalId()]) - ]); - $webhooks = $dbForPlatform->count('webhooks', [ - Query::equal('projectInternalId', [$project->getInternalId()]) - ]); - $keys = $dbForPlatform->count('keys', [ - Query::equal('projectInternalId', [$project->getInternalId()]) - ]); - $databases = $dbForProject->count('databases'); - $buckets = $dbForProject->count('buckets'); - $users = $dbForProject->count('users'); - - $last30Days = (new \DateTime())->sub(\DateInterval::createFromDateString('30 days'))->format('Y-m-d 00:00:00'); - $usersActive = $dbForProject->count('users', [ - Query::greaterThanEqual('accessedAt', $last30Days) - ]); - $teams = $dbForProject->count('teams'); - $functions = $dbForProject->count('functions'); - $messages = $dbForProject->count('messages'); - $providers = $dbForProject->count('providers'); - $topics = $dbForProject->count('topics'); - - $metrics = [ - METRIC_DATABASES => $databases, - METRIC_BUCKETS => $buckets, - METRIC_USERS => $users, - METRIC_FUNCTIONS => $functions, - METRIC_TEAMS => $teams, - METRIC_MESSAGES => $messages, - METRIC_USERS_ACTIVE => $usersActive, - METRIC_WEBHOOKS => $webhooks, - METRIC_PLATFORMS => $platforms, - METRIC_PROVIDERS => $providers, - METRIC_TOPICS => $topics, - METRIC_KEYS => $keys, - ]; - - foreach ($metrics as $metric => $value) { - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $value); - } - - try { - $this->countForBuckets($dbForProject, $dbForLogs, $region); - } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "StatsResources", "count_for_buckets_{$project->getId()}"]); - } - - try { - $this->countForDatabase($dbForProject, $dbForLogs, $region); - } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "StatsResources", "count_for_database_{$project->getId()}"]); - } - - try { - $this->countForFunctions($dbForProject, $dbForLogs, $region); - } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "StatsResources", "count_for_functions_{$project->getId()}"]); - } - } catch (Throwable $th) { - call_user_func_array($this->logError, [$th, "StatsResources", "count_for_project_{$project->getId()}"]); - } - - Console::info('End of count for: ' . $project->getId()); - } - - protected function countForBuckets(Database $dbForProject, Database $dbForLogs, string $region) - { - $totalFiles = 0; - $totalStorage = 0; - $this->foreachDocument($dbForProject, 'buckets', [], function ($bucket) use ($dbForProject, $dbForLogs, $region, &$totalFiles, &$totalStorage) { - $files = $dbForProject->count('bucket_' . $bucket->getInternalId()); - - $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $files); - - $storage = $dbForProject->sum('bucket_' . $bucket->getInternalId(), 'sizeActual'); - $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $storage); - - $totalStorage += $storage; - $totalFiles += $files; - }); - - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES, $totalFiles); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES_STORAGE, $totalStorage); - } - - protected function countForDatabase(Database $dbForProject, Database $dbForLogs, string $region) - { - $totalCollections = 0; - $totalDocuments = 0; - - $this->foreachDocument($dbForProject, 'databases', [], function ($database) use ($dbForProject, $dbForLogs, $region, &$totalCollections, &$totalDocuments) { - $collections = $dbForProject->count('database_' . $database->getInternalId()); - - $metric = str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $collections); - - $documents = $this->countForCollections($dbForProject, $dbForLogs, $database, $region); - - $totalDocuments += $documents; - $totalCollections += $collections; - }); - - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_COLLECTIONS, $totalCollections); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DOCUMENTS, $totalDocuments); - } - protected function countForCollections(Database $dbForProject, Database $dbForLogs, Document $database, string $region): int - { - $databaseDocuments = 0; - $this->foreachDocument($dbForProject, 'database_' . $database->getInternalId(), [], function ($collection) use ($dbForProject, $dbForLogs, $database, $region, &$totalCollections, &$databaseDocuments) { - $documents = $dbForProject->count('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId()); - - $metric = str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$database->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $documents); - - $databaseDocuments += $documents; - }); - - $metric = str_replace(['{databaseInternalId}'], [$database->getInternalId()], METRIC_DATABASE_ID_DOCUMENTS); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $databaseDocuments); - - return $databaseDocuments; - } - - protected function countForFunctions(Database $dbForProject, Database $dbForLogs, string $region) - { - $deploymentsStorage = $dbForProject->sum('deployments', 'size'); - $buildsStorage = $dbForProject->sum('builds', 'size'); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS_STORAGE, $deploymentsStorage); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS_STORAGE, $buildsStorage); - - $deployments = $dbForProject->count('deployments'); - $builds = $dbForProject->count('builds'); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS, $deployments); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS, $builds); - - - $this->foreachDocument($dbForProject, 'functions', [], function (Document $function) use ($dbForProject, $dbForLogs, $region) { - $functionDeploymentsStorage = $dbForProject->sum('deployments', 'size', [ - Query::equal('resourceInternalId', [$function->getInternalId()]), - Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), - ]); - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS_STORAGE), $functionDeploymentsStorage); - - $functionDeployments = $dbForProject->count('deployments', [ - Query::equal('resourceInternalId', [$function->getInternalId()]), - Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), - ]); - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS), $functionDeployments); - - /** - * As deployments and builds have 1-1 relationship, - * the count for one should match the other - */ - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS), $functionDeployments); - - $functionBuildsStorage = 0; - - $this->foreachDocument($dbForProject, 'deployments', [ - Query::equal('resourceInternalId', [$function->getInternalId()]), - Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), - ], function (Document $deployment) use ($dbForProject, &$functionBuildsStorage): void { - $build = $dbForProject->getDocument('builds', $deployment->getAttribute('buildId', '')); - $functionBuildsStorage += $build->getAttribute('size', 0); - }); - - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_STORAGE), $functionBuildsStorage); - }); - } - - protected function createOrUpdateMetric(Database $dbForLogs, string $region, string $metric, int $value) - { - foreach ($this->periods as $period => $format) { - $time = 'inf' === $period ? null : \date($format, \time()); - $id = \md5("{$time}_{$period}_{$metric}"); - $current = $dbForLogs->getDocument('usage', $id); - if ($current->isEmpty()) { - $dbForLogs->createDocument('usage', new Document([ - '$id' => $id, - 'metric' => $metric, - 'period' => $period, - 'region' => $region, - 'value' => $value, - ])); - Console::success('Usage logs created for metric: ' . $metric . ' period:'. $period); - } else { - $dbForLogs->updateDocument('usage', $id, $current->setAttribute('value', $value)); - Console::success('Usage logs updated for metric: ' . $metric . ' period:'. $period); - } - } - } -} +} \ No newline at end of file From 0da3f870f9a8bb12e67977ad1b5f1369f1cf1018 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:43:16 +0000 Subject: [PATCH 23/99] refactor: rename --- Dockerfile | 2 +- app/controllers/api/health.php | 10 +++++----- app/views/install/compose.phtml | 6 +++--- app/worker.php | 6 +++--- bin/worker-stats-usage-dump | 3 +++ bin/worker-usage-dump | 3 --- docker-compose.yml | 6 +++--- src/Appwrite/Event/Event.php | 4 ++-- .../Event/{UsageDump.php => StatsUsageDump.php} | 6 +++--- src/Appwrite/Platform/Services/Workers.php | 4 ++-- src/Appwrite/Platform/Workers/StatsResources.php | 1 - .../Workers/{UsageDump.php => StatsUsageDump.php} | 4 ++-- src/Appwrite/Platform/Workers/Usage.php | 14 +++++++------- .../e2e/Services/Health/HealthCustomServerTest.php | 6 +++--- 14 files changed, 37 insertions(+), 38 deletions(-) create mode 100644 bin/worker-stats-usage-dump delete mode 100644 bin/worker-usage-dump rename src/Appwrite/Event/{UsageDump.php => StatsUsageDump.php} (81%) rename src/Appwrite/Platform/Workers/{UsageDump.php => StatsUsageDump.php} (99%) diff --git a/Dockerfile b/Dockerfile index 1d50684535..f764e16055 100755 --- a/Dockerfile +++ b/Dockerfile @@ -86,7 +86,7 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/worker-migrations && \ chmod +x /usr/local/bin/worker-webhooks && \ chmod +x /usr/local/bin/worker-usage && \ - chmod +x /usr/local/bin/worker-usage-dump && \ + chmod +x /usr/local/bin/worker-stats-usage-dump && \ chmod +x /usr/local/bin/stats-resources && \ chmod +x /usr/local/bin/worker-stats-resources diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 1db4713311..ab3551fcd9 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -798,15 +798,15 @@ App::get('/v1/health/queue/usage') $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); }); -App::get('/v1/health/queue/usage-dump') +App::get('/v1/health/queue/stats-usage-dump') ->desc('Get usage dump queue') ->groups(['api', 'health']) ->label('scope', 'health.read') ->label('sdk', new Method( auth: [AuthType::KEY], namespace: 'health', - name: 'getQueueUsageDump', - description: '/docs/references/health/get-queue-usage-dump.md', + name: 'getQueueStatsUsageDump', + description: '/docs/references/health/get-queue-stats-usage-dump.md', responses: [ new SDKResponse( code: Response::STATUS_CODE_OK, @@ -821,7 +821,7 @@ App::get('/v1/health/queue/usage-dump') ->action(function (int|string $threshold, Connection $queue, Response $response) { $threshold = \intval($threshold); - $client = new Client(Event::USAGE_DUMP_QUEUE_NAME, $queue); + $client = new Client(Event::STATS_USAGE_DUMP_QUEUE_NAME, $queue); $size = $client->getQueueSize(); if ($size >= $threshold) { @@ -996,7 +996,7 @@ App::get('/v1/health/queue/failed/:name') Event::MAILS_QUEUE_NAME, Event::FUNCTIONS_QUEUE_NAME, Event::USAGE_QUEUE_NAME, - Event::USAGE_DUMP_QUEUE_NAME, + Event::STATS_USAGE_DUMP_QUEUE_NAME, Event::WEBHOOK_QUEUE_NAME, Event::CERTIFICATES_QUEUE_NAME, Event::BUILDS_QUEUE_NAME, diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index ad6d883c4c..ff6da07c78 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -677,11 +677,11 @@ $image = $this->getParam('image', ''); - _APP_LOGGING_CONFIG - _APP_USAGE_AGGREGATION_INTERVAL - appwrite-worker-usage-dump: + appwrite-worker-stats-usage-dump: image: /: - entrypoint: worker-usage-dump + entrypoint: worker-stats-usage-dump <<: *x-logging - container_name: appwrite-worker-usage-dump + container_name: appwrite-worker-stats-usage-dump restart: unless-stopped networks: - appwrite diff --git a/app/worker.php b/app/worker.php index 81b1367873..9658202a41 100644 --- a/app/worker.php +++ b/app/worker.php @@ -14,7 +14,7 @@ use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Event\Migration; use Appwrite\Event\Usage; -use Appwrite\Event\UsageDump; +use Appwrite\Event\StatsUsageDump; use Appwrite\Platform\Appwrite; use Swoole\Runtime; use Utopia\Abuse\Adapters\TimeLimit\Redis as TimeLimitRedis; @@ -261,8 +261,8 @@ Server::setResource('queueForUsage', function (Connection $queue) { return new Usage($queue); }, ['queue']); -Server::setResource('queueForUsageDump', function (Connection $queue) { - return new UsageDump($queue); +Server::setResource('queueForStatsUsageDump', function (Connection $queue) { + return new StatsUsageDump($queue); }, ['queue']); Server::setResource('queue', function (Group $pools) { diff --git a/bin/worker-stats-usage-dump b/bin/worker-stats-usage-dump new file mode 100644 index 0000000000..98e3c2cac7 --- /dev/null +++ b/bin/worker-stats-usage-dump @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/worker.php stats-usage-dump $@ \ No newline at end of file diff --git a/bin/worker-usage-dump b/bin/worker-usage-dump deleted file mode 100644 index 43ca87fcb3..0000000000 --- a/bin/worker-usage-dump +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -php /usr/src/code/app/worker.php usage-dump $@ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 4ea4336485..7d04871061 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -816,10 +816,10 @@ services: - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - appwrite-worker-usage-dump: - entrypoint: worker-usage-dump + appwrite-worker-stats-usage-dump: + entrypoint: worker-stats-usage-dump <<: *x-logging - container_name: appwrite-worker-usage-dump + container_name: appwrite-worker-stats-usage-dump image: appwrite-dev networks: - appwrite diff --git a/src/Appwrite/Event/Event.php b/src/Appwrite/Event/Event.php index 9c9244c056..a1c5abd1d8 100644 --- a/src/Appwrite/Event/Event.php +++ b/src/Appwrite/Event/Event.php @@ -30,8 +30,8 @@ class Event public const STATS_RESOURCES_QUEUE_NAME = 'v1-stats-resources'; public const STATS_RESOURCES_CLASS_NAME = 'StatsResources'; - public const USAGE_DUMP_QUEUE_NAME = 'v1-usage-dump'; - public const USAGE_DUMP_CLASS_NAME = 'UsageDumpV1'; + public const STATS_USAGE_DUMP_QUEUE_NAME = 'v1-stats-usage-dump'; + public const STATS_USAGE_DUMP_CLASS_NAME = 'StatsUsageDumpV1'; public const WEBHOOK_QUEUE_NAME = 'v1-webhooks'; public const WEBHOOK_CLASS_NAME = 'WebhooksV1'; diff --git a/src/Appwrite/Event/UsageDump.php b/src/Appwrite/Event/StatsUsageDump.php similarity index 81% rename from src/Appwrite/Event/UsageDump.php rename to src/Appwrite/Event/StatsUsageDump.php index 6f44de4eda..3cd38eca92 100644 --- a/src/Appwrite/Event/UsageDump.php +++ b/src/Appwrite/Event/StatsUsageDump.php @@ -4,7 +4,7 @@ namespace Appwrite\Event; use Utopia\Queue\Connection; -class UsageDump extends Event +class StatsUsageDump extends Event { protected array $stats; @@ -13,8 +13,8 @@ class UsageDump extends Event parent::__construct($connection); $this - ->setQueue(Event::USAGE_DUMP_QUEUE_NAME) - ->setClass(Event::USAGE_DUMP_CLASS_NAME); + ->setQueue(Event::STATS_USAGE_DUMP_QUEUE_NAME) + ->setClass(Event::STATS_USAGE_DUMP_CLASS_NAME); } /** diff --git a/src/Appwrite/Platform/Services/Workers.php b/src/Appwrite/Platform/Services/Workers.php index 150c8cfd23..c1198231f9 100644 --- a/src/Appwrite/Platform/Services/Workers.php +++ b/src/Appwrite/Platform/Services/Workers.php @@ -13,7 +13,7 @@ use Appwrite\Platform\Workers\Messaging; use Appwrite\Platform\Workers\Migrations; use Appwrite\Platform\Workers\StatsResources; use Appwrite\Platform\Workers\Usage; -use Appwrite\Platform\Workers\UsageDump; +use Appwrite\Platform\Workers\StatsUsageDump; use Appwrite\Platform\Workers\Webhooks; use Utopia\Platform\Service; @@ -32,7 +32,7 @@ class Workers extends Service ->addAction(Mails::getName(), new Mails()) ->addAction(Messaging::getName(), new Messaging()) ->addAction(Webhooks::getName(), new Webhooks()) - ->addAction(UsageDump::getName(), new UsageDump()) + ->addAction(StatsUsageDump::getName(), new StatsUsageDump()) ->addAction(Usage::getName(), new Usage()) ->addAction(Migrations::getName(), new Migrations()) ->addAction(StatsResources::getName(), new StatsResources()) diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index e4ba59c464..4f6855a6a1 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -47,7 +47,6 @@ class StatsResources extends Action * @param Message $message * @param Document $project * @param callable $getProjectDB - * @param UsageDump $queueForUsageDump * @return void * @throws \Utopia\Database\Exception * @throws Exception diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php similarity index 99% rename from src/Appwrite/Platform/Workers/UsageDump.php rename to src/Appwrite/Platform/Workers/StatsUsageDump.php index 0e7103b8c2..fa31691a18 100644 --- a/src/Appwrite/Platform/Workers/UsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -16,7 +16,7 @@ const METRIC_COLLECTION_LEVEL_STORAGE = 4; const METRIC_DATABASE_LEVEL_STORAGE = 3; const METRIC_PROJECT_LEVEL_STORAGE = 2; -class UsageDump extends Action +class StatsUsageDump extends Action { protected array $stats = []; @@ -72,7 +72,7 @@ class UsageDump extends Action public static function getName(): string { - return 'usage-dump'; + return 'stats-usage-dump'; } /** diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 1b5abd4443..176a9fea2f 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -2,7 +2,7 @@ namespace Appwrite\Platform\Workers; -use Appwrite\Event\UsageDump; +use Appwrite\Event\StatsUsageDump; use Exception; use Utopia\CLI\Console; use Utopia\Database\DateTime; @@ -34,9 +34,9 @@ class Usage extends Action ->desc('Usage worker') ->inject('message') ->inject('getProjectDB') - ->inject('queueForUsageDump') - ->callback(function (Message $message, callable $getProjectDB, UsageDump $queueForUsageDump) { - $this->action($message, $getProjectDB, $queueForUsageDump); + ->inject('queueForStatsUsageDump') + ->callback(function (Message $message, callable $getProjectDB, StatsUsageDump $queueForStatsUsageDump) { + $this->action($message, $getProjectDB, $queueForStatsUsageDump); }); $this->lastTriggeredTime = time(); @@ -45,12 +45,12 @@ class Usage extends Action /** * @param Message $message * @param callable $getProjectDB - * @param UsageDump $queueForUsageDump + * @param StatsUsageDump $queueForStatsUsageDump * @return void * @throws \Utopia\Database\Exception * @throws Exception */ - public function action(Message $message, callable $getProjectDB, UsageDump $queueForUsageDump): void + public function action(Message $message, callable $getProjectDB, StatsUsageDump $queueForStatsUsageDump): void { $payload = $message->getPayload() ?? []; if (empty($payload)) { @@ -93,7 +93,7 @@ class Usage extends Action ) { Console::warning('[' . DateTime::now() . '] Aggregated ' . $this->keys . ' keys'); - $queueForUsageDump + $queueForStatsUsageDump ->setStats($this->stats) ->trigger(); diff --git a/tests/e2e/Services/Health/HealthCustomServerTest.php b/tests/e2e/Services/Health/HealthCustomServerTest.php index 9d6a04abe6..b05351dce5 100644 --- a/tests/e2e/Services/Health/HealthCustomServerTest.php +++ b/tests/e2e/Services/Health/HealthCustomServerTest.php @@ -536,12 +536,12 @@ class HealthCustomServerTest extends Scope $this->assertEquals(503, $response['headers']['status-code']); } - public function testUsageDumpSuccess() + public function testStatsUsageDumpSuccess() { /** * Test for SUCCESS */ - $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage-dump', array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/health/queue/stats-usage-dump', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); @@ -553,7 +553,7 @@ class HealthCustomServerTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage-dump?threshold=0', array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/health/queue/stats-usage-dump?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); From cb31e7954ee7b1b1ddece154d2860ffb730e7230 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 04:53:53 +0000 Subject: [PATCH 24/99] refactor rename --- CONTRIBUTING.md | 12 ++--- Dockerfile | 2 +- app/cli.php | 6 +-- app/controllers/api/account.php | 26 +++++----- app/controllers/api/databases.php | 50 +++++++++---------- app/controllers/api/functions.php | 8 +-- app/controllers/api/storage.php | 8 +-- app/controllers/api/teams.php | 10 ++-- app/controllers/general.php | 38 +++++++------- app/controllers/shared/api.php | 50 +++++++++---------- app/init.php | 6 +-- app/views/install/compose.phtml | 6 +-- app/worker.php | 6 +-- bin/worker-stats-usage | 3 ++ bin/worker-usage | 3 -- docker-compose.yml | 6 +-- .../Event/{Usage.php => StatsUsage.php} | 4 +- src/Appwrite/Platform/Services/Workers.php | 4 +- src/Appwrite/Platform/Workers/Builds.php | 20 ++++---- src/Appwrite/Platform/Workers/Functions.php | 20 ++++---- src/Appwrite/Platform/Workers/Messaging.php | 24 ++++----- .../Workers/{Usage.php => StatsUsage.php} | 6 +-- src/Appwrite/Platform/Workers/Webhooks.php | 18 +++---- tests/resources/docker/docker-compose.yml | 6 +-- 24 files changed, 171 insertions(+), 171 deletions(-) create mode 100644 bin/worker-stats-usage delete mode 100644 bin/worker-usage rename src/Appwrite/Event/{Usage.php => StatsUsage.php} (97%) rename src/Appwrite/Platform/Workers/{Usage.php => StatsUsage.php} (99%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e89aa369cf..d53e3786da 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -367,7 +367,7 @@ In file `app/controllers/shared/api.php` On the database listener, add to an exi ```php case $document->getCollection() === 'teams': - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_TEAMS, $value); // per project break; ``` @@ -379,10 +379,10 @@ In that case you need also to handle children removal using addReduce() method c ```php case $document->getCollection() === 'buckets': //buckets - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_BUCKETS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage + $queueForStatsUsage ->addReduce($document); } break; @@ -428,16 +428,16 @@ public function __construct() ->inject('dbForProject') ->inject('queueForFunctions') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('log') - ->callback(fn (Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, Usage $queueForUsage, Log $log) => $this->action($message, $dbForProject, $queueForFunctions, $queueForEvents, $queueForUsage, $log)); + ->callback(fn (Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Log $log) => $this->action($message, $dbForProject, $queueForFunctions, $queueForEvents, $queueForStatsUsage, $log)); } ``` and then trigger the queue with the new metric like so: ```php -$queueForUsage +$queueForStatsUsage ->addMetric(METRIC_BUILDS, 1) ->addMetric(METRIC_BUILDS_STORAGE, $build->getAttribute('size', 0)) ->addMetric(METRIC_BUILDS_COMPUTE, (int)$build->getAttribute('duration', 0) * 1000) diff --git a/Dockerfile b/Dockerfile index f764e16055..01ad5d3fba 100755 --- a/Dockerfile +++ b/Dockerfile @@ -85,7 +85,7 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/worker-messaging && \ chmod +x /usr/local/bin/worker-migrations && \ chmod +x /usr/local/bin/worker-webhooks && \ - chmod +x /usr/local/bin/worker-usage && \ + chmod +x /usr/local/bin/worker-stats-usage && \ chmod +x /usr/local/bin/worker-stats-usage-dump && \ chmod +x /usr/local/bin/stats-resources && \ chmod +x /usr/local/bin/worker-stats-resources diff --git a/app/cli.php b/app/cli.php index a895275f76..df6c6dff51 100644 --- a/app/cli.php +++ b/app/cli.php @@ -6,7 +6,7 @@ use Appwrite\Event\Certificate; use Appwrite\Event\Delete; use Appwrite\Event\Func; use Appwrite\Event\StatsResources; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Platform\Appwrite; use Appwrite\Runtimes\Runtimes; use Utopia\Cache\Adapter\Sharding; @@ -207,8 +207,8 @@ CLI::setResource('queueForDeletes', function (Connection $queue) { CLI::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); }, ['queue']); -CLI::setResource('queueForUsage', function (Connection $queue) { - return new Usage($queue); +CLI::setResource('queueForStatsUsage', function (Connection $queue) { + return new StatsUsage($queue); }, ['queue']); CLI::setResource('queueForStatsResources', function (Connection $queue) { return new StatsResources($queue); diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index bd9562110f..21a04800b5 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -17,7 +17,7 @@ use Appwrite\Event\Delete; use Appwrite\Event\Event; use Appwrite\Event\Mail; use Appwrite\Event\Messaging; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Extend\Exception; use Appwrite\Hooks\Hooks; use Appwrite\Network\Validator\Email; @@ -2432,9 +2432,9 @@ App::post('/v1/account/tokens/phone') ->inject('queueForMessaging') ->inject('locale') ->inject('timelimit') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('plan') - ->action(function (string $userId, string $phone, Request $request, Response $response, Document $user, Document $project, Database $dbForProject, Event $queueForEvents, Messaging $queueForMessaging, Locale $locale, callable $timelimit, Usage $queueForUsage, array $plan) { + ->action(function (string $userId, string $phone, Request $request, Response $response, Document $user, Document $project, Database $dbForProject, Event $queueForEvents, Messaging $queueForMessaging, Locale $locale, callable $timelimit, StatsUsage $queueForStatsUsage, array $plan) { if (empty(System::getEnv('_APP_SMS_PROVIDER'))) { throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured'); } @@ -2583,11 +2583,11 @@ App::post('/v1/account/tokens/phone') $countryCode = $helper->parse($phone)->getCountryCode(); if (!empty($countryCode)) { - $queueForUsage + $queueForStatsUsage ->addMetric(str_replace('{countryCode}', $countryCode, METRIC_AUTH_METHOD_PHONE_COUNTRY_CODE), 1); } } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_AUTH_METHOD_PHONE, 1) ->setProject($project) ->trigger(); @@ -3678,9 +3678,9 @@ App::post('/v1/account/verification/phone') ->inject('project') ->inject('locale') ->inject('timelimit') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('plan') - ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents, Messaging $queueForMessaging, Document $project, Locale $locale, callable $timelimit, Usage $queueForUsage, array $plan) { + ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents, Messaging $queueForMessaging, Document $project, Locale $locale, callable $timelimit, StatsUsage $queueForStatsUsage, array $plan) { if (empty(System::getEnv('_APP_SMS_PROVIDER'))) { throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured'); } @@ -3775,11 +3775,11 @@ App::post('/v1/account/verification/phone') $countryCode = $helper->parse($phone)->getCountryCode(); if (!empty($countryCode)) { - $queueForUsage + $queueForStatsUsage ->addMetric(str_replace('{countryCode}', $countryCode, METRIC_AUTH_METHOD_PHONE_COUNTRY_CODE), 1); } } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_AUTH_METHOD_PHONE, 1) ->setProject($project) ->trigger(); @@ -4310,9 +4310,9 @@ App::post('/v1/account/mfa/challenge') ->inject('queueForMessaging') ->inject('queueForMails') ->inject('timelimit') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('plan') - ->action(function (string $factor, Response $response, Database $dbForProject, Document $user, Locale $locale, Document $project, Request $request, Event $queueForEvents, Messaging $queueForMessaging, Mail $queueForMails, callable $timelimit, Usage $queueForUsage, array $plan) { + ->action(function (string $factor, Response $response, Database $dbForProject, Document $user, Locale $locale, Document $project, Request $request, Event $queueForEvents, Messaging $queueForMessaging, Mail $queueForMails, callable $timelimit, StatsUsage $queueForStatsUsage, array $plan) { $expire = DateTime::addSeconds(new \DateTime(), Auth::TOKEN_EXPIRATION_CONFIRM); $code = Auth::codeGenerator(); @@ -4383,11 +4383,11 @@ App::post('/v1/account/mfa/challenge') $countryCode = $helper->parse($phone)->getCountryCode(); if (!empty($countryCode)) { - $queueForUsage + $queueForStatsUsage ->addMetric(str_replace('{countryCode}', $countryCode, METRIC_AUTH_METHOD_PHONE_COUNTRY_CODE), 1); } } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_AUTH_METHOD_PHONE, 1) ->setProject($project) ->trigger(); diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index df46c1890b..98ba59106d 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -4,7 +4,7 @@ use Appwrite\Auth\Auth; use Appwrite\Detector\Detector; use Appwrite\Event\Database as EventDatabase; use Appwrite\Event\Event; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; use Appwrite\SDK\AuthType; @@ -476,8 +476,8 @@ App::post('/v1/databases') ->inject('response') ->inject('dbForProject') ->inject('queueForEvents') - ->inject('queueForUsage') - ->action(function (string $databaseId, string $name, bool $enabled, Response $response, Database $dbForProject, Event $queueForEvents, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $databaseId, string $name, bool $enabled, Response $response, Database $dbForProject, Event $queueForEvents, StatsUsage $queueForStatsUsage) { $databaseId = $databaseId == 'unique()' ? ID::unique() : $databaseId; @@ -527,7 +527,7 @@ App::post('/v1/databases') } $queueForEvents->setParam('databaseId', $database->getId()); - $queueForUsage->addMetric(str_replace(['{databaseInternalId}'], [$database->getInternalId()], METRIC_DATABASE_ID_STORAGE), 1); // per database + $queueForStatsUsage->addMetric(str_replace(['{databaseInternalId}'], [$database->getInternalId()], METRIC_DATABASE_ID_STORAGE), 1); // per database $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -797,8 +797,8 @@ App::delete('/v1/databases/:databaseId') ->inject('dbForProject') ->inject('queueForDatabase') ->inject('queueForEvents') - ->inject('queueForUsage') - ->action(function (string $databaseId, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $databaseId, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents, StatsUsage $queueForStatsUsage) { $database = $dbForProject->getDocument('databases', $databaseId); @@ -821,7 +821,7 @@ App::delete('/v1/databases/:databaseId') ->setParam('databaseId', $database->getId()) ->setPayload($response->output($database, Response::MODEL_DATABASE)); - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES_STORAGE, 1); // Global, deletion forces full recalculation $response->noContent(); @@ -2618,8 +2618,8 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key ->inject('dbForProject') ->inject('queueForDatabase') ->inject('queueForEvents') - ->inject('queueForUsage') - ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents, StatsUsage $queueForStatsUsage) { $db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -2716,7 +2716,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key ->setContext('database', $db) ->setPayload($response->output($attribute, $model)); - $queueForUsage + $queueForStatsUsage ->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$db->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_STORAGE), 1); // per collection $response->noContent(); @@ -3134,9 +3134,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('dbForProject') ->inject('user') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('mode') - ->action(function (string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, Usage $queueForUsage, string $mode) { + ->action(function (string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, StatsUsage $queueForStatsUsage, string $mode) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array @@ -3339,7 +3339,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') $processDocument($collection, $document); - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_WRITES, $operations) ->addMetric(str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_OPERATIONS_WRITES), $operations) ->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$database->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_STORAGE), 1); // per collection @@ -3392,8 +3392,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('response') ->inject('dbForProject') ->inject('mode') - ->inject('queueForUsage') - ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, string $mode, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, string $mode, StatsUsage $queueForStatsUsage) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); $isAPIKey = Auth::isAppUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); @@ -3505,7 +3505,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') $processDocument($collection, $document); } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_READS, $operations) ->addMetric(str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_OPERATIONS_READS), $operations) ; @@ -3571,8 +3571,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen ->inject('response') ->inject('dbForProject') ->inject('mode') - ->inject('queueForUsage') - ->action(function (string $databaseId, string $collectionId, string $documentId, array $queries, Response $response, Database $dbForProject, string $mode, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $databaseId, string $collectionId, string $documentId, array $queries, Response $response, Database $dbForProject, string $mode, StatsUsage $queueForStatsUsage) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); $isAPIKey = Auth::isAppUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); @@ -3648,7 +3648,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen $processDocument($collection, $document); - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_READS, $operations) ->addMetric(str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_OPERATIONS_READS), $operations) ; @@ -3805,8 +3805,8 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum ->inject('dbForProject') ->inject('queueForEvents') ->inject('mode') - ->inject('queueForUsage') - ->action(function (string $databaseId, string $collectionId, string $documentId, string|array $data, ?array $permissions, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, string $mode, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $databaseId, string $collectionId, string $documentId, string|array $data, ?array $permissions, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, string $mode, StatsUsage $queueForStatsUsage) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array @@ -3946,7 +3946,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum $setCollection($collection, $newDocument); - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_WRITES, $operations) ->addMetric(str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_OPERATIONS_WRITES), $operations) ; @@ -4058,9 +4058,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu ->inject('response') ->inject('dbForProject') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('mode') - ->action(function (string $databaseId, string $collectionId, string $documentId, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, Usage $queueForUsage, string $mode) { + ->action(function (string $databaseId, string $collectionId, string $documentId, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, StatsUsage $queueForStatsUsage, string $mode) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); $isAPIKey = Auth::isAppUser(Authorization::getRoles()); @@ -4129,7 +4129,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu $processDocument($collection, $document); - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES_OPERATIONS_WRITES, 1) ->addMetric(str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_OPERATIONS_WRITES), 1) ->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$database->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_STORAGE), 1); // per collection diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 3d9240d494..14255ef7a4 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -6,7 +6,7 @@ use Appwrite\Event\Build; use Appwrite\Event\Delete; use Appwrite\Event\Event; use Appwrite\Event\Func; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Event\Validator\FunctionEvent; use Appwrite\Extend\Exception; use Appwrite\Extend\Exception as AppwriteException; @@ -1900,10 +1900,10 @@ App::post('/v1/functions/:functionId/executions') ->inject('dbForPlatform') ->inject('user') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('queueForFunctions') ->inject('geodb') - ->action(function (string $functionId, string $body, mixed $async, string $path, string $method, mixed $headers, ?string $scheduledAt, Response $response, Request $request, Document $project, Database $dbForProject, Database $dbForPlatform, Document $user, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb) { + ->action(function (string $functionId, string $body, mixed $async, string $path, string $method, mixed $headers, ?string $scheduledAt, Response $response, Request $request, Document $project, Database $dbForProject, Database $dbForPlatform, Document $user, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Reader $geodb) { $async = \strval($async) === 'true' || \strval($async) === '1'; if (!$async && !is_null($scheduledAt)) { @@ -2230,7 +2230,7 @@ App::post('/v1/functions/:functionId/executions') throw $th; } } finally { - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_EXECUTIONS, 1) ->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS), 1) ->addMetric(METRIC_EXECUTIONS_COMPUTE, (int)($execution->getAttribute('duration') * 1000)) // per project diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index b6a07c356d..a5ef287dcd 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -6,7 +6,7 @@ use Appwrite\Auth\Auth; use Appwrite\ClamAV\Network; use Appwrite\Event\Delete; use Appwrite\Event\Event; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Extend\Exception; use Appwrite\OpenSSL\OpenSSL; use Appwrite\SDK\AuthType; @@ -941,8 +941,8 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') ->inject('mode') ->inject('deviceForFiles') ->inject('deviceForLocal') - ->inject('queueForUsage') - ->action(function (string $bucketId, string $fileId, int $width, int $height, string $gravity, int $quality, int $borderWidth, string $borderColor, int $borderRadius, float $opacity, int $rotation, string $background, string $output, Request $request, Response $response, Document $project, Database $dbForProject, string $mode, Device $deviceForFiles, Device $deviceForLocal, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (string $bucketId, string $fileId, int $width, int $height, string $gravity, int $quality, int $borderWidth, string $borderColor, int $borderRadius, float $opacity, int $rotation, string $background, string $output, Request $request, Response $response, Document $project, Database $dbForProject, string $mode, Device $deviceForFiles, Device $deviceForLocal, StatsUsage $queueForStatsUsage) { if (!\extension_loaded('imagick')) { throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Imagick extension is missing'); @@ -1070,7 +1070,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') $contentType = (\array_key_exists($output, $outputs)) ? $outputs[$output] : $outputs['jpg']; - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_FILES_TRANSFORMATIONS, 1) ->addMetric(str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_TRANSFORMATIONS), 1) ; diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index e525086ebf..b2b897f88a 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -8,7 +8,7 @@ use Appwrite\Event\Delete; use Appwrite\Event\Event; use Appwrite\Event\Mail; use Appwrite\Event\Messaging; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; use Appwrite\Platform\Workers\Deletes; @@ -466,9 +466,9 @@ App::post('/v1/teams/:teamId/memberships') ->inject('queueForMessaging') ->inject('queueForEvents') ->inject('timelimit') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('plan') - ->action(function (string $teamId, string $email, string $userId, string $phone, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $queueForMails, Messaging $queueForMessaging, Event $queueForEvents, callable $timelimit, Usage $queueForUsage, array $plan) { + ->action(function (string $teamId, string $email, string $userId, string $phone, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $queueForMails, Messaging $queueForMessaging, Event $queueForEvents, callable $timelimit, StatsUsage $queueForStatsUsage, array $plan) { $isAPIKey = Auth::isAppUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); @@ -759,11 +759,11 @@ App::post('/v1/teams/:teamId/memberships') $countryCode = $helper->parse($phone)->getCountryCode(); if (!empty($countryCode)) { - $queueForUsage + $queueForStatsUsage ->addMetric(str_replace('{countryCode}', $countryCode, METRIC_AUTH_METHOD_PHONE_COUNTRY_CODE), 1); } } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_AUTH_METHOD_PHONE, 1) ->setProject($project) ->trigger(); diff --git a/app/controllers/general.php b/app/controllers/general.php index 7e691d033f..1d56e79b74 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -7,7 +7,7 @@ use Appwrite\Auth\Auth; use Appwrite\Event\Certificate; use Appwrite\Event\Event; use Appwrite\Event\Func; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Extend\Exception as AppwriteException; use Appwrite\Network\Validator\Origin; use Appwrite\SDK\AuthType; @@ -50,7 +50,7 @@ Config::setParam('domainVerification', false); Config::setParam('cookieDomain', 'localhost'); Config::setParam('cookieSamesite', Response::COOKIE_SAMESITE_NONE); -function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, SwooleRequest $swooleRequest, Request $request, Response $response, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) +function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, SwooleRequest $swooleRequest, Request $request, Response $response, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { $utopia->getRoute()?->label('error', __DIR__ . '/../views/general/error.phtml'); @@ -434,7 +434,7 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw $fileSize = (\is_array($file['size']) && isset($file['size'][0])) ? $file['size'][0] : $file['size']; } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_NETWORK_REQUESTS, 1) ->addMetric(METRIC_NETWORK_INBOUND, $request->getSize() + $fileSize) ->addMetric(METRIC_NETWORK_OUTBOUND, $response->getSize()) @@ -499,13 +499,13 @@ App::init() ->inject('localeCodes') ->inject('clients') ->inject('geodb') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('queueForEvents') ->inject('queueForCertificates') ->inject('queueForFunctions') ->inject('isResourceBlocked') ->inject('previewHostname') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, StatsUsage $queueForStatsUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname) { /* * Appwrite Router */ @@ -513,7 +513,7 @@ App::init() $mainDomain = System::getEnv('_APP_DOMAIN', ''); // Only run Router when external domain if ($host !== $mainDomain || !empty($previewHostname)) { - if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname)) { + if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname)) { return; } } @@ -732,12 +732,12 @@ App::options() ->inject('dbForPlatform') ->inject('getProjectDB') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('queueForFunctions') ->inject('geodb') ->inject('isResourceBlocked') ->inject('previewHostname') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { /* * Appwrite Router */ @@ -745,7 +745,7 @@ App::options() $mainDomain = System::getEnv('_APP_DOMAIN', ''); // Only run Router when external domain if ($host !== $mainDomain || !empty($previewHostname)) { - if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname)) { + if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname)) { return; } } @@ -770,8 +770,8 @@ App::error() ->inject('project') ->inject('logger') ->inject('log') - ->inject('queueForUsage') - ->action(function (Throwable $error, App $utopia, Request $request, Response $response, Document $project, ?Logger $logger, Log $log, Usage $queueForUsage) { + ->inject('queueForStatsUsage') + ->action(function (Throwable $error, App $utopia, Request $request, Response $response, Document $project, ?Logger $logger, Log $log, StatsUsage $queueForStatsUsage) { $version = System::getEnv('_APP_VERSION', 'UNKNOWN'); $route = $utopia->getRoute(); $class = \get_class($error); @@ -882,13 +882,13 @@ App::error() $fileSize = (\is_array($file['size']) && isset($file['size'][0])) ? $file['size'][0] : $file['size']; } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_NETWORK_REQUESTS, 1) ->addMetric(METRIC_NETWORK_INBOUND, $request->getSize() + $fileSize) ->addMetric(METRIC_NETWORK_OUTBOUND, $response->getSize()); } - $queueForUsage + $queueForStatsUsage ->setProject($project) ->trigger(); } @@ -1040,12 +1040,12 @@ App::get('/robots.txt') ->inject('dbForPlatform') ->inject('getProjectDB') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('queueForFunctions') ->inject('geodb') ->inject('isResourceBlocked') ->inject('previewHostname') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { $host = $request->getHostname() ?? ''; $mainDomain = System::getEnv('_APP_DOMAIN', ''); @@ -1053,7 +1053,7 @@ App::get('/robots.txt') $template = new View(__DIR__ . '/../views/general/robots.phtml'); $response->text($template->render(false)); } else { - router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname); + router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname); } }); @@ -1068,12 +1068,12 @@ App::get('/humans.txt') ->inject('dbForPlatform') ->inject('getProjectDB') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('queueForFunctions') ->inject('geodb') ->inject('isResourceBlocked') ->inject('previewHostname') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Reader $geodb, callable $isResourceBlocked, string $previewHostname) { $host = $request->getHostname() ?? ''; $mainDomain = System::getEnv('_APP_DOMAIN', ''); @@ -1081,7 +1081,7 @@ App::get('/humans.txt') $template = new View(__DIR__ . '/../views/general/humans.phtml'); $response->text($template->render(false)); } else { - router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname); + router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $geodb, $isResourceBlocked, $previewHostname); } }); diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index e2845521f8..0b9456ac78 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -12,7 +12,7 @@ use Appwrite\Event\Event; use Appwrite\Event\Func; use Appwrite\Event\Messaging; use Appwrite\Event\Realtime; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Event\Webhook; use Appwrite\Extend\Exception; use Appwrite\Extend\Exception as AppwriteException; @@ -90,7 +90,7 @@ $eventDatabaseListener = function (Document $project, Document $document, Respon } }; -$usageDatabaseListener = function (string $event, Document $document, Usage $queueForUsage) { +$usageDatabaseListener = function (string $event, Document $document, StatsUsage $queueForStatsUsage) { $value = 1; if ($event === Database::EVENT_DOCUMENT_DELETE) { $value = -1; @@ -98,40 +98,40 @@ $usageDatabaseListener = function (string $event, Document $document, Usage $que switch (true) { case $document->getCollection() === 'teams': - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_TEAMS, $value); // per project break; case $document->getCollection() === 'users': - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_USERS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage + $queueForStatsUsage ->addReduce($document); } break; case $document->getCollection() === 'sessions': // sessions - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_SESSIONS, $value); //per project break; case $document->getCollection() === 'databases': // databases - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DATABASES, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage + $queueForStatsUsage ->addReduce($document); } break; case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections $parts = explode('_', $document->getCollection()); $databaseInternalId = $parts[1] ?? 0; - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_COLLECTIONS, $value) // per project ->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_COLLECTIONS), $value) ; if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage + $queueForStatsUsage ->addReduce($document); } break; @@ -139,39 +139,39 @@ $usageDatabaseListener = function (string $event, Document $document, Usage $que $parts = explode('_', $document->getCollection()); $databaseInternalId = $parts[1] ?? 0; $collectionInternalId = $parts[3] ?? 0; - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DOCUMENTS, $value) // per project ->addMetric(str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_DOCUMENTS), $value) // per database ->addMetric(str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $collectionInternalId], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS), $value); // per collection break; case $document->getCollection() === 'buckets': //buckets - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_BUCKETS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage + $queueForStatsUsage ->addReduce($document); } break; case str_starts_with($document->getCollection(), 'bucket_'): // files $parts = explode('_', $document->getCollection()); $bucketInternalId = $parts[1]; - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_FILES, $value) // per project ->addMetric(METRIC_FILES_STORAGE, $document->getAttribute('sizeOriginal') * $value) // per project ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES), $value) // per bucket ->addMetric(str_replace('{bucketInternalId}', $bucketInternalId, METRIC_BUCKET_ID_FILES_STORAGE), $document->getAttribute('sizeOriginal') * $value); // per bucket break; case $document->getCollection() === 'functions': - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_FUNCTIONS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { - $queueForUsage + $queueForStatsUsage ->addReduce($document); } break; case $document->getCollection() === 'deployments': - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_DEPLOYMENTS, $value) // per project ->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project ->addMetric(str_replace(['{resourceType}', '{resourceInternalId}'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value) // per function @@ -436,11 +436,11 @@ App::init() ->inject('queueForDeletes') ->inject('queueForDatabase') ->inject('queueForBuilds') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('dbForProject') ->inject('timelimit') ->inject('mode') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Usage $queueForUsage, Database $dbForProject, callable $timelimit, string $mode) use ($usageDatabaseListener, $eventDatabaseListener) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, StatsUsage $queueForStatsUsage, Database $dbForProject, callable $timelimit, string $mode) use ($usageDatabaseListener, $eventDatabaseListener) { $route = $utopia->getRoute(); @@ -550,8 +550,8 @@ App::init() $queueForRealtime = new Realtime(); $dbForProject - ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForUsage)) - ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForUsage)) + ->on(Database::EVENT_DOCUMENT_CREATE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForStatsUsage)) + ->on(Database::EVENT_DOCUMENT_DELETE, 'calculate-usage', fn ($event, $document) => $usageDatabaseListener($event, $document, $queueForStatsUsage)) ->on(Database::EVENT_DOCUMENT_CREATE, 'create-trigger-events', fn ($event, $document) => $eventDatabaseListener( $project, $document, @@ -688,7 +688,7 @@ App::shutdown() ->inject('user') ->inject('queueForEvents') ->inject('queueForAudits') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('queueForDeletes') ->inject('queueForDatabase') ->inject('queueForBuilds') @@ -697,7 +697,7 @@ App::shutdown() ->inject('queueForWebhooks') ->inject('queueForRealtime') ->inject('dbForProject') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Messaging $queueForMessaging, Func $queueForFunctions, Event $queueForWebhooks, Realtime $queueForRealtime, Database $dbForProject) use ($parseLabel) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, StatsUsage $queueForStatsUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Messaging $queueForMessaging, Func $queueForFunctions, Event $queueForWebhooks, Realtime $queueForRealtime, Database $dbForProject) use ($parseLabel) { $responsePayload = $response->getPayload(); @@ -854,13 +854,13 @@ App::shutdown() $fileSize = (\is_array($file['size']) && isset($file['size'][0])) ? $file['size'][0] : $file['size']; } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_NETWORK_REQUESTS, 1) ->addMetric(METRIC_NETWORK_INBOUND, $request->getSize() + $fileSize) ->addMetric(METRIC_NETWORK_OUTBOUND, $response->getSize()); } - $queueForUsage + $queueForStatsUsage ->setProject($project) ->trigger(); } diff --git a/app/init.php b/app/init.php index 8a376823ce..228625b25b 100644 --- a/app/init.php +++ b/app/init.php @@ -32,7 +32,7 @@ use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Event\Migration; use Appwrite\Event\Realtime; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Event\Webhook; use Appwrite\Extend\Exception; use Appwrite\Functions\Specification; @@ -1188,8 +1188,8 @@ App::setResource('queueForAudits', function (Connection $queue) { App::setResource('queueForFunctions', function (Connection $queue) { return new Func($queue); }, ['queue']); -App::setResource('queueForUsage', function (Connection $queue) { - return new Usage($queue); +App::setResource('queueForStatsUsage', function (Connection $queue) { + return new StatsUsage($queue); }, ['queue']); App::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index ff6da07c78..c69ab60015 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -649,10 +649,10 @@ $image = $this->getParam('image', ''); - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY - _APP_MAINTENANCE_RETENTION_SCHEDULES - appwrite-worker-usage: + appwrite-worker-stats-usage: image: /: - entrypoint: worker-usage - container_name: appwrite-worker-usage + entrypoint: worker-stats-usage + container_name: appwrite-worker-stats-usage <<: *x-logging restart: unless-stopped networks: diff --git a/app/worker.php b/app/worker.php index 9658202a41..415d6a6f27 100644 --- a/app/worker.php +++ b/app/worker.php @@ -13,7 +13,7 @@ use Appwrite\Event\Func; use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Event\Migration; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Event\StatsUsageDump; use Appwrite\Platform\Appwrite; use Swoole\Runtime; @@ -257,8 +257,8 @@ Server::setResource('timelimit', function (\Redis $redis) { Server::setResource('log', fn () => new Log()); -Server::setResource('queueForUsage', function (Connection $queue) { - return new Usage($queue); +Server::setResource('queueForStatsUsage', function (Connection $queue) { + return new StatsUsage($queue); }, ['queue']); Server::setResource('queueForStatsUsageDump', function (Connection $queue) { diff --git a/bin/worker-stats-usage b/bin/worker-stats-usage new file mode 100644 index 0000000000..2c267d805e --- /dev/null +++ b/bin/worker-stats-usage @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/worker.php stats-usage $@ \ No newline at end of file diff --git a/bin/worker-usage b/bin/worker-usage deleted file mode 100644 index e39ce8477c..0000000000 --- a/bin/worker-usage +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -php /usr/src/code/app/worker.php usage $@ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7d04871061..7b05a48cc6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -785,10 +785,10 @@ services: - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - appwrite-worker-usage: - entrypoint: worker-usage + appwrite-worker-stats-usage: + entrypoint: worker-stats-usage <<: *x-logging - container_name: appwrite-worker-usage + container_name: appwrite-worker-stats-usage image: appwrite-dev networks: - appwrite diff --git a/src/Appwrite/Event/Usage.php b/src/Appwrite/Event/StatsUsage.php similarity index 97% rename from src/Appwrite/Event/Usage.php rename to src/Appwrite/Event/StatsUsage.php index 55f6bd6311..7f54370fca 100644 --- a/src/Appwrite/Event/Usage.php +++ b/src/Appwrite/Event/StatsUsage.php @@ -6,7 +6,7 @@ use Utopia\Database\Document; use Utopia\Queue\Client; use Utopia\Queue\Connection; -class Usage extends Event +class StatsUsage extends Event { protected array $metrics = []; protected array $reduce = []; @@ -64,4 +64,4 @@ class Usage extends Event 'metrics' => $this->metrics, ]); } -} \ No newline at end of file +} diff --git a/src/Appwrite/Platform/Services/Workers.php b/src/Appwrite/Platform/Services/Workers.php index c1198231f9..4f4095aca4 100644 --- a/src/Appwrite/Platform/Services/Workers.php +++ b/src/Appwrite/Platform/Services/Workers.php @@ -12,7 +12,7 @@ use Appwrite\Platform\Workers\Mails; use Appwrite\Platform\Workers\Messaging; use Appwrite\Platform\Workers\Migrations; use Appwrite\Platform\Workers\StatsResources; -use Appwrite\Platform\Workers\Usage; +use Appwrite\Platform\Workers\StatsUsage; use Appwrite\Platform\Workers\StatsUsageDump; use Appwrite\Platform\Workers\Webhooks; use Utopia\Platform\Service; @@ -33,7 +33,7 @@ class Workers extends Service ->addAction(Messaging::getName(), new Messaging()) ->addAction(Webhooks::getName(), new Webhooks()) ->addAction(StatsUsageDump::getName(), new StatsUsageDump()) - ->addAction(Usage::getName(), new Usage()) + ->addAction(StatsUsage::getName(), new StatsUsage()) ->addAction(Migrations::getName(), new Migrations()) ->addAction(StatsResources::getName(), new StatsResources()) ; diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index 4f5d6eb694..f6e06ac0e5 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -5,7 +5,7 @@ namespace Appwrite\Platform\Workers; use Ahc\Jwt\JWT; use Appwrite\Event\Event; use Appwrite\Event\Func; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Messaging\Adapter\Realtime; use Appwrite\Utopia\Response\Model\Deployment; use Appwrite\Vcs\Comment; @@ -50,7 +50,7 @@ class Builds extends Action ->inject('dbForPlatform') ->inject('queueForEvents') ->inject('queueForFunctions') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('cache') ->inject('dbForProject') ->inject('deviceForFunctions') @@ -64,7 +64,7 @@ class Builds extends Action * @param Database $dbForPlatform * @param Event $queueForEvents * @param Func $queueForFunctions - * @param Usage $queueForUsage + * @param StatsUsage $queueForStatsUsage * @param Cache $cache * @param Database $dbForProject * @param Device $deviceForFunctions @@ -72,7 +72,7 @@ class Builds extends Action * @return void * @throws \Utopia\Database\Exception */ - public function action(Message $message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, Usage $queueForUsage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, Log $log): void + public function action(Message $message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, StatsUsage $queueForStatsUsage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, Log $log): void { $payload = $message->getPayload() ?? []; @@ -93,7 +93,7 @@ class Builds extends Action case BUILD_TYPE_RETRY: Console::info('Creating build for deployment: ' . $deployment->getId()); $github = new GitHub($cache); - $this->buildDeployment($deviceForFunctions, $queueForFunctions, $queueForEvents, $queueForUsage, $dbForPlatform, $dbForProject, $github, $project, $resource, $deployment, $template, $log); + $this->buildDeployment($deviceForFunctions, $queueForFunctions, $queueForEvents, $queueForStatsUsage, $dbForPlatform, $dbForProject, $github, $project, $resource, $deployment, $template, $log); break; default: @@ -105,7 +105,7 @@ class Builds extends Action * @param Device $deviceForFunctions * @param Func $queueForFunctions * @param Event $queueForEvents - * @param Usage $queueForUsage + * @param StatsUsage $queueForStatsUsage * @param Database $dbForPlatform * @param Database $dbForProject * @param GitHub $github @@ -118,7 +118,7 @@ class Builds extends Action * @throws \Utopia\Database\Exception * @throws Exception */ - protected function buildDeployment(Device $deviceForFunctions, Func $queueForFunctions, Event $queueForEvents, Usage $queueForUsage, Database $dbForPlatform, Database $dbForProject, GitHub $github, Document $project, Document $function, Document $deployment, Document $template, Log $log): void + protected function buildDeployment(Device $deviceForFunctions, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Database $dbForPlatform, Database $dbForProject, GitHub $github, Document $project, Document $function, Document $deployment, Document $template, Log $log): void { $executor = new Executor(System::getEnv('_APP_EXECUTOR_HOST')); @@ -706,20 +706,20 @@ class Builds extends Action /** Trigger usage queue */ if ($build->getAttribute('status') === 'ready') { - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_BUILDS_SUCCESS, 1) // per project ->addMetric(METRIC_BUILDS_COMPUTE_SUCCESS, (int)$build->getAttribute('duration', 0) * 1000) ->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_SUCCESS), 1) // per function ->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_SUCCESS), (int)$build->getAttribute('duration', 0) * 1000); } elseif ($build->getAttribute('status') === 'failed') { - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_BUILDS_FAILED, 1) // per project ->addMetric(METRIC_BUILDS_COMPUTE_FAILED, (int)$build->getAttribute('duration', 0) * 1000) ->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_FAILED), 1) // per function ->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_FAILED), (int)$build->getAttribute('duration', 0) * 1000); } - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_BUILDS, 1) // per project ->addMetric(METRIC_BUILDS_STORAGE, $build->getAttribute('size', 0)) ->addMetric(METRIC_BUILDS_COMPUTE, (int)$build->getAttribute('duration', 0) * 1000) diff --git a/src/Appwrite/Platform/Workers/Functions.php b/src/Appwrite/Platform/Workers/Functions.php index 72a3334f2f..0a7c39c02f 100644 --- a/src/Appwrite/Platform/Workers/Functions.php +++ b/src/Appwrite/Platform/Workers/Functions.php @@ -5,7 +5,7 @@ namespace Appwrite\Platform\Workers; use Ahc\Jwt\JWT; use Appwrite\Event\Event; use Appwrite\Event\Func; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Messaging\Adapter\Realtime; use Appwrite\Utopia\Response\Model\Execution; use Exception; @@ -46,13 +46,13 @@ class Functions extends Action ->inject('dbForProject') ->inject('queueForFunctions') ->inject('queueForEvents') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('log') ->inject('isResourceBlocked') - ->callback(fn (Document $project, Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, Usage $queueForUsage, Log $log, callable $isResourceBlocked) => $this->action($project, $message, $dbForProject, $queueForFunctions, $queueForEvents, $queueForUsage, $log, $isResourceBlocked)); + ->callback(fn (Document $project, Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Log $log, callable $isResourceBlocked) => $this->action($project, $message, $dbForProject, $queueForFunctions, $queueForEvents, $queueForStatsUsage, $log, $isResourceBlocked)); } - public function action(Document $project, Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, Usage $queueForUsage, Log $log, callable $isResourceBlocked): void + public function action(Document $project, Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Log $log, callable $isResourceBlocked): void { $payload = $message->getPayload() ?? []; @@ -137,7 +137,7 @@ class Functions extends Action log: $log, dbForProject: $dbForProject, queueForFunctions: $queueForFunctions, - queueForUsage: $queueForUsage, + queueForStatsUsage: $queueForStatsUsage, queueForEvents: $queueForEvents, project: $project, function: $function, @@ -177,7 +177,7 @@ class Functions extends Action log: $log, dbForProject: $dbForProject, queueForFunctions: $queueForFunctions, - queueForUsage: $queueForUsage, + queueForStatsUsage: $queueForStatsUsage, queueForEvents: $queueForEvents, project: $project, function: $function, @@ -199,7 +199,7 @@ class Functions extends Action log: $log, dbForProject: $dbForProject, queueForFunctions: $queueForFunctions, - queueForUsage: $queueForUsage, + queueForStatsUsage: $queueForStatsUsage, queueForEvents: $queueForEvents, project: $project, function: $function, @@ -284,7 +284,7 @@ class Functions extends Action * @param Log $log * @param Database $dbForProject * @param Func $queueForFunctions - * @param Usage $queueForUsage + * @param StatsUsage $queueForStatsUsage * @param Event $queueForEvents * @param Document $project * @param Document $function @@ -308,7 +308,7 @@ class Functions extends Action Log $log, Database $dbForProject, Func $queueForFunctions, - Usage $queueForUsage, + StatsUsage $queueForStatsUsage, Event $queueForEvents, Document $project, Document $function, @@ -552,7 +552,7 @@ class Functions extends Action $errorCode = $th->getCode(); } finally { /** Trigger usage queue */ - $queueForUsage + $queueForStatsUsage ->setProject($project) ->addMetric(METRIC_EXECUTIONS, 1) ->addMetric(str_replace('{functionInternalId}', $function->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS), 1) diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 7837957c5d..385cf31e78 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -2,7 +2,7 @@ namespace Appwrite\Platform\Workers; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Messaging\Status as MessageStatus; use Swoole\Runtime; use Utopia\CLI\Console; @@ -63,8 +63,8 @@ class Messaging extends Action ->inject('log') ->inject('dbForProject') ->inject('deviceForFiles') - ->inject('queueForUsage') - ->callback(fn (Message $message, Document $project, Log $log, Database $dbForProject, Device $deviceForFiles, Usage $queueForUsage) => $this->action($message, $project, $log, $dbForProject, $deviceForFiles, $queueForUsage)); + ->inject('queueForStatsUsage') + ->callback(fn (Message $message, Document $project, Log $log, Database $dbForProject, Device $deviceForFiles, StatsUsage $queueForStatsUsage) => $this->action($message, $project, $log, $dbForProject, $deviceForFiles, $queueForStatsUsage)); } /** @@ -73,7 +73,7 @@ class Messaging extends Action * @param Log $log * @param Database $dbForProject * @param Device $deviceForFiles - * @param Usage $queueForUsage + * @param StatsUsage $queueForStatsUsage * @return void * @throws \Exception */ @@ -83,7 +83,7 @@ class Messaging extends Action Log $log, Database $dbForProject, Device $deviceForFiles, - Usage $queueForUsage + StatsUsage $queueForStatsUsage ): void { Runtime::setHookFlags(SWOOLE_HOOK_ALL ^ SWOOLE_HOOK_TCP); $payload = $message->getPayload() ?? []; @@ -104,7 +104,7 @@ class Messaging extends Action case MESSAGE_SEND_TYPE_EXTERNAL: $message = $dbForProject->getDocument('messages', $payload['messageId']); - $this->sendExternalMessage($dbForProject, $message, $deviceForFiles, $project, $queueForUsage); + $this->sendExternalMessage($dbForProject, $message, $deviceForFiles, $project, $queueForStatsUsage); break; default: throw new \Exception('Unknown message type: ' . $type); @@ -116,7 +116,7 @@ class Messaging extends Action Document $message, Device $deviceForFiles, Document $project, - Usage $queueForUsage + StatsUsage $queueForStatsUsage ): void { $topicIds = $message->getAttribute('topics', []); $targetIds = $message->getAttribute('targets', []); @@ -222,8 +222,8 @@ class Messaging extends Action /** * @var array $results */ - $results = batch(\array_map(function ($providerId) use ($identifiers, &$providers, $default, $message, $dbForProject, $deviceForFiles, $project, $queueForUsage) { - return function () use ($providerId, $identifiers, &$providers, $default, $message, $dbForProject, $deviceForFiles, $project, $queueForUsage) { + $results = batch(\array_map(function ($providerId) use ($identifiers, &$providers, $default, $message, $dbForProject, $deviceForFiles, $project, $queueForStatsUsage) { + return function () use ($providerId, $identifiers, &$providers, $default, $message, $dbForProject, $deviceForFiles, $project, $queueForStatsUsage) { if (\array_key_exists($providerId, $providers)) { $provider = $providers[$providerId]; } else { @@ -250,8 +250,8 @@ class Messaging extends Action $adapter->getMaxMessagesPerRequest() ); - return batch(\array_map(function ($batch) use ($message, $provider, $adapter, $dbForProject, $deviceForFiles, $project, $queueForUsage) { - return function () use ($batch, $message, $provider, $adapter, $dbForProject, $deviceForFiles, $project, $queueForUsage) { + return batch(\array_map(function ($batch) use ($message, $provider, $adapter, $dbForProject, $deviceForFiles, $project, $queueForStatsUsage) { + return function () use ($batch, $message, $provider, $adapter, $dbForProject, $deviceForFiles, $project, $queueForStatsUsage) { $deliveredTotal = 0; $deliveryErrors = []; $messageData = clone $message; @@ -291,7 +291,7 @@ class Messaging extends Action $deliveryErrors[] = 'Failed sending to targets with error: ' . $e->getMessage(); } finally { $errorTotal = \count($deliveryErrors); - $queueForUsage + $queueForStatsUsage ->setProject($project) ->addMetric(METRIC_MESSAGES, ($deliveredTotal + $errorTotal)) ->addMetric(METRIC_MESSAGES_SENT, $deliveredTotal) diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/StatsUsage.php similarity index 99% rename from src/Appwrite/Platform/Workers/Usage.php rename to src/Appwrite/Platform/Workers/StatsUsage.php index 176a9fea2f..7ee4cb9890 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -11,7 +11,7 @@ use Utopia\Platform\Action; use Utopia\Queue\Message; use Utopia\System\System; -class Usage extends Action +class StatsUsage extends Action { private array $stats = []; private int $lastTriggeredTime = 0; @@ -21,7 +21,7 @@ class Usage extends Action public static function getName(): string { - return 'usage'; + return 'stats-usage'; } /** @@ -277,4 +277,4 @@ class Usage extends Action console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); } } -} \ No newline at end of file +} diff --git a/src/Appwrite/Platform/Workers/Webhooks.php b/src/Appwrite/Platform/Workers/Webhooks.php index a76e4f17b0..c903dafdae 100644 --- a/src/Appwrite/Platform/Workers/Webhooks.php +++ b/src/Appwrite/Platform/Workers/Webhooks.php @@ -3,7 +3,7 @@ namespace Appwrite\Platform\Workers; use Appwrite\Event\Mail; -use Appwrite\Event\Usage; +use Appwrite\Event\StatsUsage; use Appwrite\Template\Template; use Exception; use Utopia\Database\Database; @@ -35,9 +35,9 @@ class Webhooks extends Action ->inject('project') ->inject('dbForPlatform') ->inject('queueForMails') - ->inject('queueForUsage') + ->inject('queueForStatsUsage') ->inject('log') - ->callback(fn (Message $message, Document $project, Database $dbForPlatform, Mail $queueForMails, Usage $queueForUsage, Log $log) => $this->action($message, $project, $dbForPlatform, $queueForMails, $queueForUsage, $log)); + ->callback(fn (Message $message, Document $project, Database $dbForPlatform, Mail $queueForMails, StatsUsage $queueForStatsUsage, Log $log) => $this->action($message, $project, $dbForPlatform, $queueForMails, $queueForStatsUsage, $log)); } /** @@ -49,7 +49,7 @@ class Webhooks extends Action * @return void * @throws Exception */ - public function action(Message $message, Document $project, Database $dbForPlatform, Mail $queueForMails, Usage $queueForUsage, Log $log): void + public function action(Message $message, Document $project, Database $dbForPlatform, Mail $queueForMails, StatsUsage $queueForStatsUsage, Log $log): void { $this->errors = []; $payload = $message->getPayload() ?? []; @@ -66,7 +66,7 @@ class Webhooks extends Action foreach ($project->getAttribute('webhooks', []) as $webhook) { if (array_intersect($webhook->getAttribute('events', []), $events)) { - $this->execute($events, $webhookPayload, $webhook, $user, $project, $dbForPlatform, $queueForMails, $queueForUsage); + $this->execute($events, $webhookPayload, $webhook, $user, $project, $dbForPlatform, $queueForMails, $queueForStatsUsage); } } @@ -85,7 +85,7 @@ class Webhooks extends Action * @param Mail $queueForMails * @return void */ - private function execute(array $events, string $payload, Document $webhook, Document $user, Document $project, Database $dbForPlatform, Mail $queueForMails, Usage $queueForUsage): void + private function execute(array $events, string $payload, Document $webhook, Document $user, Document $project, Database $dbForPlatform, Mail $queueForMails, StatsUsage $queueForStatsUsage): void { if ($webhook->getAttribute('enabled') !== true) { return; @@ -168,7 +168,7 @@ class Webhooks extends Action $dbForPlatform->purgeCachedDocument('projects', $project->getId()); $this->errors[] = $logs; - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_WEBHOOKS_FAILED, 1) ->addMetric(str_replace('{webhookInternalId}', $webhook->getInternalId(), METRIC_WEBHOOK_ID_FAILED), 1) ; @@ -178,13 +178,13 @@ class Webhooks extends Action $webhook->setAttribute('attempts', 0); // Reset attempts on success $dbForPlatform->updateDocument('webhooks', $webhook->getId(), $webhook); $dbForPlatform->purgeCachedDocument('projects', $project->getId()); - $queueForUsage + $queueForStatsUsage ->addMetric(METRIC_WEBHOOKS_SENT, 1) ->addMetric(str_replace('{webhookInternalId}', $webhook->getInternalId(), METRIC_WEBHOOK_ID_SENT), 1) ; } - $queueForUsage + $queueForStatsUsage ->setProject($project) ->trigger(); } diff --git a/tests/resources/docker/docker-compose.yml b/tests/resources/docker/docker-compose.yml index 94d506056c..e549ac27a5 100644 --- a/tests/resources/docker/docker-compose.yml +++ b/tests/resources/docker/docker-compose.yml @@ -89,9 +89,9 @@ services: - _APP_FUNCTIONS_MEMORY_SWAP - _APP_EXECUTOR_HOST - appwrite-worker-usage: - entrypoint: worker-usage - container_name: appwrite-worker-usage + appwrite-worker-stats-usage: + entrypoint: worker-stats-usage + container_name: appwrite-worker-stats-usage build: context: . restart: unless-stopped From 6fedefdedac11b289390416785a3e5e3debe0e9d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 05:03:41 +0000 Subject: [PATCH 25/99] fix --- src/Appwrite/Platform/Workers/StatsUsage.php | 40 ++------------------ 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index 7ee4cb9890..7ffe9212b3 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -2,7 +2,7 @@ namespace Appwrite\Platform\Workers; -use Appwrite\Event\StatsUsageDump; +use Appwrite\Event\UsageDump; use Exception; use Utopia\CLI\Console; use Utopia\Database\DateTime; @@ -21,7 +21,7 @@ class StatsUsage extends Action public static function getName(): string { - return 'stats-usage'; + return 'usage'; } /** @@ -45,7 +45,7 @@ class StatsUsage extends Action /** * @param Message $message * @param callable $getProjectDB - * @param StatsUsageDump $queueForStatsUsageDump + * @param StatsUsageDump $queueForUsageDump * @return void * @throws \Utopia\Database\Exception * @throws Exception @@ -184,12 +184,8 @@ class StatsUsage extends Action $deployments = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS))); $deploymentsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE))); $builds = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS))); - $buildsSuccess = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_SUCCESS))); - $buildsFailed = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_FAILED))); $buildsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_STORAGE))); $buildsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE))); - $buildsComputeSuccess = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_SUCCESS))); - $buildsComputeFailed = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_FAILED))); $executions = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS))); $executionsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE))); @@ -214,20 +210,6 @@ class StatsUsage extends Action ]; } - if (!empty($buildsSuccess['value'])) { - $metrics[] = [ - 'key' => METRIC_BUILDS_SUCCESS, - 'value' => ($buildsSuccess['value'] * -1), - ]; - } - - if (!empty($buildsFailed['value'])) { - $metrics[] = [ - 'key' => METRIC_BUILDS_FAILED, - 'value' => ($buildsFailed['value'] * -1), - ]; - } - if (!empty($buildsStorage['value'])) { $metrics[] = [ 'key' => METRIC_BUILDS_STORAGE, @@ -242,20 +224,6 @@ class StatsUsage extends Action ]; } - if (!empty($buildsComputeSuccess['value'])) { - $metrics[] = [ - 'key' => METRIC_BUILDS_COMPUTE_SUCCESS, - 'value' => ($buildsComputeSuccess['value'] * -1), - ]; - } - - if (!empty($buildsComputeFailed['value'])) { - $metrics[] = [ - 'key' => METRIC_BUILDS_COMPUTE_FAILED, - 'value' => ($buildsComputeFailed['value'] * -1), - ]; - } - if (!empty($executions['value'])) { $metrics[] = [ 'key' => METRIC_EXECUTIONS, @@ -277,4 +245,4 @@ class StatsUsage extends Action console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); } } -} +} \ No newline at end of file From d0724812d73bd2288edfc33a5e6a092f45b7bdad Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 05:05:05 +0000 Subject: [PATCH 26/99] fix --- src/Appwrite/Platform/Workers/StatsUsage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index 7ffe9212b3..f2df08db27 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -2,7 +2,7 @@ namespace Appwrite\Platform\Workers; -use Appwrite\Event\UsageDump; +use Appwrite\Event\StatsUsageDump; use Exception; use Utopia\CLI\Console; use Utopia\Database\DateTime; From f94d1a5d8240db88974727216f15e00ec904e956 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 05:24:30 +0000 Subject: [PATCH 27/99] update compose.phtml --- app/views/install/compose.phtml | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index c69ab60015..eb2b008057 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -649,6 +649,66 @@ $image = $this->getParam('image', ''); - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY - _APP_MAINTENANCE_RETENTION_SCHEDULES + appwrite-task-stats-resources: + image: /: + container_name: appwrite-task-stats-resources + entrypoint: stats-resources + <<: *x-logging + networks: + - appwrite + volumes: + - ./app:/usr/src/code/app + - ./src:/usr/src/code/src + depends_on: + - redis + - mariadb + environment: + - _APP_ENV + - _APP_WORKER_PER_CORE + - _APP_OPENSSL_KEY_V1 + - _APP_DB_HOST + - _APP_DB_PORT + - _APP_DB_SCHEMA + - _APP_DB_USER + - _APP_DB_PASS + - _APP_REDIS_HOST + - _APP_REDIS_PORT + - _APP_REDIS_USER + - _APP_REDIS_PASS + - _APP_USAGE_STATS + - _APP_LOGGING_CONFIG + - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_DATABASE_SHARED_TABLES + - _APP_STATS_RESOURCES_INTERVAL + + appwrite-worker-stats-resources: + image: /: + entrypoint: worker-stats-resources + container_name: appwrite-worker-stats-resources + <<: *x-logging + restart: unless-stopped + networks: + - appwrite + depends_on: + - redis + - mariadb + environment: + - _APP_ENV + - _APP_WORKER_PER_CORE + - _APP_OPENSSL_KEY_V1 + - _APP_DB_HOST + - _APP_DB_PORT + - _APP_DB_SCHEMA + - _APP_DB_USER + - _APP_DB_PASS + - _APP_REDIS_HOST + - _APP_REDIS_PORT + - _APP_REDIS_USER + - _APP_REDIS_PASS + - _APP_USAGE_STATS + - _APP_LOGGING_CONFIG + - _APP_STATS_RESOURCES_INTERVAL + appwrite-worker-stats-usage: image: /: entrypoint: worker-stats-usage From da7a23403861c35f10434360ea1d284e2ba0ab84 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 05:28:45 +0000 Subject: [PATCH 28/99] update --- app/views/install/compose.phtml | 1 - docker-compose.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index eb2b008057..d8f3f649e0 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -677,7 +677,6 @@ $image = $this->getParam('image', ''); - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - _APP_STATS_RESOURCES_INTERVAL diff --git a/docker-compose.yml b/docker-compose.yml index 7b05a48cc6..a8193bdec8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -750,7 +750,6 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - _APP_STATS_RESOURCES_INTERVAL From 074f4417ffa27f978841c112c04aa8a32e486c2b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 06:24:10 +0000 Subject: [PATCH 29/99] image transformations metrics and batch writes --- app/init.php | 4 +- .../Platform/Workers/StatsResources.php | 137 ++++++++++++++---- src/Appwrite/Platform/Workers/StatsUsage.php | 2 +- 3 files changed, 110 insertions(+), 33 deletions(-) diff --git a/app/init.php b/app/init.php index 228625b25b..bdba3175e9 100644 --- a/app/init.php +++ b/app/init.php @@ -237,8 +237,6 @@ const METRIC_WEBHOOKS_SENT = 'webhooks.events.sent'; const METRIC_WEBHOOKS_FAILED = 'webhooks.events.failed'; const METRIC_WEBHOOK_ID_SENT = '{webhookInternalId}.webhooks.events.sent'; const METRIC_WEBHOOK_ID_FAILED = '{webhookInternalId}.webhooks.events.failed'; - - const METRIC_AUTH_METHOD_PHONE = 'auth.method.phone'; const METRIC_AUTH_METHOD_PHONE_COUNTRY_CODE = METRIC_AUTH_METHOD_PHONE . '.{countryCode}'; const METRIC_MESSAGES = 'messages'; @@ -269,6 +267,8 @@ const METRIC_FILES = 'files'; const METRIC_FILES_STORAGE = 'files.storage'; const METRIC_FILES_TRANSFORMATIONS = 'files.transformations'; const METRIC_BUCKET_ID_FILES_TRANSFORMATIONS = '{bucketInternalId}.files.transformations'; +const METRIC_IMAGES_TRANSFORMATIONS = 'images.transformations'; +const METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS = '{bucketInternalId}.images.transformations'; const METRIC_BUCKET_ID_FILES = '{bucketInternalId}.files'; const METRIC_BUCKET_ID_FILES_STORAGE = '{bucketInternalId}.files.storage'; const METRIC_FUNCTIONS = 'functions'; diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 4f6855a6a1..424ed306b9 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -22,11 +22,20 @@ class StatsResources extends Action 'inf' => '0000-00-00 00:00' ]; + /** + * @var array $documents + * + * Array of documents to batch write + * + */ + protected array $documents = []; + public static function getName(): string { return 'stats-resources'; } + /** * @throws Exception */ @@ -65,6 +74,9 @@ class StatsResources extends Action return; } + // Reset documents for each job + $this->documents = []; + $this->countForProject($dbForPlatform, $getLogsDB, $getProjectDB, $project); } @@ -120,7 +132,7 @@ class StatsResources extends Action ]; foreach ($metrics as $metric => $value) { - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $value); + $this->createStatsDocuments($region, $metric, $value); } try { @@ -144,6 +156,8 @@ class StatsResources extends Action call_user_func_array($this->logError, [$th, "StatsResources", "count_for_project_{$project->getId()}"]); } + $this->writeDocuments($dbForLogs, $project); + Console::info('End of count for: ' . $project->getId()); } @@ -155,18 +169,65 @@ class StatsResources extends Action $files = $dbForProject->count('bucket_' . $bucket->getInternalId()); $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $files); + $this->createStatsDocuments($region, $metric, $files); $storage = $dbForProject->sum('bucket_' . $bucket->getInternalId(), 'sizeActual'); $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $storage); + $this->createStatsDocuments($region, $metric, $storage); $totalStorage += $storage; $totalFiles += $files; }); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES, $totalFiles); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_FILES_STORAGE, $totalStorage); + $this->createStatsDocuments($region, METRIC_FILES, $totalFiles); + $this->createStatsDocuments($region, METRIC_FILES_STORAGE, $totalStorage); + } + + /** + * Need separate function to count per period data + */ + protected function countImageTransformations(Database $dbForProject, Database $dbForLogs, string $region) + { + $totalImageTransformations = 0; + $totalDailyImageTransformations = 0; + $totalHourlyImageTransformations = 0; + $this->foreachDocument($dbForProject, 'buckets', [], function ($bucket) use ($dbForProject, $dbForLogs, $region, &$totalDailyImageTransformations, &$totalHourlyImageTransformations, &$totalImageTransformations) { + $imageTransformations = $dbForProject->count('bucket_' . $bucket->getInternalId(), [ + Query::isNotNull('transformedAt') + ]); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS); + $this->createStatsDocuments($region, $metric, $imageTransformations, 'inf'); + $totalImageTransformations += $imageTransformations; + + // hourly + $time = \date($this->periods['1h'], \time()); + $start = $time; + $end = (new \DateTime($start))->format('Y-m-d H:59:59'); + $hourlyImageTransformations = $dbForProject->count('bucket_' . $bucket->getInternalId(), [ + Query::greaterThanEqual('transformedAt', $start), + Query::lessThanEqual('transformedAt', $end), + ]); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS); + $this->createStatsDocuments($region, $metric, $hourlyImageTransformations, '1h'); + $totalHourlyImageTransformations += $hourlyImageTransformations; + + // daily + $time = \date($this->periods['1d'], \time()); + $start = $time; + $end = (new \DateTime($start))->format('Y-m-d 11:59:59'); + + $dailyImageTransformations = $dbForProject->count('bucket_' . $bucket->getInternalId(), [ + Query::greaterThanEqual('transformedAt', $start), + Query::lessThanEqual('transformedAt', $end), + ]); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS); + $this->createStatsDocuments($region, $metric, $dailyImageTransformations, '1d'); + $totalDailyImageTransformations += $dailyImageTransformations; + + }); + + $this->createStatsDocuments($region, METRIC_IMAGES_TRANSFORMATIONS, $totalImageTransformations, 'inf'); + } protected function countForDatabase(Database $dbForProject, Database $dbForLogs, string $region) @@ -178,7 +239,7 @@ class StatsResources extends Action $collections = $dbForProject->count('database_' . $database->getInternalId()); $metric = str_replace('{databaseInternalId}', $database->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $collections); + $this->createStatsDocuments($region, $metric, $collections); $documents = $this->countForCollections($dbForProject, $dbForLogs, $database, $region); @@ -186,8 +247,8 @@ class StatsResources extends Action $totalCollections += $collections; }); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_COLLECTIONS, $totalCollections); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DOCUMENTS, $totalDocuments); + $this->createStatsDocuments($region, METRIC_COLLECTIONS, $totalCollections); + $this->createStatsDocuments($region, METRIC_DOCUMENTS, $totalDocuments); } protected function countForCollections(Database $dbForProject, Database $dbForLogs, Document $database, string $region): int { @@ -196,13 +257,13 @@ class StatsResources extends Action $documents = $dbForProject->count('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId()); $metric = str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$database->getInternalId(), $collection->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $documents); + $this->createStatsDocuments($region, $metric, $documents); $databaseDocuments += $documents; }); $metric = str_replace(['{databaseInternalId}'], [$database->getInternalId()], METRIC_DATABASE_ID_DOCUMENTS); - $this->createOrUpdateMetric($dbForLogs, $region, $metric, $databaseDocuments); + $this->createStatsDocuments($region, $metric, $databaseDocuments); return $databaseDocuments; } @@ -211,13 +272,13 @@ class StatsResources extends Action { $deploymentsStorage = $dbForProject->sum('deployments', 'size'); $buildsStorage = $dbForProject->sum('builds', 'size'); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS_STORAGE, $deploymentsStorage); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS_STORAGE, $buildsStorage); + $this->createStatsDocuments($region, METRIC_DEPLOYMENTS_STORAGE, $deploymentsStorage); + $this->createStatsDocuments($region, METRIC_BUILDS_STORAGE, $buildsStorage); $deployments = $dbForProject->count('deployments'); $builds = $dbForProject->count('builds'); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_DEPLOYMENTS, $deployments); - $this->createOrUpdateMetric($dbForLogs, $region, METRIC_BUILDS, $builds); + $this->createStatsDocuments($region, METRIC_DEPLOYMENTS, $deployments); + $this->createStatsDocuments($region, METRIC_BUILDS, $builds); $this->foreachDocument($dbForProject, 'functions', [], function (Document $function) use ($dbForProject, $dbForLogs, $region) { @@ -225,19 +286,19 @@ class StatsResources extends Action Query::equal('resourceInternalId', [$function->getInternalId()]), Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), ]); - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS_STORAGE), $functionDeploymentsStorage); + $this->createStatsDocuments($region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS_STORAGE), $functionDeploymentsStorage); $functionDeployments = $dbForProject->count('deployments', [ Query::equal('resourceInternalId', [$function->getInternalId()]), Query::equal('resourceType', [RESOURCE_TYPE_FUNCTIONS]), ]); - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS), $functionDeployments); + $this->createStatsDocuments($region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_DEPLOYMENTS), $functionDeployments); /** * As deployments and builds have 1-1 relationship, * the count for one should match the other */ - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS), $functionDeployments); + $this->createStatsDocuments($region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS), $functionDeployments); $functionBuildsStorage = 0; @@ -249,29 +310,45 @@ class StatsResources extends Action $functionBuildsStorage += $build->getAttribute('size', 0); }); - $this->createOrUpdateMetric($dbForLogs, $region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_STORAGE), $functionBuildsStorage); + $this->createStatsDocuments($region, str_replace(['{resourceType}','{resourceInternalId}'], [RESOURCE_TYPE_FUNCTIONS,$function->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_STORAGE), $functionBuildsStorage); }); } - protected function createOrUpdateMetric(Database $dbForLogs, string $region, string $metric, int $value) + protected function createStatsDocuments(string $region, string $metric, int $value, ?string $period = null) { - foreach ($this->periods as $period => $format) { - $time = 'inf' === $period ? null : \date($format, \time()); - $id = \md5("{$time}_{$period}_{$metric}"); - $current = $dbForLogs->getDocument('usage', $id); - if ($current->isEmpty()) { - $dbForLogs->createDocument('usage', new Document([ + if ($period === null) { + foreach ($this->periods as $period => $format) { + $time = 'inf' === $period ? null : \date($format, \time()); + $id = \md5("{$time}_{$period}_{$metric}"); + + $this->documents[] = new Document([ '$id' => $id, 'metric' => $metric, 'period' => $period, 'region' => $region, 'value' => $value, - ])); - Console::success('Usage logs created for metric: ' . $metric . ' period:'. $period); - } else { - $dbForLogs->updateDocument('usage', $id, $current->setAttribute('value', $value)); - Console::success('Usage logs updated for metric: ' . $metric . ' period:'. $period); + ]); } + } else { + $time = 'inf' === $period ? null : \date($this->periods[$period], \time()); + $id = \md5("{$time}_{$period}_{$metric}"); + $this->documents[] = new Document([ + '$id' => $id, + 'metric' => $metric, + 'period' => $period, + 'region' => $region, + 'value' => $value, + ]); } } + + protected function writeDocuments(Database $dbForLogs, Document $project): void + { + $dbForLogs->createOrUpdateDocuments( + 'stats', + $this->documents + ); + $this->documents = []; + Console::success('Stats written to logs db for project: ' . $project->getId() . '(' . $project->getInternalId() . ')'); + } } diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index f2df08db27..1bdf44d607 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -245,4 +245,4 @@ class StatsUsage extends Action console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); } } -} \ No newline at end of file +} From 6eb4d3f021754199003d24eb40d8e5d9a36f9c2a Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 06:40:49 +0000 Subject: [PATCH 30/99] reset dockerfile --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 01ad5d3fba..2bb9f80d9e 100755 --- a/Dockerfile +++ b/Dockerfile @@ -88,7 +88,9 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/worker-stats-usage && \ chmod +x /usr/local/bin/worker-stats-usage-dump && \ chmod +x /usr/local/bin/stats-resources && \ - chmod +x /usr/local/bin/worker-stats-resources + chmod +x /usr/local/bin/worker-stats-resources && \ + chmod +x /usr/local/bin/worker-usage && \ + chmod +x /usr/local/bin/worker-usage-dump # Letsencrypt Permissions RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ From 95845f8c0ea6a147dd0796451925be861fe0c0f4 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 06:42:57 +0000 Subject: [PATCH 31/99] update env name --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 58cd9c13fb..2d5a8dbbab 100644 --- a/.env +++ b/.env @@ -86,7 +86,7 @@ _APP_MAINTENANCE_RETENTION_EXECUTION=1209600 _APP_MAINTENANCE_RETENTION_ABUSE=86400 _APP_MAINTENANCE_RETENTION_AUDIT=1209600 _APP_USAGE_AGGREGATION_INTERVAL=30 -_APP_USAGE_COUNT_INTERVAL=3600 +_APP_STATS_RESOURCES_INTERVAL=3600 _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000 _APP_MAINTENANCE_RETENTION_SCHEDULES=86400 _APP_USAGE_STATS=enabled From d31a358392c83daa6b0ee020ddaa67ada1df2636 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 07:07:10 +0000 Subject: [PATCH 32/99] Temp: everything to be removed --- app/controllers/api/health.php | 4 +- app/worker.php | 15 + bin/worker-usage | 3 + bin/worker-usage-dump | 3 + docker-compose.yml | 64 +++++ src/Appwrite/Event/Event.php | 8 + src/Appwrite/Event/StatsUsage.php | 4 +- src/Appwrite/Event/Usage.php | 78 +++++ src/Appwrite/Event/UsageDump.php | 44 +++ src/Appwrite/Platform/Services/Workers.php | 8 + src/Appwrite/Platform/Workers/Usage.php | 288 +++++++++++++++++++ src/Appwrite/Platform/Workers/UsageDump.php | 301 ++++++++++++++++++++ 12 files changed, 816 insertions(+), 4 deletions(-) create mode 100644 bin/worker-usage create mode 100644 bin/worker-usage-dump create mode 100644 src/Appwrite/Event/Usage.php create mode 100644 src/Appwrite/Event/UsageDump.php create mode 100644 src/Appwrite/Platform/Workers/Usage.php create mode 100644 src/Appwrite/Platform/Workers/UsageDump.php diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index ab3551fcd9..a4f6586262 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -788,7 +788,7 @@ App::get('/v1/health/queue/usage') ->action(function (int|string $threshold, Connection $queue, Response $response) { $threshold = \intval($threshold); - $client = new Client(Event::USAGE_QUEUE_NAME, $queue); + $client = new Client(Event::STATS_USAGE_QUEUE_NAME, $queue); $size = $client->getQueueSize(); if ($size >= $threshold) { @@ -995,7 +995,7 @@ App::get('/v1/health/queue/failed/:name') Event::AUDITS_QUEUE_NAME, Event::MAILS_QUEUE_NAME, Event::FUNCTIONS_QUEUE_NAME, - Event::USAGE_QUEUE_NAME, + Event::STATS_USAGE_QUEUE_NAME, Event::STATS_USAGE_DUMP_QUEUE_NAME, Event::WEBHOOK_QUEUE_NAME, Event::CERTIFICATES_QUEUE_NAME, diff --git a/app/worker.php b/app/worker.php index 415d6a6f27..d57a2712a0 100644 --- a/app/worker.php +++ b/app/worker.php @@ -13,8 +13,12 @@ use Appwrite\Event\Func; use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Event\Migration; +/** remove */ use Appwrite\Event\StatsUsage; use Appwrite\Event\StatsUsageDump; +/** /remove */ +use Appwrite\Event\Usage; +use Appwrite\Event\UsageDump; use Appwrite\Platform\Appwrite; use Swoole\Runtime; use Utopia\Abuse\Adapters\TimeLimit\Redis as TimeLimitRedis; @@ -257,6 +261,17 @@ Server::setResource('timelimit', function (\Redis $redis) { Server::setResource('log', fn () => new Log()); +/** remove */ +Server::setResource('queueForUsage', function (Connection $queue) { + return new Usage($queue); + return new StatsUsage($queue); +}, ['queue']); + +Server::setResource('queueForUsageDump', function (Connection $queue) { + return new UsageDump($queue); + return new StatsUsageDump($queue); +}, ['queue']); +/** /remove */ Server::setResource('queueForStatsUsage', function (Connection $queue) { return new StatsUsage($queue); }, ['queue']); diff --git a/bin/worker-usage b/bin/worker-usage new file mode 100644 index 0000000000..e39ce8477c --- /dev/null +++ b/bin/worker-usage @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/worker.php usage $@ \ No newline at end of file diff --git a/bin/worker-usage-dump b/bin/worker-usage-dump new file mode 100644 index 0000000000..43ca87fcb3 --- /dev/null +++ b/bin/worker-usage-dump @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/worker.php usage-dump $@ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index a8193bdec8..4ea1408d9c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -845,7 +845,71 @@ services: - _APP_LOGGING_CONFIG - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES + + # remove + appwrite-worker-usage: + entrypoint: worker-usage + <<: *x-logging + container_name: appwrite-worker-usage + image: appwrite-dev + networks: + - appwrite + volumes: + - ./app:/usr/src/code/app + - ./src:/usr/src/code/src + depends_on: + - redis + - mariadb + environment: + - _APP_ENV + - _APP_WORKER_PER_CORE + - _APP_OPENSSL_KEY_V1 + - _APP_DB_HOST + - _APP_DB_PORT + - _APP_DB_SCHEMA + - _APP_DB_USER + - _APP_DB_PASS + - _APP_REDIS_HOST + - _APP_REDIS_PORT + - _APP_REDIS_USER + - _APP_REDIS_PASS + - _APP_USAGE_STATS + - _APP_LOGGING_CONFIG + - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_DATABASE_SHARED_TABLES + appwrite-worker-usage-dump: + entrypoint: worker-usage-dump + <<: *x-logging + container_name: appwrite-worker-usage-dump + image: appwrite-dev + networks: + - appwrite + volumes: + - ./app:/usr/src/code/app + - ./src:/usr/src/code/src + depends_on: + - redis + - mariadb + environment: + - _APP_ENV + - _APP_WORKER_PER_CORE + - _APP_OPENSSL_KEY_V1 + - _APP_DB_HOST + - _APP_DB_PORT + - _APP_DB_SCHEMA + - _APP_DB_USER + - _APP_DB_PASS + - _APP_REDIS_HOST + - _APP_REDIS_PORT + - _APP_REDIS_USER + - _APP_REDIS_PASS + - _APP_USAGE_STATS + - _APP_LOGGING_CONFIG + - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_DATABASE_SHARED_TABLES + # /remove + appwrite-task-scheduler-functions: entrypoint: schedule-functions <<: *x-logging diff --git a/src/Appwrite/Event/Event.php b/src/Appwrite/Event/Event.php index a1c5abd1d8..f6638d2cf6 100644 --- a/src/Appwrite/Event/Event.php +++ b/src/Appwrite/Event/Event.php @@ -24,12 +24,20 @@ class Event public const FUNCTIONS_QUEUE_NAME = 'v1-functions'; public const FUNCTIONS_CLASS_NAME = 'FunctionsV1'; + /** remove */ public const USAGE_QUEUE_NAME = 'v1-usage'; public const USAGE_CLASS_NAME = 'UsageV1'; + public const USAGE_DUMP_QUEUE_NAME = 'v1-usage-dump'; + public const USAGE_DUMP_CLASS_NAME = 'UsageDumpV1'; + /** /remove */ + public const STATS_RESOURCES_QUEUE_NAME = 'v1-stats-resources'; public const STATS_RESOURCES_CLASS_NAME = 'StatsResources'; + public const STATS_USAGE_QUEUE_NAME = 'v1-stats-usage'; + public const STATS_USAGE_CLASS_NAME = 'StatsUsageV1'; + public const STATS_USAGE_DUMP_QUEUE_NAME = 'v1-stats-usage-dump'; public const STATS_USAGE_DUMP_CLASS_NAME = 'StatsUsageDumpV1'; diff --git a/src/Appwrite/Event/StatsUsage.php b/src/Appwrite/Event/StatsUsage.php index 7f54370fca..a1c027f797 100644 --- a/src/Appwrite/Event/StatsUsage.php +++ b/src/Appwrite/Event/StatsUsage.php @@ -16,8 +16,8 @@ class StatsUsage extends Event parent::__construct($connection); $this - ->setQueue(Event::USAGE_QUEUE_NAME) - ->setClass(Event::USAGE_CLASS_NAME); + ->setQueue(Event::STATS_USAGE_QUEUE_NAME) + ->setClass(Event::STATS_USAGE_CLASS_NAME); } /** diff --git a/src/Appwrite/Event/Usage.php b/src/Appwrite/Event/Usage.php new file mode 100644 index 0000000000..5609859f37 --- /dev/null +++ b/src/Appwrite/Event/Usage.php @@ -0,0 +1,78 @@ +setQueue(Event::USAGE_QUEUE_NAME) + ->setClass(Event::USAGE_CLASS_NAME); + } + + /** + * Add reduce. + * + * @param Document $document + * @return self + */ + public function addReduce(Document $document): self + { + $this->reduce[] = $document; + + return $this; + } + + /** + * Add metric. + * + * @param string $key + * @param int $value + * @return self + */ + public function addMetric(string $key, int $value): self + { + + $this->metrics[] = [ + 'key' => $key, + 'value' => $value, + ]; + + return $this; + } + + /** + * Prepare the payload for the usage event. + * + * @return array + */ + protected function preparePayload(): array + { + return [ + 'project' => $this->project, + 'reduce' => $this->reduce, + 'metrics' => $this->metrics, + ]; + } + + /** + * Sends metrics to the usage worker. + * + * @return string|bool + */ + public function trigger(): string|bool + { + parent::trigger(); + $this->metrics = []; + return true; + } +} diff --git a/src/Appwrite/Event/UsageDump.php b/src/Appwrite/Event/UsageDump.php new file mode 100644 index 0000000000..6f44de4eda --- /dev/null +++ b/src/Appwrite/Event/UsageDump.php @@ -0,0 +1,44 @@ +setQueue(Event::USAGE_DUMP_QUEUE_NAME) + ->setClass(Event::USAGE_DUMP_CLASS_NAME); + } + + /** + * Add Stats. + * + * @param array $stats + * @return self + */ + public function setStats(array $stats): self + { + $this->stats = $stats; + + return $this; + } + + /** + * Prepare the payload for the usage dump event. + * + * @return array + */ + protected function preparePayload(): array + { + return [ + 'stats' => $this->stats, + ]; + } +} diff --git a/src/Appwrite/Platform/Services/Workers.php b/src/Appwrite/Platform/Services/Workers.php index 4f4095aca4..e121ee35f7 100644 --- a/src/Appwrite/Platform/Services/Workers.php +++ b/src/Appwrite/Platform/Services/Workers.php @@ -14,6 +14,10 @@ use Appwrite\Platform\Workers\Migrations; use Appwrite\Platform\Workers\StatsResources; use Appwrite\Platform\Workers\StatsUsage; use Appwrite\Platform\Workers\StatsUsageDump; +/** remove */ +use Appwrite\Platform\Workers\Usage; +use Appwrite\Platform\Workers\UsageDump; +/** /remove */ use Appwrite\Platform\Workers\Webhooks; use Utopia\Platform\Service; @@ -36,6 +40,10 @@ class Workers extends Service ->addAction(StatsUsage::getName(), new StatsUsage()) ->addAction(Migrations::getName(), new Migrations()) ->addAction(StatsResources::getName(), new StatsResources()) + /** Remove */ + ->addAction(UsageDump::getName(), new UsageDump()) + ->addAction(Usage::getName(), new Usage()) + /** /remove */ ; } } diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php new file mode 100644 index 0000000000..3f7428d0dd --- /dev/null +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -0,0 +1,288 @@ +desc('Usage worker') + ->inject('message') + ->inject('project') + ->inject('getProjectDB') + ->inject('queueForUsageDump') + ->callback([$this, 'action']); + + $this->aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); + $this->lastTriggeredTime = time(); + } + + /** + * @param Message $message + * @param Document $project + * @param callable $getProjectDB + * @param UsageDump $queueForUsageDump + * @return void + * @throws \Utopia\Database\Exception + * @throws Exception + */ + public function action(Message $message, Document $project, callable $getProjectDB, UsageDump $queueForUsageDump): void + { + $payload = $message->getPayload() ?? []; + if (empty($payload)) { + throw new Exception('Missing payload'); + } + + if (empty($project->getAttribute('database'))) { + var_dump($payload); + return; + } + + $projectId = $project->getInternalId(); + foreach ($payload['reduce'] ?? [] as $document) { + if (empty($document)) { + continue; + } + + $this->reduce( + project: $project, + document: new Document($document), + metrics: $payload['metrics'], + getProjectDB: $getProjectDB + ); + } + + + $this->stats[$projectId]['project'] = [ + '$id' => $project->getId(), + '$internalId' => $project->getInternalId(), + 'database' => $project->getAttribute('database'), + ]; + $this->stats[$projectId]['receivedAt'] = DateTime::now(); + foreach ($payload['metrics'] ?? [] as $metric) { + $this->keys++; + if (!isset($this->stats[$projectId]['keys'][$metric['key']])) { + $this->stats[$projectId]['keys'][$metric['key']] = $metric['value']; + continue; + } + + $this->stats[$projectId]['keys'][$metric['key']] += $metric['value']; + } + + // If keys crossed threshold or X time passed since the last send and there are some keys in the array ($this->stats) + if ( + $this->keys >= self::KEYS_THRESHOLD || + (time() - $this->lastTriggeredTime > $this->aggregationInterval && $this->keys > 0) + ) { + Console::warning('[' . DateTime::now() . '] Aggregated ' . $this->keys . ' keys'); + + $queueForUsageDump + ->setStats($this->stats) + ->trigger(); + + $this->stats = []; + $this->keys = 0; + $this->lastTriggeredTime = time(); + } + } + + /** + * On Documents that tied by relations like functions>deployments>build || documents>collection>database || buckets>files. + * When we remove a parent document we need to deduct his children aggregation from the project scope. + * @param Document $project + * @param Document $document + * @param array $metrics + * @param callable $getProjectDB + * @return void + */ + private function reduce(Document $project, Document $document, array &$metrics, callable $getProjectDB): void + { + $dbForProject = $getProjectDB($project); + + try { + switch (true) { + case $document->getCollection() === 'users': // users + $sessions = count($document->getAttribute(METRIC_SESSIONS, 0)); + if (!empty($sessions)) { + $metrics[] = [ + 'key' => METRIC_SESSIONS, + 'value' => ($sessions * -1), + ]; + } + break; + case $document->getCollection() === 'databases': // databases + $collections = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{databaseInternalId}', $document->getInternalId(), METRIC_DATABASE_ID_COLLECTIONS))); + $documents = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{databaseInternalId}', $document->getInternalId(), METRIC_DATABASE_ID_DOCUMENTS))); + if (!empty($collections['value'])) { + $metrics[] = [ + 'key' => METRIC_COLLECTIONS, + 'value' => ($collections['value'] * -1), + ]; + } + + if (!empty($documents['value'])) { + $metrics[] = [ + 'key' => METRIC_DOCUMENTS, + 'value' => ($documents['value'] * -1), + ]; + } + break; + case str_starts_with($document->getCollection(), 'database_') && !str_contains($document->getCollection(), 'collection'): //collections + $parts = explode('_', $document->getCollection()); + $databaseInternalId = $parts[1] ?? 0; + $documents = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{databaseInternalId}', '{collectionInternalId}'], [$databaseInternalId, $document->getInternalId()], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS))); + + if (!empty($documents['value'])) { + $metrics[] = [ + 'key' => METRIC_DOCUMENTS, + 'value' => ($documents['value'] * -1), + ]; + $metrics[] = [ + 'key' => str_replace('{databaseInternalId}', $databaseInternalId, METRIC_DATABASE_ID_DOCUMENTS), + 'value' => ($documents['value'] * -1), + ]; + } + break; + + case $document->getCollection() === 'buckets': + $files = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getInternalId(), METRIC_BUCKET_ID_FILES))); + $storage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getInternalId(), METRIC_BUCKET_ID_FILES_STORAGE))); + + if (!empty($files['value'])) { + $metrics[] = [ + 'key' => METRIC_FILES, + 'value' => ($files['value'] * -1), + ]; + } + + if (!empty($storage['value'])) { + $metrics[] = [ + 'key' => METRIC_FILES_STORAGE, + 'value' => ($storage['value'] * -1), + ]; + } + break; + + case $document->getCollection() === 'functions': + $deployments = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS))); + $deploymentsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace(['{resourceType}', '{resourceInternalId}'], ['functions', $document->getInternalId()], METRIC_FUNCTION_ID_DEPLOYMENTS_STORAGE))); + $builds = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS))); + $buildsSuccess = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_SUCCESS))); + $buildsFailed = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_FAILED))); + $buildsStorage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_STORAGE))); + $buildsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE))); + $buildsComputeSuccess = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_SUCCESS))); + $buildsComputeFailed = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_BUILDS_COMPUTE_FAILED))); + $executions = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS))); + $executionsCompute = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{functionInternalId}', $document->getInternalId(), METRIC_FUNCTION_ID_EXECUTIONS_COMPUTE))); + + if (!empty($deployments['value'])) { + $metrics[] = [ + 'key' => METRIC_DEPLOYMENTS, + 'value' => ($deployments['value'] * -1), + ]; + } + + if (!empty($deploymentsStorage['value'])) { + $metrics[] = [ + 'key' => METRIC_DEPLOYMENTS_STORAGE, + 'value' => ($deploymentsStorage['value'] * -1), + ]; + } + + if (!empty($builds['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS, + 'value' => ($builds['value'] * -1), + ]; + } + + if (!empty($buildsSuccess['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS_SUCCESS, + 'value' => ($buildsSuccess['value'] * -1), + ]; + } + + if (!empty($buildsFailed['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS_FAILED, + 'value' => ($buildsFailed['value'] * -1), + ]; + } + + if (!empty($buildsStorage['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS_STORAGE, + 'value' => ($buildsStorage['value'] * -1), + ]; + } + + if (!empty($buildsCompute['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS_COMPUTE, + 'value' => ($buildsCompute['value'] * -1), + ]; + } + + if (!empty($buildsComputeSuccess['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS_COMPUTE_SUCCESS, + 'value' => ($buildsComputeSuccess['value'] * -1), + ]; + } + + if (!empty($buildsComputeFailed['value'])) { + $metrics[] = [ + 'key' => METRIC_BUILDS_COMPUTE_FAILED, + 'value' => ($buildsComputeFailed['value'] * -1), + ]; + } + + if (!empty($executions['value'])) { + $metrics[] = [ + 'key' => METRIC_EXECUTIONS, + 'value' => ($executions['value'] * -1), + ]; + } + + if (!empty($executionsCompute['value'])) { + $metrics[] = [ + 'key' => METRIC_EXECUTIONS_COMPUTE, + 'value' => ($executionsCompute['value'] * -1), + ]; + } + break; + default: + break; + } + } catch (\Throwable $e) { + console::error("[reducer] " . " {DateTime::now()} " . " {$project->getInternalId()} " . " {$e->getMessage()}"); + } + } +} diff --git a/src/Appwrite/Platform/Workers/UsageDump.php b/src/Appwrite/Platform/Workers/UsageDump.php new file mode 100644 index 0000000000..bb1d605442 --- /dev/null +++ b/src/Appwrite/Platform/Workers/UsageDump.php @@ -0,0 +1,301 @@ + 'Y-m-d H:00', + '1d' => 'Y-m-d 00:00', + 'inf' => '0000-00-00 00:00' + ]; + + public static function getName(): string + { + return 'usage-dump'; + } + + /** + * @throws \Exception + */ + public function __construct() + { + $this + ->inject('message') + ->inject('getProjectDB') + ->callback([$this, 'action']); + } + + /** + * @param Message $message + * @param callable $getProjectDB + * @return void + * @throws Exception + * @throws \Utopia\Database\Exception + */ + public function action(Message $message, callable $getProjectDB): void + { + $payload = $message->getPayload() ?? []; + if (empty($payload)) { + throw new Exception('Missing payload'); + } + + try { + foreach ($payload['stats'] ?? [] as $stats) { + $project = new Document($stats['project'] ?? []); + $numberOfKeys = !empty($stats['keys']) ? \count($stats['keys']) : 0; + $receivedAt = $stats['receivedAt'] ?? 'NONE'; + if ($numberOfKeys === 0) { + continue; + } + + $dbForProject = $getProjectDB($project); + $projectDocuments = []; + $databaseCache = []; + $collectionSizeCache = []; + + Console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys . ' Started'); + $start = \microtime(true); + + foreach ($stats['keys'] ?? [] as $key => $value) { + if ($value == 0) { + continue; + } + + foreach ($this->periods as $period => $format) { + $time = 'inf' === $period ? null : \date($format, \time()); + $id = \md5("{$time}_{$period}_{$key}"); + + if (\str_contains($key, METRIC_DATABASES_STORAGE)) { + $this->handleDatabaseStorage( + $id, + $key, + $time, + $period, + $dbForProject, + $projectDocuments, + $databaseCache, + $collectionSizeCache + ); + continue; + } + + $projectDocuments[] = new Document([ + '$id' => $id, + 'period' => $period, + 'time' => $time, + 'metric' => $key, + 'value' => $value, + 'region' => System::getEnv('_APP_REGION', 'default'), + ]); + } + } + + $dbForProject->createOrUpdateDocumentsWithIncrease( + collection: 'stats', + attribute: 'value', + documents: $projectDocuments + ); + + $end = \microtime(true); + Console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys. ' Time: '.($end - $start).'s'); + } + } catch (\Exception $e) { + Console::error('[' . DateTime::now() . '] Error processing stats: ' . $e->getMessage()); + } + } + + private function handleDatabaseStorage( + string $id, + string $key, + ?string $time, + string $period, + Database $dbForProject, + array &$projectDocuments, + array &$databaseCache, + array &$collectionSizeCache, + ): void { + $data = \explode('.', $key); + $value = 0; + $previousValue = 0; + + try { + $previousValue = $dbForProject + ->getDocument('stats', $id) + ->getAttribute('value', 0); + } catch (\Exception) { + // No previous value + } + + switch (\count($data)) { + case METRIC_COLLECTION_LEVEL_STORAGE: + $databaseInternalId = $data[0]; + $collectionInternalId = $data[1]; + $collectionId = "database_{$databaseInternalId}_collection_{$collectionInternalId}"; + + if (!isset($collectionSizeCache[$collectionId])) { + try { + $collectionSizeCache[$collectionId] = $dbForProject->getSizeOfCollection($collectionId); + } catch (\Exception $e) { + if (!$e instanceof NotFound) { + throw $e; + } + $collectionSizeCache[$collectionId] = 0; + } + } + + $value = $collectionSizeCache[$collectionId]; + + $diff = $value - $previousValue; + if ($diff === 0) { + break; + } + + $keys = [ + $key, + \str_replace(['{databaseInternalId}'], [$data[0]], METRIC_DATABASE_ID_STORAGE), + METRIC_DATABASES_STORAGE + ]; + + foreach ($keys as $metric) { + $projectDocuments[] = $this->createStatsDocument($id, $period, $time, $metric, $diff); + } + break; + + case METRIC_DATABASE_LEVEL_STORAGE: + $databaseInternalId = $data[0]; + $databaseId = "database_{$databaseInternalId}"; + + if (!isset($databaseCache[$databaseId])) { + try { + $databaseCache[$databaseId] = $dbForProject->find($databaseId); + } catch (\Exception $e) { + if (!$e instanceof NotFound) { + throw $e; + } + $databaseCache[$databaseId] = []; + } + } + + foreach ($databaseCache[$databaseId] as $collection) { + $collectionId = "{$databaseId}_collection_{$collection->getInternalId()}"; + + if (!isset($collectionSizeCache[$collectionId])) { + try { + $collectionSizeCache[$collectionId] = $dbForProject->getSizeOfCollection($collectionId); + } catch (\Exception $e) { + if (!$e instanceof NotFound) { + throw $e; + } + $collectionSizeCache[$collectionId] = 0; + } + } + $value += $collectionSizeCache[$collectionId]; + } + + $diff = $value - $previousValue; + if ($diff === 0) { + break; + } + + $keys = [ + \str_replace(['{databaseInternalId}'], [$data[0]], METRIC_DATABASE_ID_STORAGE), + METRIC_DATABASES_STORAGE + ]; + + foreach ($keys as $metric) { + $projectDocuments[] = $this->createStatsDocument($id, $period, $time, $metric, $diff); + } + break; + + case METRIC_PROJECT_LEVEL_STORAGE: + if (!isset($databaseCache['*'])) { + try { + $databaseCache['*'] = $dbForProject->find('databases'); + } catch (\Exception $e) { + if (!$e instanceof NotFound) { + throw $e; + } + $databaseCache['*'] = []; + } + } + + foreach ($databaseCache['*'] as $database) { + $databaseId = "database_{$database->getInternalId()}"; + if (!isset($databaseCache[$databaseId])) { + try { + $databaseCache[$databaseId] = $dbForProject->find($databaseId); + } catch (\Exception $e) { + if (!$e instanceof NotFound) { + throw $e; + } + $databaseCache[$databaseId] = []; + } + } + + foreach ($databaseCache[$databaseId] as $collection) { + $collectionId = "{$databaseId}_collection_{$collection->getInternalId()}"; + + if (!isset($collectionSizeCache[$collectionId])) { + try { + $collectionSizeCache[$collectionId] = $dbForProject->getSizeOfCollection($collectionId); + } catch (\Exception $e) { + if (!$e instanceof NotFound) { + throw $e; + } + $collectionSizeCache[$collectionId] = 0; + } + } + $value += $collectionSizeCache[$collectionId]; + } + } + + $diff = $value - $previousValue; + if ($diff === 0) { + break; + } + + $keys = [ + METRIC_DATABASES_STORAGE + ]; + + foreach ($keys as $metric) { + $projectDocuments[] = $this->createStatsDocument($id, $period, $time, $metric, $diff); + } + + break; + } + } + + private function createStatsDocument( + string $id, + string $period, + ?string $time, + string $key, + int $diff, + ): Document { + return new Document([ + '$id' => $id, + 'period' => $period, + 'time' => $time, + 'metric' => $key, + 'value' => $diff, + 'region' => System::getEnv('_APP_REGION', 'default'), + ]); + } +} From 71c265d4e8feaa902c9070062ecf0deccf2711bb Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 07:12:15 +0000 Subject: [PATCH 33/99] fix wrong comment --- app/worker.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/worker.php b/app/worker.php index d57a2712a0..7168d4e439 100644 --- a/app/worker.php +++ b/app/worker.php @@ -13,12 +13,12 @@ use Appwrite\Event\Func; use Appwrite\Event\Mail; use Appwrite\Event\Messaging; use Appwrite\Event\Migration; -/** remove */ use Appwrite\Event\StatsUsage; use Appwrite\Event\StatsUsageDump; -/** /remove */ +/** remove */ use Appwrite\Event\Usage; use Appwrite\Event\UsageDump; +/** /remove */ use Appwrite\Platform\Appwrite; use Swoole\Runtime; use Utopia\Abuse\Adapters\TimeLimit\Redis as TimeLimitRedis; From 978f22b56d5a62dc203ae315a05ced8f3f7e5d19 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 30 Jan 2025 07:15:24 +0000 Subject: [PATCH 34/99] rename transformed metric --- app/init.php | 4 ++-- src/Appwrite/Platform/Workers/StatsResources.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/init.php b/app/init.php index bdba3175e9..930bae66c3 100644 --- a/app/init.php +++ b/app/init.php @@ -267,8 +267,8 @@ const METRIC_FILES = 'files'; const METRIC_FILES_STORAGE = 'files.storage'; const METRIC_FILES_TRANSFORMATIONS = 'files.transformations'; const METRIC_BUCKET_ID_FILES_TRANSFORMATIONS = '{bucketInternalId}.files.transformations'; -const METRIC_IMAGES_TRANSFORMATIONS = 'images.transformations'; -const METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS = '{bucketInternalId}.images.transformations'; +const METRIC_FILES_IMAGES_TRANSFORMED = 'files.imagesTransformed'; +const METRIC_BUCKET_ID_FILES_IMAGES_TRANSFORMED = '{bucketInternalId}.files.imagesTransformed'; const METRIC_BUCKET_ID_FILES = '{bucketInternalId}.files'; const METRIC_BUCKET_ID_FILES_STORAGE = '{bucketInternalId}.files.storage'; const METRIC_FUNCTIONS = 'functions'; diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 424ed306b9..62992bc7b3 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -195,7 +195,7 @@ class StatsResources extends Action $imageTransformations = $dbForProject->count('bucket_' . $bucket->getInternalId(), [ Query::isNotNull('transformedAt') ]); - $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_IMAGES_TRANSFORMED); $this->createStatsDocuments($region, $metric, $imageTransformations, 'inf'); $totalImageTransformations += $imageTransformations; @@ -207,7 +207,7 @@ class StatsResources extends Action Query::greaterThanEqual('transformedAt', $start), Query::lessThanEqual('transformedAt', $end), ]); - $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_IMAGES_TRANSFORMED); $this->createStatsDocuments($region, $metric, $hourlyImageTransformations, '1h'); $totalHourlyImageTransformations += $hourlyImageTransformations; @@ -220,13 +220,13 @@ class StatsResources extends Action Query::greaterThanEqual('transformedAt', $start), Query::lessThanEqual('transformedAt', $end), ]); - $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_IMAGES_TRANSFORMATIONS); + $metric = str_replace('{bucketInternalId}', $bucket->getInternalId(), METRIC_BUCKET_ID_FILES_IMAGES_TRANSFORMED); $this->createStatsDocuments($region, $metric, $dailyImageTransformations, '1d'); $totalDailyImageTransformations += $dailyImageTransformations; }); - $this->createStatsDocuments($region, METRIC_IMAGES_TRANSFORMATIONS, $totalImageTransformations, 'inf'); + $this->createStatsDocuments($region, METRIC_FILES_IMAGES_TRANSFORMED, $totalImageTransformations, 'inf'); } From 5b91b5cec17049fb7f6a7a485d27ad0e494490a0 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:10:45 +0000 Subject: [PATCH 35/99] env to configure dual write --- .env | 1 + docker-compose.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.env b/.env index 2d5a8dbbab..0b2f129f08 100644 --- a/.env +++ b/.env @@ -111,3 +111,4 @@ _APP_MESSAGE_PUSH_TEST_DSN= _APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10 _APP_PROJECT_REGIONS=default _APP_FUNCTIONS_CREATION_ABUSE_LIMIT=5000 +_APP_STATS_USAGE_DUAL_WRITING_DBS= \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 4ea1408d9c..64ae108f7b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -845,6 +845,7 @@ services: - _APP_LOGGING_CONFIG - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES + - _APP_STATS_USAGE_DUAL_WRITING_DBS # remove appwrite-worker-usage: From 5052fd8528076b3aabeb7709bdcbc8f016b8693f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:11:03 +0000 Subject: [PATCH 36/99] get latest usageDump and dual write --- .../Platform/Workers/StatsUsageDump.php | 380 ++++++++---------- 1 file changed, 175 insertions(+), 205 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index fa31691a18..d373c65a88 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -7,7 +7,6 @@ use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; -use Utopia\Database\Exception\NotFound; use Utopia\Platform\Action; use Utopia\Queue\Message; use Utopia\System\System; @@ -64,6 +63,11 @@ class StatsUsageDump extends Action '.builds.storage', ]; + /** + * @var callable + */ + protected mixed $getLogsDB; + protected array $periods = [ '1h' => 'Y-m-d H:00', '1d' => 'Y-m-d 00:00', @@ -90,59 +94,56 @@ class StatsUsageDump extends Action /** * @param Message $message * @param callable $getProjectDB + * @param callable $getLogsDB * @return void * @throws Exception * @throws \Utopia\Database\Exception */ public function action(Message $message, callable $getProjectDB, callable $getLogsDB): void { + $this->getLogsDB = $getLogsDB; $payload = $message->getPayload() ?? []; if (empty($payload)) { throw new Exception('Missing payload'); } - try { - foreach ($payload['stats'] ?? [] as $stats) { - $project = new Document($stats['project'] ?? []); - $numberOfKeys = !empty($stats['keys']) ? \count($stats['keys']) : 0; - $receivedAt = $stats['receivedAt'] ?? 'NONE'; - if ($numberOfKeys === 0) { - continue; - } + foreach ($payload['stats'] ?? [] as $stats) { + $project = new Document($stats['project'] ?? []); + + /** + * End temp bug fallback + */ + $numberOfKeys = !empty($stats['keys']) ? count($stats['keys']) : 0; + $receivedAt = $stats['receivedAt'] ?? 'NONE'; + if ($numberOfKeys === 0) { + continue; + } + + console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys); + + try { + /** @var \Utopia\Database\Database $dbForProject */ $dbForProject = $getProjectDB($project); - $dbForLogs = $getLogsDB($project); - $projectDocuments = []; - $databaseCache = []; - $collectionSizeCache = []; - - Console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys . ' Started'); - $start = \microtime(true); - foreach ($stats['keys'] ?? [] as $key => $value) { if ($value == 0) { continue; } + if (str_contains($key, METRIC_DATABASES_STORAGE)) { + try { + $this->handleDatabaseStorage($key, $dbForProject, $project); + } catch (\Exception $e) { + console::error('[' . DateTime::now() . '] failed to calculate database storage for key [' . $key . '] ' . $e->getMessage()); + } + continue; + } + foreach ($this->periods as $period => $format) { - $time = 'inf' === $period ? null : \date($format, \time()); + $time = 'inf' === $period ? null : date($format, time()); $id = \md5("{$time}_{$period}_{$key}"); - if (\str_contains($key, METRIC_DATABASES_STORAGE)) { - $this->handleDatabaseStorage( - $id, - $key, - $time, - $period, - $dbForProject, - $projectDocuments, - $databaseCache, - $collectionSizeCache - ); - continue; - } - - $projectDocuments[] = new Document([ + $document = new Document([ '$id' => $id, 'period' => $period, 'time' => $time, @@ -150,223 +151,192 @@ class StatsUsageDump extends Action 'value' => $value, 'region' => System::getEnv('_APP_REGION', 'default'), ]); + $dbForProject->createOrUpdateDocumentsWithIncrease( + 'stats', + 'value', + [$document] + ); + + $this->writeToLogsDB($project, $document); } } - - /** - * Create clone to dual write - * This is required as first request to db - * modifies the document's details like internal ID - * which will conflict in new DB - */ - $clonedProjectDoucments = []; - foreach ($projectDocuments as $document) { - if (array_key_exists($document->getAttribute('metric'), $this->skipBaseMetrics)) { - continue; - } - foreach ($this->skipParentIdMetrics as $skipMetric) { - if (str_ends_with($document->getAttribute('metric'), $skipMetric)) { - continue; - } - } - $clonedProjectDoucments[] = new Document($document->getArrayCopy()); - } - - $dbForProject->createOrUpdateDocumentsWithIncrease( - collection: 'stats', - attribute: 'value', - documents: $projectDocuments - ); - - $dbForLogs->createOrUpdateDocumentsWithIncrease( - collection: 'usage', - attribute: 'value', - documents: $clonedProjectDoucments - ); - $end = \microtime(true); - Console::log('['.DateTime::now().'] Id: '.$project->getId(). ' InternalId: '.$project->getInternalId(). ' Db: '.$project->getAttribute('database').' ReceivedAt: '.$receivedAt. ' Keys: '.$numberOfKeys. ' Time: '.($end - $start).'s'); + } catch (\Exception $e) { + console::error('[' . DateTime::now() . '] project [' . $project->getInternalId() . '] database [' . $project['database'] . '] ' . ' ' . $e->getMessage()); } - } catch (\Exception $e) { - Console::error('[' . DateTime::now() . '] Error processing stats: ' . $e->getMessage()); } } - private function handleDatabaseStorage( - string $id, - string $key, - ?string $time, - string $period, - Database $dbForProject, - array &$projectDocuments, - array &$databaseCache, - array &$collectionSizeCache, - ): void { - $data = \explode('.', $key); - $value = 0; - $previousValue = 0; + private function handleDatabaseStorage(string $key, Database $dbForProject, Document $project): void + { + $data = explode('.', $key); + $start = microtime(true); - try { - $previousValue = $dbForProject - ->getDocument('stats', $id) - ->getAttribute('value', 0); - } catch (\Exception) { - // No previous value - } + $updateMetric = function (Database $dbForProject, Document $project, int $value, string $key, string $period, string|null $time) { + $id = \md5("{$time}_{$period}_{$key}"); - switch (\count($data)) { - case METRIC_COLLECTION_LEVEL_STORAGE: - $databaseInternalId = $data[0]; - $collectionInternalId = $data[1]; - $collectionId = "database_{$databaseInternalId}_collection_{$collectionInternalId}"; + $document = new Document([ + '$id' => $id, + 'period' => $period, + 'time' => $time, + 'metric' => $key, + 'value' => $value, + 'region' => System::getEnv('_APP_REGION', 'default'), + ]); + $dbForProject->createOrUpdateDocumentsWithIncrease( + 'stats', + 'value', + [$document] + ); + $this->writeToLogsDB($project, $document); + }; + + foreach ($this->periods as $period => $format) { + $time = 'inf' === $period ? null : date($format, time()); + $id = \md5("{$time}_{$period}_{$key}"); + + $value = 0; + $previousValue = 0; + try { + $previousValue = ($dbForProject->getDocument('stats', $id))->getAttribute('value', 0); + } catch (\Exception $e) { + // No previous value + } + + switch (count($data)) { + // Collection Level + case METRIC_COLLECTION_LEVEL_STORAGE: + Console::log('[' . DateTime::now() . '] Collection Level Storage Calculation [' . $key . ']'); + $databaseInternalId = $data[0]; + $collectionInternalId = $data[1]; - if (!isset($collectionSizeCache[$collectionId])) { try { - $collectionSizeCache[$collectionId] = $dbForProject->getSizeOfCollection($collectionId); + $value = $dbForProject->getSizeOfCollection('database_' . $databaseInternalId . '_collection_' . $collectionInternalId); } catch (\Exception $e) { - if (!$e instanceof NotFound) { + // Collection not found + if ($e->getMessage() !== 'Collection not found') { throw $e; } - $collectionSizeCache[$collectionId] = 0; } - } - $value = $collectionSizeCache[$collectionId]; + // Compare with previous value + $diff = $value - $previousValue; - $diff = $value - $previousValue; - if ($diff === 0) { + if ($diff === 0) { + break; + } + + // Update Collection + $updateMetric($dbForProject, $project, $diff, $key, $period, $time); + + // Update Database + $databaseKey = str_replace(['{databaseInternalId}'], [$data[0]], METRIC_DATABASE_ID_STORAGE); + $updateMetric($dbForProject, $project, $diff, $databaseKey, $period, $time); + + // Update Project + $projectKey = METRIC_DATABASES_STORAGE; + $updateMetric($dbForProject, $project, $diff, $projectKey, $period, $time); break; - } + // Database Level + case METRIC_DATABASE_LEVEL_STORAGE: + Console::log('[' . DateTime::now() . '] Database Level Storage Calculation [' . $key . ']'); + $databaseInternalId = $data[0]; - $keys = [ - $key, - \str_replace(['{databaseInternalId}'], [$data[0]], METRIC_DATABASE_ID_STORAGE), - METRIC_DATABASES_STORAGE - ]; - - foreach ($keys as $metric) { - $projectDocuments[] = $this->createStatsDocument($id, $period, $time, $metric, $diff); - } - break; - - case METRIC_DATABASE_LEVEL_STORAGE: - $databaseInternalId = $data[0]; - $databaseId = "database_{$databaseInternalId}"; - - if (!isset($databaseCache[$databaseId])) { + $collections = []; try { - $databaseCache[$databaseId] = $dbForProject->find($databaseId); + $collections = $dbForProject->find('database_' . $databaseInternalId); } catch (\Exception $e) { - if (!$e instanceof NotFound) { + // Database not found + if ($e->getMessage() !== 'Collection not found') { throw $e; } - $databaseCache[$databaseId] = []; } - } - foreach ($databaseCache[$databaseId] as $collection) { - $collectionId = "{$databaseId}_collection_{$collection->getInternalId()}"; - - if (!isset($collectionSizeCache[$collectionId])) { + foreach ($collections as $collection) { try { - $collectionSizeCache[$collectionId] = $dbForProject->getSizeOfCollection($collectionId); + $value += $dbForProject->getSizeOfCollection('database_' . $databaseInternalId . '_collection_' . $collection->getInternalId()); } catch (\Exception $e) { - if (!$e instanceof NotFound) { + // Collection not found + if ($e->getMessage() !== 'Collection not found') { throw $e; } - $collectionSizeCache[$collectionId] = 0; } } - $value += $collectionSizeCache[$collectionId]; - } - $diff = $value - $previousValue; - if ($diff === 0) { + $diff = $value - $previousValue; + + if ($diff === 0) { + break; + } + + // Update Database + $databaseKey = str_replace(['{databaseInternalId}'], [$data[0]], METRIC_DATABASE_ID_STORAGE); + $updateMetric($dbForProject, $project, $diff, $databaseKey, $period, $time); + + // Update Project + $projectKey = METRIC_DATABASES_STORAGE; + $updateMetric($dbForProject, $project, $diff, $projectKey, $period, $time); break; - } + // Project Level + case METRIC_PROJECT_LEVEL_STORAGE: + Console::log('[' . DateTime::now() . '] Project Level Storage Calculation [' . $key . ']'); + // Get all project databases + $databases = $dbForProject->find('database'); - $keys = [ - \str_replace(['{databaseInternalId}'], [$data[0]], METRIC_DATABASE_ID_STORAGE), - METRIC_DATABASES_STORAGE - ]; + // Recalculate all databases + foreach ($databases as $database) { + $collections = $dbForProject->find('database_' . $database->getInternalId()); - foreach ($keys as $metric) { - $projectDocuments[] = $this->createStatsDocument($id, $period, $time, $metric, $diff); - } - break; - - case METRIC_PROJECT_LEVEL_STORAGE: - if (!isset($databaseCache['*'])) { - try { - $databaseCache['*'] = $dbForProject->find('databases'); - } catch (\Exception $e) { - if (!$e instanceof NotFound) { - throw $e; - } - $databaseCache['*'] = []; - } - } - - foreach ($databaseCache['*'] as $database) { - $databaseId = "database_{$database->getInternalId()}"; - if (!isset($databaseCache[$databaseId])) { - try { - $databaseCache[$databaseId] = $dbForProject->find($databaseId); - } catch (\Exception $e) { - if (!$e instanceof NotFound) { - throw $e; - } - $databaseCache[$databaseId] = []; - } - } - - foreach ($databaseCache[$databaseId] as $collection) { - $collectionId = "{$databaseId}_collection_{$collection->getInternalId()}"; - - if (!isset($collectionSizeCache[$collectionId])) { + foreach ($collections as $collection) { try { - $collectionSizeCache[$collectionId] = $dbForProject->getSizeOfCollection($collectionId); + $value += $dbForProject->getSizeOfCollection('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId()); } catch (\Exception $e) { - if (!$e instanceof NotFound) { + // Collection not found + if ($e->getMessage() !== 'Collection not found') { throw $e; } - $collectionSizeCache[$collectionId] = 0; } } - $value += $collectionSizeCache[$collectionId]; } - } - $diff = $value - $previousValue; - if ($diff === 0) { + $diff = $value - $previousValue; + + // Update Project + $projectKey = METRIC_DATABASES_STORAGE; + $updateMetric($dbForProject, $project, $diff, $projectKey, $period, $time); break; - } - - $keys = [ - METRIC_DATABASES_STORAGE - ]; - - foreach ($keys as $metric) { - $projectDocuments[] = $this->createStatsDocument($id, $period, $time, $metric, $diff); - } - - break; + } } + + $end = microtime(true); + + console::log('[' . DateTime::now() . '] DB Storage Calculation [' . $key . '] took ' . (($end - $start) * 1000) . ' milliseconds'); } - private function createStatsDocument( - string $id, - string $period, - ?string $time, - string $key, - int $diff, - ): Document { - return new Document([ - '$id' => $id, - 'period' => $period, - 'time' => $time, - 'metric' => $key, - 'value' => $diff, - 'region' => System::getEnv('_APP_REGION', 'default'), - ]); + protected function writeToLogsDB(Document $project, Document $document) + { + $databasesToDualWrite = explode(',', System::getEnv('_APP_STATS_USAGE_DUAL_WRITING_DBS', '')); + + $db = $project->getAttribute('database'); + if (!in_array($db, $databasesToDualWrite)) { + return; + } + + /** @var \Utopia\Database\Database $dbForLogs*/ + $dbForLogs = call_user_func($this->getLogsDB, $project); + + if (array_key_exists($document->getAttribute('metric'), $this->skipBaseMetrics)) { + return; + } + foreach ($this->skipParentIdMetrics as $skipMetric) { + if (str_ends_with($document->getAttribute('metric'), $skipMetric)) { + return; + } + } + + $dbForLogs->createOrUpdateDocumentsWithIncrease( + 'stats', + 'value', + [$document] + ); } } From 292e8591335be83ce4be4defd64e8e8d3cb8b628 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:17:27 +0000 Subject: [PATCH 37/99] rename metric --- app/init.php | 2 +- src/Appwrite/Platform/Workers/StatsResources.php | 2 +- src/Appwrite/Platform/Workers/StatsUsageDump.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/init.php b/app/init.php index 8c1c3c47a6..910a7f0f22 100644 --- a/app/init.php +++ b/app/init.php @@ -302,7 +302,7 @@ const METRIC_FUNCTION_ID_EXECUTIONS_MB_SECONDS = '{functionInternalId}.execution const METRIC_NETWORK_REQUESTS = 'network.requests'; const METRIC_NETWORK_INBOUND = 'network.inbound'; const METRIC_NETWORK_OUTBOUND = 'network.outbound'; -const METRIC_USERS_ACTIVE = 'users.mau'; +const METRIC_MAU = 'users.mau'; const METRIC_WEBHOOKS = 'webhooks'; const METRIC_PLATFORMS = 'platforms'; const METRIC_PROVIDERS = 'providers'; diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 62992bc7b3..fc95cfdd58 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -123,7 +123,7 @@ class StatsResources extends Action METRIC_FUNCTIONS => $functions, METRIC_TEAMS => $teams, METRIC_MESSAGES => $messages, - METRIC_USERS_ACTIVE => $usersActive, + METRIC_MAU => $usersActive, METRIC_WEBHOOKS => $webhooks, METRIC_PLATFORMS => $platforms, METRIC_PROVIDERS => $providers, diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index d373c65a88..6d3e2dd15e 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -32,7 +32,7 @@ class StatsUsageDump extends Action METRIC_FUNCTIONS => true, METRIC_TEAMS => true, METRIC_MESSAGES => true, - METRIC_USERS_ACTIVE => true, + METRIC_MAU => true, METRIC_WEBHOOKS => true, METRIC_PLATFORMS => true, METRIC_PROVIDERS => true, From 6b930129e5afd581cb14ccf44e4ccde5fa13528b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:26:00 +0000 Subject: [PATCH 38/99] add DAU and WAU metric --- app/init.php | 2 ++ src/Appwrite/Platform/Workers/StatsResources.php | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/init.php b/app/init.php index 910a7f0f22..09560e9d4a 100644 --- a/app/init.php +++ b/app/init.php @@ -303,6 +303,8 @@ const METRIC_NETWORK_REQUESTS = 'network.requests'; const METRIC_NETWORK_INBOUND = 'network.inbound'; const METRIC_NETWORK_OUTBOUND = 'network.outbound'; const METRIC_MAU = 'users.mau'; +const METRIC_DAU = 'users.dau'; +const METRIC_WAU = 'users.wau'; const METRIC_WEBHOOKS = 'webhooks'; const METRIC_PLATFORMS = 'platforms'; const METRIC_PROVIDERS = 'providers'; diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index fc95cfdd58..668d71d703 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -107,9 +107,17 @@ class StatsResources extends Action $users = $dbForProject->count('users'); $last30Days = (new \DateTime())->sub(\DateInterval::createFromDateString('30 days'))->format('Y-m-d 00:00:00'); - $usersActive = $dbForProject->count('users', [ + $usersMAU = $dbForProject->count('users', [ Query::greaterThanEqual('accessedAt', $last30Days) ]); + $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours'))->format('Y-m-d h:m:00'); + $usersDAU = $dbForProject->count('users', [ + Query::greaterThanEqual('accessedAt', $last24Hours) + ]); + $last7Days = (new \DateTime())->sub(\DateInterval::createFromDateString('7 days'))->format('Y-m-d 00:00:00'); + $usersWAU = $dbForProject->count('users', [ + Query::greaterThanEqual('accessedAt', $last7Days) + ]); $teams = $dbForProject->count('teams'); $functions = $dbForProject->count('functions'); $messages = $dbForProject->count('messages'); @@ -123,7 +131,9 @@ class StatsResources extends Action METRIC_FUNCTIONS => $functions, METRIC_TEAMS => $teams, METRIC_MESSAGES => $messages, - METRIC_MAU => $usersActive, + METRIC_MAU => $usersMAU, + METRIC_DAU => $usersDAU, + METRIC_WAU => $usersWAU, METRIC_WEBHOOKS => $webhooks, METRIC_PLATFORMS => $platforms, METRIC_PROVIDERS => $providers, From 99f23ff25a6ff9ea305c41e39b8671d2fdf64a5f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:27:36 +0000 Subject: [PATCH 39/99] refactor --- .../Platform/Tasks/StatsResources.php | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/src/Appwrite/Platform/Tasks/StatsResources.php b/src/Appwrite/Platform/Tasks/StatsResources.php index b2963ca87b..10e74a80e4 100644 --- a/src/Appwrite/Platform/Tasks/StatsResources.php +++ b/src/Appwrite/Platform/Tasks/StatsResources.php @@ -48,7 +48,7 @@ class StatsResources extends Action ->callback([$this, 'action']); } - public function action(Database $dbForPlatform, callable $logError, EventStatsResources $queueForStatsResources): void + public function action(Database $dbForPlatform, callable $logError, EventStatsResources $queue): void { $this->logError = $logError; $this->dbForPlatform = $dbForPlatform; @@ -58,35 +58,24 @@ class StatsResources extends Action Console::success('Stats resources: started'); $interval = (int) System::getEnv('_APP_STATS_RESOURCES_INTERVAL', '3600'); - Console::loop(function () use ($queueForStatsResources) { - $this->enqueueProjects($queueForStatsResources); + Console::loop(function () use ($queue) { + Authorization::disable(); + Authorization::setDefaultStatus(false); + + $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours')); + /** + * For each project that were accessed in last 24 hours + */ + $this->foreachDocument($this->dbForPlatform, 'projects', [ + Query::greaterThanEqual('accessedAt', DateTime::format($last24Hours)) + ], function ($project) use ($queue) { + $queue + ->setProject($project) + ->trigger(); + Console::success('project: ' . $project->getId() . '(' . $project->getInternalId() . ')' . ' queued'); + }); }, $interval); Console::log("Stats resources: exited"); } - - /** - * Enqueue projects for counting - * @param Database $dbForPlatform - * @param EventStatsResources $queue - * @return void - */ - protected function enqueueProjects(EventStatsResources $queue): void - { - Authorization::disable(); - Authorization::setDefaultStatus(false); - - $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours')); - /** - * For each project that were accessed in last 24 hours - */ - $this->foreachDocument($this->dbForPlatform, 'projects', [ - Query::greaterThanEqual('accessedAt', DateTime::format($last24Hours)) - ], function ($project) use ($queue) { - $queue - ->setProject($project) - ->trigger(); - Console::success('project: ' . $project->getId() . '(' . $project->getInternalId() . ')' . ' queued'); - }); - } } From 966fc47e2543bae97c48bd410ae02212310520da Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:28:44 +0000 Subject: [PATCH 40/99] fix classname --- src/Appwrite/Event/Event.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Event/Event.php b/src/Appwrite/Event/Event.php index f6638d2cf6..03ef7dd27f 100644 --- a/src/Appwrite/Event/Event.php +++ b/src/Appwrite/Event/Event.php @@ -33,7 +33,7 @@ class Event /** /remove */ public const STATS_RESOURCES_QUEUE_NAME = 'v1-stats-resources'; - public const STATS_RESOURCES_CLASS_NAME = 'StatsResources'; + public const STATS_RESOURCES_CLASS_NAME = 'StatsResourcesV1'; public const STATS_USAGE_QUEUE_NAME = 'v1-stats-usage'; public const STATS_USAGE_CLASS_NAME = 'StatsUsageV1'; From 3e778c009437a21ce3c7408b9869d2fd4e8e74a1 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:53:23 +0000 Subject: [PATCH 41/99] update environment variable --- .env | 2 +- CHANGES.md | 2 +- app/config/variables.php | 6 +++--- app/views/install/compose.phtml | 4 ++-- docker-compose.yml | 10 +++++----- .../Services/Functions/FunctionsCustomServerTest.php | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.env b/.env index 0b2f129f08..e52836f3a7 100644 --- a/.env +++ b/.env @@ -85,7 +85,7 @@ _APP_MAINTENANCE_RETENTION_CACHE=2592000 _APP_MAINTENANCE_RETENTION_EXECUTION=1209600 _APP_MAINTENANCE_RETENTION_ABUSE=86400 _APP_MAINTENANCE_RETENTION_AUDIT=1209600 -_APP_USAGE_AGGREGATION_INTERVAL=30 +_APP_STATS_AGGREGATION_INTERVAL=30 _APP_STATS_RESOURCES_INTERVAL=3600 _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000 _APP_MAINTENANCE_RETENTION_SCHEDULES=86400 diff --git a/CHANGES.md b/CHANGES.md index 62db3d525e..0e1be1698b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1687,7 +1687,7 @@ - Added new environment variables to enable error logging: - The `_APP_LOGGING_PROVIDER` variable allows you to enable the logger set the value to one of `sentry`, `raygun`, `appsignal`. - The `_APP_LOGGING_CONFIG` variable configures authentication to 3rd party error logging providers. If using Sentry, this should be 'SENTRY_API_KEY;SENTRY_APP_ID'. If using Raygun, this should be Raygun API key. If using AppSignal, this should be AppSignal API key. -- Added new environment variable `_APP_USAGE_AGGREGATION_INTERVAL` to configure the usage worker interval +- Added new environment variable `_APP_STATS_AGGREGATION_INTERVAL` to configure the usage worker interval - Added negative rotation values to file preview endpoint - Multiple responses from the Health service were changed to new (better) schema **Breaking Change** - Method `health.getAntiVirus()` has been renamed to `health.getAntivirus()` diff --git a/app/config/variables.php b/app/config/variables.php index 57810525c7..6603f246bc 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -224,7 +224,7 @@ return [ 'filter' => '' ], [ - 'name' => '_APP_USAGE_AGGREGATION_INTERVAL', + 'name' => '_APP_STATS_AGGREGATION_INTERVAL', 'description' => 'Interval value containing the number of seconds that the Appwrite usage process should wait before aggregating stats and syncing it to Database from TimeSeries data. The default value is 30 seconds. Reintroduced in 1.1.0.', 'introduction' => '1.1.0', 'default' => '30', @@ -234,7 +234,7 @@ return [ ], [ 'name' => '_APP_USAGE_TIMESERIES_INTERVAL', - 'description' => 'Deprecated since 1.1.0 use _APP_USAGE_AGGREGATION_INTERVAL instead.', + 'description' => 'Deprecated since 1.1.0 use _APP_STATS_AGGREGATION_INTERVAL instead.', 'introduction' => '1.0.0', 'default' => '30', 'required' => false, @@ -243,7 +243,7 @@ return [ ], [ 'name' => '_APP_USAGE_DATABASE_INTERVAL', - 'description' => 'Deprecated since 1.1.0 use _APP_USAGE_AGGREGATION_INTERVAL instead.', + 'description' => 'Deprecated since 1.1.0 use _APP_STATS_AGGREGATION_INTERVAL instead.', 'introduction' => '1.0.0', 'default' => '900', 'required' => false, diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index d8f3f649e0..1a1f07b8a0 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -734,7 +734,7 @@ $image = $this->getParam('image', ''); - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL appwrite-worker-stats-usage-dump: image: /: @@ -762,7 +762,7 @@ $image = $this->getParam('image', ''); - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL appwrite-task-scheduler-functions: image: /: diff --git a/docker-compose.yml b/docker-compose.yml index 64ae108f7b..7e3be3383e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -781,7 +781,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES appwrite-worker-stats-usage: @@ -812,7 +812,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES appwrite-worker-stats-usage-dump: @@ -843,7 +843,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - _APP_STATS_USAGE_DUAL_WRITING_DBS @@ -876,7 +876,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES appwrite-worker-usage-dump: @@ -907,7 +907,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_USAGE_AGGREGATION_INTERVAL + - _APP_STATS_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES # /remove diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index d8d1eb8eb5..9807e47999 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -1687,7 +1687,7 @@ class FunctionsCustomServerTest extends Scope }); // Await Aggregation - sleep(System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', 30)); + sleep(System::getEnv('_APP_STATS_AGGREGATION_INTERVAL', 30)); $this->assertEventually(function () use ($functionId) { $response = $this->getFunctionUsage($functionId, [ From 68c3aa30784781e882ffc5581fc2da257ab5d72c Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Feb 2025 09:53:29 +0000 Subject: [PATCH 42/99] update to use publisher --- src/Appwrite/Event/StatsResources.php | 17 +++-------------- src/Appwrite/Event/StatsUsage.php | 18 ++++++++---------- src/Appwrite/Event/StatsUsageDump.php | 6 +++--- src/Appwrite/Platform/Workers/StatsUsage.php | 2 +- src/Appwrite/Platform/Workers/Usage.php | 2 +- 5 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/Appwrite/Event/StatsResources.php b/src/Appwrite/Event/StatsResources.php index d08e1b2c8e..e7a3df97e0 100644 --- a/src/Appwrite/Event/StatsResources.php +++ b/src/Appwrite/Event/StatsResources.php @@ -2,13 +2,13 @@ namespace Appwrite\Event; -use Utopia\Queue\Connection; +use Utopia\Queue\Publisher; class StatsResources extends Event { - public function __construct(protected Connection $connection) + public function __construct(protected Publisher $publisher) { - parent::__construct($connection); + parent::__construct($publisher); $this ->setQueue(Event::STATS_RESOURCES_QUEUE_NAME) @@ -26,15 +26,4 @@ class StatsResources extends Event 'project' => $this->project ]; } - - /** - * Sends metrics to the usage worker. - * - * @return string|bool - */ - public function trigger(): string|bool - { - parent::trigger(); - return true; - } } diff --git a/src/Appwrite/Event/StatsUsage.php b/src/Appwrite/Event/StatsUsage.php index a1c027f797..bed25419f6 100644 --- a/src/Appwrite/Event/StatsUsage.php +++ b/src/Appwrite/Event/StatsUsage.php @@ -3,17 +3,16 @@ namespace Appwrite\Event; use Utopia\Database\Document; -use Utopia\Queue\Client; -use Utopia\Queue\Connection; +use Utopia\Queue\Publisher; class StatsUsage extends Event { protected array $metrics = []; protected array $reduce = []; - public function __construct(protected Connection $connection) + public function __construct(protected Publisher $publisher) { - parent::__construct($connection); + parent::__construct($publisher); $this ->setQueue(Event::STATS_USAGE_QUEUE_NAME) @@ -51,17 +50,16 @@ class StatsUsage extends Event } /** - * Sends metrics to the usage worker. + * Prepare the payload for the event * - * @return string|bool + * @return array */ - public function trigger(): string|bool + protected function preparePayload(): array { - $client = new Client($this->queue, $this->connection); - return $client->enqueue([ + return [ 'project' => $this->getProject(), 'reduce' => $this->reduce, 'metrics' => $this->metrics, - ]); + ]; } } diff --git a/src/Appwrite/Event/StatsUsageDump.php b/src/Appwrite/Event/StatsUsageDump.php index 3cd38eca92..0573a88040 100644 --- a/src/Appwrite/Event/StatsUsageDump.php +++ b/src/Appwrite/Event/StatsUsageDump.php @@ -2,15 +2,15 @@ namespace Appwrite\Event; -use Utopia\Queue\Connection; +use Utopia\Queue\Publisher; class StatsUsageDump extends Event { protected array $stats; - public function __construct(protected Connection $connection) + public function __construct(protected Publisher $publisher) { - parent::__construct($connection); + parent::__construct($publisher); $this ->setQueue(Event::STATS_USAGE_DUMP_QUEUE_NAME) diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index 1bdf44d607..7289d01b44 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -58,7 +58,7 @@ class StatsUsage extends Action } //Todo Figure out way to preserve keys when the container is being recreated @shimonewman - $aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); + $aggregationInterval = (int) System::getEnv('_APP_STATS_AGGREGATION_INTERVAL', '20'); $project = new Document($payload['project'] ?? []); $projectId = $project->getInternalId(); foreach ($payload['reduce'] ?? [] as $document) { diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 3687eeab67..1380d223df 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -41,7 +41,7 @@ class Usage extends Action $this->action($message, $project, $getProjectDB, $queueForUsageDump); }); - $this->aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); + $this->aggregationInterval = (int) System::getEnv('_APP_STATS_AGGREGATION_INTERVAL', '20'); $this->lastTriggeredTime = time(); } From 87b3f535bdfc40a81c797b35738651d2b4b2c09d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 03:36:53 +0000 Subject: [PATCH 43/99] fix renaming --- app/controllers/api/health.php | 4 ++-- ...{get-queue-usage-dump.md => get-queue-stats-usage-dump.md} | 0 .../health/{get-queue-usage.md => get-queue-stats-usage.md} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/references/health/{get-queue-usage-dump.md => get-queue-stats-usage-dump.md} (100%) rename docs/references/health/{get-queue-usage.md => get-queue-stats-usage.md} (100%) diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 55e17e7cd6..213236cccc 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -692,7 +692,7 @@ App::get('/v1/health/queue/functions') $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); }, ['response']); -App::get('/v1/health/queue/usage') +App::get('/v1/health/queue/stats-usage') ->desc('Get usage queue') ->groups(['api', 'health']) ->label('scope', 'health.read') @@ -700,7 +700,7 @@ App::get('/v1/health/queue/usage') auth: [AuthType::KEY], namespace: 'health', name: 'getQueueUsage', - description: '/docs/references/health/get-queue-usage.md', + description: '/docs/references/health/get-queue-stats-usage.md', responses: [ new SDKResponse( code: Response::STATUS_CODE_OK, diff --git a/docs/references/health/get-queue-usage-dump.md b/docs/references/health/get-queue-stats-usage-dump.md similarity index 100% rename from docs/references/health/get-queue-usage-dump.md rename to docs/references/health/get-queue-stats-usage-dump.md diff --git a/docs/references/health/get-queue-usage.md b/docs/references/health/get-queue-stats-usage.md similarity index 100% rename from docs/references/health/get-queue-usage.md rename to docs/references/health/get-queue-stats-usage.md From 89aa61b17cdcca4759c94b2b7d51156dc7ee7aa2 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 03:37:01 +0000 Subject: [PATCH 44/99] fix duplicate constant --- src/Appwrite/Platform/Workers/StatsUsageDump.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index 6d3e2dd15e..70b95a117f 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -11,12 +11,12 @@ use Utopia\Platform\Action; use Utopia\Queue\Message; use Utopia\System\System; -const METRIC_COLLECTION_LEVEL_STORAGE = 4; -const METRIC_DATABASE_LEVEL_STORAGE = 3; -const METRIC_PROJECT_LEVEL_STORAGE = 2; class StatsUsageDump extends Action { + const METRIC_COLLECTION_LEVEL_STORAGE = 4; + const METRIC_DATABASE_LEVEL_STORAGE = 3; + const METRIC_PROJECT_LEVEL_STORAGE = 2; protected array $stats = []; /** @@ -204,7 +204,7 @@ class StatsUsageDump extends Action switch (count($data)) { // Collection Level - case METRIC_COLLECTION_LEVEL_STORAGE: + case self::METRIC_COLLECTION_LEVEL_STORAGE: Console::log('[' . DateTime::now() . '] Collection Level Storage Calculation [' . $key . ']'); $databaseInternalId = $data[0]; $collectionInternalId = $data[1]; @@ -237,7 +237,7 @@ class StatsUsageDump extends Action $updateMetric($dbForProject, $project, $diff, $projectKey, $period, $time); break; // Database Level - case METRIC_DATABASE_LEVEL_STORAGE: + case self::METRIC_DATABASE_LEVEL_STORAGE: Console::log('[' . DateTime::now() . '] Database Level Storage Calculation [' . $key . ']'); $databaseInternalId = $data[0]; @@ -277,7 +277,7 @@ class StatsUsageDump extends Action $updateMetric($dbForProject, $project, $diff, $projectKey, $period, $time); break; // Project Level - case METRIC_PROJECT_LEVEL_STORAGE: + case self::METRIC_PROJECT_LEVEL_STORAGE: Console::log('[' . DateTime::now() . '] Project Level Storage Calculation [' . $key . ']'); // Get all project databases $databases = $dbForProject->find('database'); From 8da5bfccb689cd5b416d8874e58e8da05562c89a Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 03:58:46 +0000 Subject: [PATCH 45/99] fix format and test --- src/Appwrite/Platform/Tasks/StatsResources.php | 2 +- src/Appwrite/Platform/Workers/StatsUsageDump.php | 7 +++---- tests/e2e/Services/Health/HealthCustomServerTest.php | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Appwrite/Platform/Tasks/StatsResources.php b/src/Appwrite/Platform/Tasks/StatsResources.php index 10e74a80e4..ac3b9ead73 100644 --- a/src/Appwrite/Platform/Tasks/StatsResources.php +++ b/src/Appwrite/Platform/Tasks/StatsResources.php @@ -61,7 +61,7 @@ class StatsResources extends Action Console::loop(function () use ($queue) { Authorization::disable(); Authorization::setDefaultStatus(false); - + $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours')); /** * For each project that were accessed in last 24 hours diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index 70b95a117f..eeb73dd378 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -11,12 +11,11 @@ use Utopia\Platform\Action; use Utopia\Queue\Message; use Utopia\System\System; - class StatsUsageDump extends Action { - const METRIC_COLLECTION_LEVEL_STORAGE = 4; - const METRIC_DATABASE_LEVEL_STORAGE = 3; - const METRIC_PROJECT_LEVEL_STORAGE = 2; + public const METRIC_COLLECTION_LEVEL_STORAGE = 4; + public const METRIC_DATABASE_LEVEL_STORAGE = 3; + public const METRIC_PROJECT_LEVEL_STORAGE = 2; protected array $stats = []; /** diff --git a/tests/e2e/Services/Health/HealthCustomServerTest.php b/tests/e2e/Services/Health/HealthCustomServerTest.php index 42039c7e10..831916e043 100644 --- a/tests/e2e/Services/Health/HealthCustomServerTest.php +++ b/tests/e2e/Services/Health/HealthCustomServerTest.php @@ -499,7 +499,7 @@ class HealthCustomServerTest extends Scope /** * Test for SUCCESS */ - $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage', array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/health/queue/stats-usage', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); @@ -511,7 +511,7 @@ class HealthCustomServerTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage?threshold=0', array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/health/queue/stats-usage?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); From c3495dde358c617304a22e04f20607ca1ae77559 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 04:17:49 +0000 Subject: [PATCH 46/99] fix key --- src/Appwrite/Platform/Workers/StatsUsage.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index 7289d01b44..68ef966f07 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -21,7 +21,7 @@ class StatsUsage extends Action public static function getName(): string { - return 'usage'; + return 'stats-usage'; } /** @@ -31,13 +31,11 @@ class StatsUsage extends Action { $this - ->desc('Usage worker') - ->inject('message') - ->inject('getProjectDB') - ->inject('queueForStatsUsageDump') - ->callback(function (Message $message, callable $getProjectDB, StatsUsageDump $queueForStatsUsageDump) { - $this->action($message, $getProjectDB, $queueForStatsUsageDump); - }); + ->desc('Stats usage worker') + ->inject('message') + ->inject('getProjectDB') + ->inject('queueForStatsUsageDump') + ->callback([$this, 'action']); $this->lastTriggeredTime = time(); } From 2efe1ed9dc78e044c6df1a7e3867e52643db40ab Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 04:24:04 +0000 Subject: [PATCH 47/99] new health endpoint --- app/controllers/api/health.php | 34 ++++++++++++++++++- .../health/get-queue-stats-resources.md | 1 + 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 docs/references/health/get-queue-stats-resources.md diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 213236cccc..aae1faffee 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -692,8 +692,40 @@ App::get('/v1/health/queue/functions') $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); }, ['response']); +App::get('/v1/health/queue/stats-resources') + ->desc('Get stats resources queue') + ->groups(['api', 'health']) + ->label('scope', 'health.read') + ->label('sdk', new Method( + auth: [AuthType::KEY], + namespace: 'health', + name: 'getQueueStatsResources', + description: '/docs/references/health/get-queue-stats-resources.md', + responses: [ + new SDKResponse( + code: Response::STATUS_CODE_OK, + model: Response::MODEL_HEALTH_QUEUE, + ) + ], + contentType: ContentType::JSON + )) + ->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true) + ->inject('publisher') + ->inject('response') + ->action(function (int|string $threshold, Publisher $publisher, Response $response) { + $threshold = \intval($threshold); + + $size = $publisher->getQueueSize(new Queue(Event::STATS_USAGE_QUEUE_NAME)); + + if ($size >= $threshold) { + throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); + } + + $response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE); + }); + App::get('/v1/health/queue/stats-usage') - ->desc('Get usage queue') + ->desc('Get stats usage queue') ->groups(['api', 'health']) ->label('scope', 'health.read') ->label('sdk', new Method( diff --git a/docs/references/health/get-queue-stats-resources.md b/docs/references/health/get-queue-stats-resources.md new file mode 100644 index 0000000000..5221327467 --- /dev/null +++ b/docs/references/health/get-queue-stats-resources.md @@ -0,0 +1 @@ +Get the number of metrics that are waiting to be processed in the Appwrite stats resources queue. \ No newline at end of file From ae9d3f4703dc79b4295d84220612b48cf347b877 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 04:40:01 +0000 Subject: [PATCH 48/99] fix dual writing --- .env | 2 +- src/Appwrite/Platform/Workers/StatsUsageDump.php | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.env b/.env index e52836f3a7..2e4b5fa5c7 100644 --- a/.env +++ b/.env @@ -111,4 +111,4 @@ _APP_MESSAGE_PUSH_TEST_DSN= _APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10 _APP_PROJECT_REGIONS=default _APP_FUNCTIONS_CREATION_ABUSE_LIMIT=5000 -_APP_STATS_USAGE_DUAL_WRITING_DBS= \ No newline at end of file +_APP_STATS_USAGE_DUAL_WRITING_DBS=database_db_main \ No newline at end of file diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index eeb73dd378..1b5ec10151 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -150,13 +150,14 @@ class StatsUsageDump extends Action 'value' => $value, 'region' => System::getEnv('_APP_REGION', 'default'), ]); + $documentClone = new Document($document->getArrayCopy()); $dbForProject->createOrUpdateDocumentsWithIncrease( 'stats', 'value', [$document] ); - $this->writeToLogsDB($project, $document); + $this->writeToLogsDB($project, $documentClone); } } } catch (\Exception $e) { @@ -181,12 +182,13 @@ class StatsUsageDump extends Action 'value' => $value, 'region' => System::getEnv('_APP_REGION', 'default'), ]); + $documentClone = new Document($document->getArrayCopy()); $dbForProject->createOrUpdateDocumentsWithIncrease( 'stats', 'value', [$document] ); - $this->writeToLogsDB($project, $document); + $this->writeToLogsDB($project, $documentClone); }; foreach ($this->periods as $period => $format) { @@ -337,5 +339,6 @@ class StatsUsageDump extends Action 'value', [$document] ); + Console::success('Usage logs pushed to Logs DB'); } } From c27c3499aa420dd8e33392ab4876992ddb853f0a Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 04:48:40 +0000 Subject: [PATCH 49/99] fix endpoint and add test --- app/controllers/api/health.php | 2 +- .../Health/HealthCustomServerTest.php | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index aae1faffee..1551b7aca7 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -715,7 +715,7 @@ App::get('/v1/health/queue/stats-resources') ->action(function (int|string $threshold, Publisher $publisher, Response $response) { $threshold = \intval($threshold); - $size = $publisher->getQueueSize(new Queue(Event::STATS_USAGE_QUEUE_NAME)); + $size = $publisher->getQueueSize(new Queue(Event::STATS_RESOURCES_QUEUE_NAME)); if ($size >= $threshold) { throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}."); diff --git a/tests/e2e/Services/Health/HealthCustomServerTest.php b/tests/e2e/Services/Health/HealthCustomServerTest.php index 831916e043..04b1408cd0 100644 --- a/tests/e2e/Services/Health/HealthCustomServerTest.php +++ b/tests/e2e/Services/Health/HealthCustomServerTest.php @@ -494,6 +494,30 @@ class HealthCustomServerTest extends Scope return []; } + public function testStatsResources() + { + /** + * Test for SUCCESS + */ + $response = $this->client->call(Client::METHOD_GET, '/health/queue/stats-resources', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertIsInt($response['body']['size']); + $this->assertLessThan(100, $response['body']['size']); + + /** + * Test for FAILURE + */ + $response = $this->client->call(Client::METHOD_GET, '/health/queue/stats-resources?threshold=0', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + $this->assertEquals(503, $response['headers']['status-code']); + } + public function testUsageSuccess() { /** From c48146b699f0aebf95938b8c9b0d98321044f671 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 06:05:53 +0000 Subject: [PATCH 50/99] fix builds worker --- src/Appwrite/Platform/Workers/Builds.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index f6e06ac0e5..e7cbbd5088 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -55,7 +55,7 @@ class Builds extends Action ->inject('dbForProject') ->inject('deviceForFunctions') ->inject('log') - ->callback(fn ($message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, Usage $usage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, Log $log) => $this->action($message, $project, $dbForPlatform, $queueForEvents, $queueForFunctions, $usage, $cache, $dbForProject, $deviceForFunctions, $log)); + ->callback(fn ($message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, StatsUsage $usage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, Log $log) => $this->action($message, $project, $dbForPlatform, $queueForEvents, $queueForFunctions, $usage, $cache, $dbForProject, $deviceForFunctions, $log)); } /** From f6b2d9d937faa670a775778e0c3ac8e01a7e60b7 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 07:02:07 +0000 Subject: [PATCH 51/99] remove old collections - we only need it in production temporarily --- docker-compose.yml | 64 ---------------------------------------------- 1 file changed, 64 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7e3be3383e..2603e707e8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -847,70 +847,6 @@ services: - _APP_DATABASE_SHARED_TABLES - _APP_STATS_USAGE_DUAL_WRITING_DBS - # remove - appwrite-worker-usage: - entrypoint: worker-usage - <<: *x-logging - container_name: appwrite-worker-usage - image: appwrite-dev - networks: - - appwrite - volumes: - - ./app:/usr/src/code/app - - ./src:/usr/src/code/src - depends_on: - - redis - - mariadb - environment: - - _APP_ENV - - _APP_WORKER_PER_CORE - - _APP_OPENSSL_KEY_V1 - - _APP_DB_HOST - - _APP_DB_PORT - - _APP_DB_SCHEMA - - _APP_DB_USER - - _APP_DB_PASS - - _APP_REDIS_HOST - - _APP_REDIS_PORT - - _APP_REDIS_USER - - _APP_REDIS_PASS - - _APP_USAGE_STATS - - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL - - _APP_DATABASE_SHARED_TABLES - - appwrite-worker-usage-dump: - entrypoint: worker-usage-dump - <<: *x-logging - container_name: appwrite-worker-usage-dump - image: appwrite-dev - networks: - - appwrite - volumes: - - ./app:/usr/src/code/app - - ./src:/usr/src/code/src - depends_on: - - redis - - mariadb - environment: - - _APP_ENV - - _APP_WORKER_PER_CORE - - _APP_OPENSSL_KEY_V1 - - _APP_DB_HOST - - _APP_DB_PORT - - _APP_DB_SCHEMA - - _APP_DB_USER - - _APP_DB_PASS - - _APP_REDIS_HOST - - _APP_REDIS_PORT - - _APP_REDIS_USER - - _APP_REDIS_PASS - - _APP_USAGE_STATS - - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL - - _APP_DATABASE_SHARED_TABLES - # /remove - appwrite-task-scheduler-functions: entrypoint: schedule-functions <<: *x-logging From cd4517755851a38313a9c7a790d276707d88c51e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 6 Feb 2025 08:06:15 +0000 Subject: [PATCH 52/99] fix pool empty --- src/Appwrite/Platform/Workers/StatsUsage.php | 2 +- .../Platform/Workers/StatsUsageDump.php | 31 +++++++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index 68ef966f07..f0f7d99b03 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -43,7 +43,7 @@ class StatsUsage extends Action /** * @param Message $message * @param callable $getProjectDB - * @param StatsUsageDump $queueForUsageDump + * @param StatsUsageDump $queueForStatsUsageDump * @return void * @throws \Utopia\Database\Exception * @throws Exception diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index 1b5ec10151..a1b776b720 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -9,6 +9,7 @@ use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Platform\Action; use Utopia\Queue\Message; +use Utopia\Registry\Registry; use Utopia\System\System; class StatsUsageDump extends Action @@ -18,6 +19,8 @@ class StatsUsageDump extends Action public const METRIC_PROJECT_LEVEL_STORAGE = 2; protected array $stats = []; + protected Registry $register; + /** * Metrics to skip writing to logsDB * As these metrics are calculated separately @@ -87,6 +90,7 @@ class StatsUsageDump extends Action ->inject('message') ->inject('getProjectDB') ->inject('getLogsDB') + ->inject('register') ->callback([$this, 'action']); } @@ -98,9 +102,10 @@ class StatsUsageDump extends Action * @throws Exception * @throws \Utopia\Database\Exception */ - public function action(Message $message, callable $getProjectDB, callable $getLogsDB): void + public function action(Message $message, callable $getProjectDB, callable $getLogsDB, Registry $register): void { $this->getLogsDB = $getLogsDB; + $this->register = $register; $payload = $message->getPayload() ?? []; if (empty($payload)) { throw new Exception('Missing payload'); @@ -322,9 +327,6 @@ class StatsUsageDump extends Action return; } - /** @var \Utopia\Database\Database $dbForLogs*/ - $dbForLogs = call_user_func($this->getLogsDB, $project); - if (array_key_exists($document->getAttribute('metric'), $this->skipBaseMetrics)) { return; } @@ -334,11 +336,20 @@ class StatsUsageDump extends Action } } - $dbForLogs->createOrUpdateDocumentsWithIncrease( - 'stats', - 'value', - [$document] - ); - Console::success('Usage logs pushed to Logs DB'); + /** @var \Utopia\Database\Database $dbForLogs*/ + $dbForLogs = call_user_func($this->getLogsDB, $project); + + try { + $dbForLogs->createOrUpdateDocumentsWithIncrease( + 'stats', + 'value', + [$document] + ); + Console::success('Usage logs pushed to Logs DB'); + } catch (\Throwable $th) { + Console::error($th->getMessage()); + } + + $this->register->get('pools')->get('logs')->reclaim(); } } From 2af026eabeec73df83abd26f91527368c4c4032b Mon Sep 17 00:00:00 2001 From: "Luke B. Silver" <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 09:51:27 +0000 Subject: [PATCH 53/99] Revert "feat: custom app schemes" --- app/config/specs/open-api3-1.6.x-client.json | 56 +- app/config/specs/open-api3-1.6.x-console.json | 546 +++++++++-------- app/config/specs/open-api3-1.6.x-server.json | 367 +++++++----- app/config/specs/open-api3-latest-client.json | 56 +- .../specs/open-api3-latest-console.json | 546 +++++++++-------- app/config/specs/open-api3-latest-server.json | 367 +++++++----- app/config/specs/swagger2-1.6.x-client.json | 56 +- app/config/specs/swagger2-1.6.x-console.json | 548 ++++++++++-------- app/config/specs/swagger2-1.6.x-server.json | 369 +++++++----- app/config/specs/swagger2-latest-client.json | 56 +- app/config/specs/swagger2-latest-console.json | 548 ++++++++++-------- app/config/specs/swagger2-latest-server.json | 369 +++++++----- app/controllers/api/account.php | 16 +- app/controllers/api/projects.php | 2 +- app/controllers/api/teams.php | 4 +- app/controllers/api/vcs.php | 4 +- app/controllers/general.php | 9 +- app/controllers/mock.php | 6 +- app/init.php | 80 +-- src/Appwrite/GraphQL/Types/Mapper.php | 1 - src/Appwrite/Network/Validator/Redirect.php | 86 --- .../Specification/Format/OpenAPI3.php | 1 - .../Specification/Format/Swagger2.php | 1 - .../Utopia/Response/Model/Platform.php | 2 +- .../unit/Network/Validators/RedirectTest.php | 43 -- 25 files changed, 2207 insertions(+), 1932 deletions(-) delete mode 100644 src/Appwrite/Network/Validator/Redirect.php delete mode 100644 tests/unit/Network/Validators/RedirectTest.php diff --git a/app/config/specs/open-api3-1.6.x-client.json b/app/config/specs/open-api3-1.6.x-client.json index db563a6acf..820b1f55e0 100644 --- a/app/config/specs/open-api3-1.6.x-client.json +++ b/app/config/specs/open-api3-1.6.x-client.json @@ -4761,7 +4761,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -4846,7 +4846,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -4960,7 +4960,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5033,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5084,7 +5084,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5543,7 +5543,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5625,7 +5625,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5699,7 +5699,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -5784,7 +5784,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -5881,7 +5881,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -5952,7 +5952,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6040,7 +6040,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6106,7 +6106,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6172,7 +6172,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6388,7 +6388,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6461,7 +6461,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6536,7 +6536,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6620,7 +6620,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6681,7 +6681,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6754,7 +6754,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -6817,7 +6817,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -6902,7 +6902,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7012,7 +7012,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7083,7 +7083,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7169,7 +7169,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7242,7 +7242,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7339,7 +7339,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7399,7 +7399,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-1.6.x-console.json b/app/config/specs/open-api3-1.6.x-console.json index 4c93f3d184..7f57dfc437 100644 --- a/app/config/specs/open-api3-1.6.x-console.json +++ b/app/config/specs/open-api3-1.6.x-console.json @@ -4293,7 +4293,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4359,7 +4359,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -8986,7 +8986,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9058,7 +9058,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9304,7 +9304,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9352,7 +9352,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9401,7 +9401,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9500,7 +9500,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9559,7 +9559,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9630,7 +9630,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9688,7 +9688,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9911,7 +9911,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9971,7 +9971,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10053,7 +10053,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10148,7 +10148,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10216,7 +10216,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10277,7 +10277,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10340,7 +10340,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10424,7 +10424,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10487,7 +10487,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10559,7 +10559,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10644,7 +10644,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10758,7 +10758,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10822,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10892,7 +10892,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -10973,7 +10973,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11031,7 +11031,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11116,7 +11116,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11184,7 +11184,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11269,7 +11269,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11339,7 +11339,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11390,7 +11390,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11489,7 +11489,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11585,7 +11585,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11692,7 +11692,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11718,6 +11718,54 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11740,7 +11788,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11801,7 +11849,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11862,7 +11910,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11934,7 +11982,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11995,7 +12043,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12082,7 +12130,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12143,7 +12191,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12204,7 +12252,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12265,7 +12313,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12326,7 +12374,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12387,7 +12435,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12448,7 +12496,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12509,7 +12557,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12570,7 +12618,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12618,7 +12666,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12666,7 +12714,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13122,7 +13170,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13197,7 +13245,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13340,7 +13388,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13533,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13658,7 +13706,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13835,7 +13883,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13943,7 +13991,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14054,7 +14102,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14106,7 +14154,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14167,7 +14215,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14241,7 +14289,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14315,7 +14363,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14390,7 +14438,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14494,7 +14542,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14601,7 +14649,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14685,7 +14733,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14772,7 +14820,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14886,7 +14934,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15003,7 +15051,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15097,7 +15145,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15194,7 +15242,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15298,7 +15346,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15405,7 +15453,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15547,7 +15595,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15691,7 +15739,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15785,7 +15833,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15882,7 +15930,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15976,7 +16024,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16073,7 +16121,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16167,7 +16215,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16264,7 +16312,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16358,7 +16406,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16455,7 +16503,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16555,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16568,7 +16616,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16642,7 +16690,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16716,7 +16764,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16789,7 +16837,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16871,7 +16919,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16930,7 +16978,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17006,7 +17054,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17067,7 +17115,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17141,7 +17189,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17224,7 +17272,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17313,7 +17361,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17375,7 +17423,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17449,7 +17497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17522,7 +17570,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -17609,7 +17657,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -17701,7 +17749,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -17776,7 +17824,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -17847,7 +17895,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -17957,7 +18005,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18089,7 +18137,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18193,7 +18241,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18316,7 +18364,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18373,7 +18421,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18423,7 +18471,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18482,7 +18530,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -18569,7 +18617,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -18614,7 +18662,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -18686,7 +18734,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -18743,7 +18791,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -18817,7 +18865,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -18876,7 +18924,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -18947,7 +18995,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19081,7 +19129,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19138,7 +19186,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19252,7 +19300,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19311,7 +19359,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19402,7 +19450,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19480,7 +19528,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -19558,7 +19606,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -19636,7 +19684,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -19714,7 +19762,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -19804,7 +19852,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19885,7 +19933,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -19963,7 +20011,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20041,7 +20089,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20167,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20197,7 +20245,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20296,7 +20344,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20382,7 +20430,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20439,7 +20487,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20531,7 +20579,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20646,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -20691,7 +20739,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20760,7 +20808,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20896,7 +20944,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -20953,7 +21001,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21071,7 +21119,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21138,7 +21186,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21232,7 +21280,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21301,7 +21349,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21400,7 +21448,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21478,7 +21526,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -21595,7 +21643,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -21725,7 +21773,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21803,7 +21851,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22026,7 +22074,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22289,7 +22337,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22562,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22734,7 +22782,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22973,7 +23021,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23195,7 +23243,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23252,7 +23300,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23366,7 +23414,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23433,7 +23481,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -23548,7 +23596,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -23617,7 +23665,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -23686,7 +23734,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -23757,7 +23805,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -23840,7 +23888,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -23890,7 +23938,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -23949,7 +23997,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24008,7 +24056,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24080,7 +24128,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24206,7 +24254,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24264,7 +24312,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24387,7 +24435,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24447,7 +24495,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -24532,7 +24580,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -24629,7 +24677,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -24700,7 +24748,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -24788,7 +24836,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -24854,7 +24902,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -24920,7 +24968,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25136,7 +25184,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25209,7 +25257,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25280,7 +25328,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25361,7 +25409,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25436,7 +25484,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25520,7 +25568,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -25581,7 +25629,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -25654,7 +25702,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -25717,7 +25765,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -25789,7 +25837,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -25874,7 +25922,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -25984,7 +26032,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26055,7 +26103,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26141,7 +26189,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26214,7 +26262,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26310,7 +26358,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26369,7 +26417,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26449,7 +26497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26521,7 +26569,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26608,7 +26656,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -26692,7 +26740,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -26776,7 +26824,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -26843,7 +26891,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -26903,7 +26951,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -26987,7 +27035,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27071,7 +27119,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27185,7 +27233,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27287,7 +27335,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27391,7 +27439,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27462,7 +27510,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -27513,7 +27561,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -27573,7 +27621,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -27652,7 +27700,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -27733,7 +27781,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27863,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -27888,7 +27936,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -27948,7 +27996,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28020,7 +28068,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28095,7 +28143,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28155,7 +28203,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28213,7 +28261,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28271,7 +28319,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28331,7 +28379,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28410,7 +28458,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -28489,7 +28537,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -28568,7 +28616,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -28626,7 +28674,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -28705,7 +28753,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -28763,7 +28811,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -28814,7 +28862,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -28867,7 +28915,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -28937,7 +28985,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29016,7 +29064,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29088,7 +29136,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29197,7 +29245,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29266,7 +29314,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29354,7 +29402,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29425,7 +29473,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -29506,7 +29554,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29585,7 +29633,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -29664,7 +29712,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -29732,7 +29780,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -29816,7 +29864,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29933,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30002,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30034,7 +30082,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30112,7 +30160,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30200,7 +30248,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30273,7 +30321,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30323,7 +30371,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35200,7 +35248,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/open-api3-1.6.x-server.json b/app/config/specs/open-api3-1.6.x-server.json index 33a9985d41..68d408762a 100644 --- a/app/config/specs/open-api3-1.6.x-server.json +++ b/app/config/specs/open-api3-1.6.x-server.json @@ -8138,7 +8138,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8211,7 +8211,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8458,7 +8458,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8507,7 +8507,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8557,7 +8557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8616,7 +8616,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -8840,7 +8840,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -8901,7 +8901,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -8984,7 +8984,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9080,7 +9080,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9149,7 +9149,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9211,7 +9211,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9275,7 +9275,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9360,7 +9360,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9424,7 +9424,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9497,7 +9497,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9584,7 +9584,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9700,7 +9700,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9766,7 +9766,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -9837,7 +9837,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -9896,7 +9896,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -9982,7 +9982,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10051,7 +10051,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10137,7 +10137,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10208,7 +10208,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10261,7 +10261,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10363,7 +10363,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10570,7 +10570,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10597,6 +10597,55 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10619,7 +10668,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10681,7 +10730,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10743,7 +10792,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -10816,7 +10865,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -10878,7 +10927,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -10966,7 +11015,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11028,7 +11077,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11090,7 +11139,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11201,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11214,7 +11263,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11276,7 +11325,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11338,7 +11387,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11400,7 +11449,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11462,7 +11511,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11560,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11560,7 +11609,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12033,7 +12082,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12109,7 +12158,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12253,7 +12302,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12399,7 +12448,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12573,7 +12622,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -12751,7 +12800,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12860,7 +12909,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -12972,7 +13021,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13025,7 +13074,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13087,7 +13136,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13162,7 +13211,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13237,7 +13286,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13313,7 +13362,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13418,7 +13467,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13526,7 +13575,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13611,7 +13660,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13699,7 +13748,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -13814,7 +13863,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -13932,7 +13981,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14027,7 +14076,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14125,7 +14174,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14230,7 +14279,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14338,7 +14387,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14481,7 +14530,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14626,7 +14675,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -14721,7 +14770,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -14819,7 +14868,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -14914,7 +14963,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15012,7 +15061,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15107,7 +15156,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15205,7 +15254,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15300,7 +15349,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15398,7 +15447,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15451,7 +15500,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15513,7 +15562,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15588,7 +15637,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -15663,7 +15712,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -15737,7 +15786,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15820,7 +15869,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -15880,7 +15929,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -15957,7 +16006,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16019,7 +16068,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16094,7 +16143,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16178,7 +16227,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16269,7 +16318,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16332,7 +16381,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16408,7 +16457,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16481,7 +16530,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16608,7 +16657,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -16667,7 +16716,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -16791,7 +16840,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -16852,7 +16901,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -16939,7 +16988,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17038,7 +17087,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17111,7 +17160,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17201,7 +17250,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17269,7 +17318,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17337,7 +17386,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17555,7 +17604,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -17630,7 +17679,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -17707,7 +17756,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -17793,7 +17842,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -17856,7 +17905,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -17931,7 +17980,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -17996,7 +18045,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18083,7 +18132,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18195,7 +18244,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18268,7 +18317,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18356,7 +18405,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18431,7 +18480,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18529,7 +18578,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18590,7 +18639,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18672,7 +18721,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -18745,7 +18794,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -18833,7 +18882,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -18918,7 +18967,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19003,7 +19052,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19071,7 +19120,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19132,7 +19181,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19217,7 +19266,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19302,7 +19351,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19417,7 +19466,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -19520,7 +19569,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19625,7 +19674,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -19677,7 +19726,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19787,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -19818,7 +19867,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -19900,7 +19949,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -19983,7 +20032,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20057,7 +20106,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20118,7 +20167,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20191,7 +20240,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20267,7 +20316,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20328,7 +20377,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20387,7 +20436,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20446,7 +20495,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -20507,7 +20556,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -20587,7 +20636,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -20667,7 +20716,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -20747,7 +20796,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -20806,7 +20855,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -20886,7 +20935,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20945,7 +20994,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -20997,7 +21046,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21051,7 +21100,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21122,7 +21171,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21202,7 +21251,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21275,7 +21324,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21385,7 +21434,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21455,7 +21504,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -21544,7 +21593,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -21616,7 +21665,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21698,7 +21747,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21778,7 +21827,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index db563a6acf..820b1f55e0 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -4761,7 +4761,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -4846,7 +4846,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -4960,7 +4960,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5033,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5084,7 +5084,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5543,7 +5543,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5625,7 +5625,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5699,7 +5699,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -5784,7 +5784,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -5881,7 +5881,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -5952,7 +5952,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6040,7 +6040,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6106,7 +6106,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6172,7 +6172,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6388,7 +6388,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6461,7 +6461,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6536,7 +6536,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6620,7 +6620,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6681,7 +6681,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6754,7 +6754,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -6817,7 +6817,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -6902,7 +6902,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7012,7 +7012,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7083,7 +7083,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7169,7 +7169,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7242,7 +7242,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7339,7 +7339,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7399,7 +7399,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index 4c93f3d184..7f57dfc437 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -4293,7 +4293,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4359,7 +4359,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -8986,7 +8986,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9058,7 +9058,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9304,7 +9304,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9352,7 +9352,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9401,7 +9401,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9500,7 +9500,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9559,7 +9559,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9630,7 +9630,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9688,7 +9688,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9911,7 +9911,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9971,7 +9971,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10053,7 +10053,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10148,7 +10148,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10216,7 +10216,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10277,7 +10277,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10340,7 +10340,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10424,7 +10424,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10487,7 +10487,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10559,7 +10559,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10644,7 +10644,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10758,7 +10758,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10822,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10892,7 +10892,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -10973,7 +10973,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11031,7 +11031,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11116,7 +11116,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11184,7 +11184,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11269,7 +11269,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11339,7 +11339,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11390,7 +11390,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11489,7 +11489,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11585,7 +11585,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11692,7 +11692,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11718,6 +11718,54 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11740,7 +11788,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11801,7 +11849,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11862,7 +11910,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11934,7 +11982,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11995,7 +12043,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12082,7 +12130,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12143,7 +12191,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12204,7 +12252,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12265,7 +12313,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12326,7 +12374,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12387,7 +12435,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12448,7 +12496,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12509,7 +12557,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12570,7 +12618,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12618,7 +12666,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12666,7 +12714,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13122,7 +13170,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13197,7 +13245,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13340,7 +13388,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13533,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13658,7 +13706,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13835,7 +13883,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13943,7 +13991,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14054,7 +14102,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14106,7 +14154,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14167,7 +14215,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14241,7 +14289,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14315,7 +14363,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14390,7 +14438,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14494,7 +14542,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14601,7 +14649,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14685,7 +14733,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14772,7 +14820,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14886,7 +14934,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15003,7 +15051,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15097,7 +15145,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15194,7 +15242,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15298,7 +15346,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15405,7 +15453,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15547,7 +15595,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15691,7 +15739,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15785,7 +15833,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15882,7 +15930,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15976,7 +16024,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16073,7 +16121,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16167,7 +16215,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16264,7 +16312,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16358,7 +16406,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16455,7 +16503,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16555,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16568,7 +16616,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16642,7 +16690,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16716,7 +16764,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16789,7 +16837,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16871,7 +16919,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16930,7 +16978,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17006,7 +17054,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17067,7 +17115,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17141,7 +17189,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17224,7 +17272,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17313,7 +17361,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17375,7 +17423,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17449,7 +17497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17522,7 +17570,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -17609,7 +17657,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -17701,7 +17749,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -17776,7 +17824,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -17847,7 +17895,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -17957,7 +18005,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18089,7 +18137,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18193,7 +18241,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18316,7 +18364,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18373,7 +18421,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18423,7 +18471,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18482,7 +18530,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -18569,7 +18617,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -18614,7 +18662,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -18686,7 +18734,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -18743,7 +18791,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -18817,7 +18865,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -18876,7 +18924,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -18947,7 +18995,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19081,7 +19129,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19138,7 +19186,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19252,7 +19300,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19311,7 +19359,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19402,7 +19450,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19480,7 +19528,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -19558,7 +19606,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -19636,7 +19684,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -19714,7 +19762,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -19804,7 +19852,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19885,7 +19933,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -19963,7 +20011,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20041,7 +20089,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20167,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20197,7 +20245,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20296,7 +20344,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20382,7 +20430,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20439,7 +20487,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20531,7 +20579,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20646,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -20691,7 +20739,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20760,7 +20808,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20896,7 +20944,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -20953,7 +21001,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21071,7 +21119,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21138,7 +21186,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21232,7 +21280,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21301,7 +21349,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21400,7 +21448,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21478,7 +21526,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -21595,7 +21643,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -21725,7 +21773,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21803,7 +21851,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22026,7 +22074,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22289,7 +22337,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22562,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22734,7 +22782,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22973,7 +23021,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23195,7 +23243,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23252,7 +23300,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23366,7 +23414,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23433,7 +23481,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -23548,7 +23596,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -23617,7 +23665,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -23686,7 +23734,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -23757,7 +23805,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -23840,7 +23888,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -23890,7 +23938,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -23949,7 +23997,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24008,7 +24056,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24080,7 +24128,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24206,7 +24254,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24264,7 +24312,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24387,7 +24435,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24447,7 +24495,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -24532,7 +24580,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -24629,7 +24677,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -24700,7 +24748,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -24788,7 +24836,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -24854,7 +24902,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -24920,7 +24968,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25136,7 +25184,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25209,7 +25257,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25280,7 +25328,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25361,7 +25409,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25436,7 +25484,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25520,7 +25568,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -25581,7 +25629,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -25654,7 +25702,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -25717,7 +25765,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -25789,7 +25837,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -25874,7 +25922,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -25984,7 +26032,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26055,7 +26103,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26141,7 +26189,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26214,7 +26262,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26310,7 +26358,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26369,7 +26417,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26449,7 +26497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26521,7 +26569,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26608,7 +26656,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -26692,7 +26740,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -26776,7 +26824,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -26843,7 +26891,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -26903,7 +26951,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -26987,7 +27035,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27071,7 +27119,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27185,7 +27233,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27287,7 +27335,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27391,7 +27439,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27462,7 +27510,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -27513,7 +27561,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -27573,7 +27621,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -27652,7 +27700,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -27733,7 +27781,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27863,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -27888,7 +27936,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -27948,7 +27996,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28020,7 +28068,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28095,7 +28143,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28155,7 +28203,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28213,7 +28261,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28271,7 +28319,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28331,7 +28379,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28410,7 +28458,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -28489,7 +28537,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -28568,7 +28616,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -28626,7 +28674,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -28705,7 +28753,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -28763,7 +28811,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -28814,7 +28862,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -28867,7 +28915,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -28937,7 +28985,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29016,7 +29064,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29088,7 +29136,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29197,7 +29245,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29266,7 +29314,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29354,7 +29402,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29425,7 +29473,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -29506,7 +29554,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29585,7 +29633,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -29664,7 +29712,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -29732,7 +29780,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -29816,7 +29864,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29933,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30002,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30034,7 +30082,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30112,7 +30160,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30200,7 +30248,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30273,7 +30321,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30323,7 +30371,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35200,7 +35248,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index 33a9985d41..68d408762a 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -8138,7 +8138,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8211,7 +8211,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8458,7 +8458,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8507,7 +8507,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8557,7 +8557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8616,7 +8616,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -8840,7 +8840,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -8901,7 +8901,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -8984,7 +8984,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9080,7 +9080,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9149,7 +9149,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9211,7 +9211,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9275,7 +9275,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9360,7 +9360,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9424,7 +9424,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9497,7 +9497,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9584,7 +9584,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9700,7 +9700,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9766,7 +9766,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -9837,7 +9837,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -9896,7 +9896,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -9982,7 +9982,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10051,7 +10051,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10137,7 +10137,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10208,7 +10208,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10261,7 +10261,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10363,7 +10363,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10570,7 +10570,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10597,6 +10597,55 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10619,7 +10668,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10681,7 +10730,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10743,7 +10792,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -10816,7 +10865,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -10878,7 +10927,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -10966,7 +11015,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11028,7 +11077,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11090,7 +11139,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11201,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11214,7 +11263,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11276,7 +11325,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11338,7 +11387,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11400,7 +11449,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11462,7 +11511,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11560,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11560,7 +11609,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12033,7 +12082,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12109,7 +12158,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12253,7 +12302,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12399,7 +12448,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12573,7 +12622,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -12751,7 +12800,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12860,7 +12909,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -12972,7 +13021,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13025,7 +13074,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13087,7 +13136,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13162,7 +13211,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13237,7 +13286,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13313,7 +13362,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13418,7 +13467,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13526,7 +13575,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13611,7 +13660,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13699,7 +13748,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -13814,7 +13863,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -13932,7 +13981,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14027,7 +14076,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14125,7 +14174,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14230,7 +14279,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14338,7 +14387,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14481,7 +14530,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14626,7 +14675,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -14721,7 +14770,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -14819,7 +14868,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -14914,7 +14963,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15012,7 +15061,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15107,7 +15156,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15205,7 +15254,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15300,7 +15349,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15398,7 +15447,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15451,7 +15500,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15513,7 +15562,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15588,7 +15637,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -15663,7 +15712,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -15737,7 +15786,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15820,7 +15869,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -15880,7 +15929,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -15957,7 +16006,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16019,7 +16068,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16094,7 +16143,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16178,7 +16227,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16269,7 +16318,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16332,7 +16381,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16408,7 +16457,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16481,7 +16530,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16608,7 +16657,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -16667,7 +16716,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -16791,7 +16840,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -16852,7 +16901,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -16939,7 +16988,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17038,7 +17087,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17111,7 +17160,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17201,7 +17250,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17269,7 +17318,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17337,7 +17386,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17555,7 +17604,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -17630,7 +17679,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -17707,7 +17756,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -17793,7 +17842,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -17856,7 +17905,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -17931,7 +17980,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -17996,7 +18045,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18083,7 +18132,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18195,7 +18244,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18268,7 +18317,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18356,7 +18405,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18431,7 +18480,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18529,7 +18578,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18590,7 +18639,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18672,7 +18721,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -18745,7 +18794,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -18833,7 +18882,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -18918,7 +18967,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19003,7 +19052,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19071,7 +19120,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19132,7 +19181,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19217,7 +19266,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19302,7 +19351,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19417,7 +19466,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -19520,7 +19569,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19625,7 +19674,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -19677,7 +19726,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19787,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -19818,7 +19867,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -19900,7 +19949,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -19983,7 +20032,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20057,7 +20106,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20118,7 +20167,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20191,7 +20240,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20267,7 +20316,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20328,7 +20377,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20387,7 +20436,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20446,7 +20495,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -20507,7 +20556,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -20587,7 +20636,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -20667,7 +20716,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -20747,7 +20796,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -20806,7 +20855,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -20886,7 +20935,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20945,7 +20994,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -20997,7 +21046,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21051,7 +21100,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21122,7 +21171,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21202,7 +21251,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21275,7 +21324,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21385,7 +21434,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21455,7 +21504,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -21544,7 +21593,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -21616,7 +21665,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21698,7 +21747,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21778,7 +21827,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-1.6.x-client.json b/app/config/specs/swagger2-1.6.x-client.json index 793e9a13af..c0980c44ce 100644 --- a/app/config/specs/swagger2-1.6.x-client.json +++ b/app/config/specs/swagger2-1.6.x-client.json @@ -4927,7 +4927,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5009,7 +5009,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -5127,7 +5127,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5198,7 +5198,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5271,7 +5271,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5768,7 +5768,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5852,7 +5852,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5924,7 +5924,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -6006,7 +6006,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -6097,7 +6097,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -6166,7 +6166,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6254,7 +6254,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6325,7 +6325,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6396,7 +6396,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6595,7 +6595,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6666,7 +6666,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6740,7 +6740,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6831,7 +6831,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6892,7 +6892,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6966,7 +6966,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7029,7 +7029,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7111,7 +7111,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7225,7 +7225,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7294,7 +7294,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7379,7 +7379,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7450,7 +7450,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7545,7 +7545,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7605,7 +7605,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-1.6.x-console.json b/app/config/specs/swagger2-1.6.x-console.json index 45fed68682..94b0d55199 100644 --- a/app/config/specs/swagger2-1.6.x-console.json +++ b/app/config/specs/swagger2-1.6.x-console.json @@ -4497,7 +4497,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4566,7 +4566,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -9135,7 +9135,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9206,7 +9206,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9476,7 +9476,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9526,7 +9526,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9577,7 +9577,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9672,7 +9672,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9731,7 +9731,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9802,7 +9802,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9860,7 +9860,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -10100,7 +10100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -10160,7 +10160,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10239,7 +10239,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10330,7 +10330,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10396,7 +10396,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10457,7 +10457,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10522,7 +10522,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10603,7 +10603,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10671,7 +10671,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10741,7 +10741,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10823,7 +10823,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10941,7 +10941,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11005,7 +11005,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11073,7 +11073,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11152,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11210,7 +11210,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11295,7 +11295,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11361,7 +11361,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11446,7 +11446,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11514,7 +11514,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11587,7 +11587,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11710,7 +11710,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11810,7 +11810,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11919,7 +11919,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11945,6 +11945,56 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11969,7 +12019,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12030,7 +12080,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12091,7 +12141,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12161,7 +12211,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12222,7 +12272,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12307,7 +12357,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12368,7 +12418,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12429,7 +12479,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12490,7 +12540,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12551,7 +12601,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12612,7 +12662,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12673,7 +12723,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12734,7 +12784,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12795,7 +12845,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12845,7 +12895,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12895,7 +12945,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13369,7 +13419,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13443,7 +13493,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13600,7 +13650,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13754,7 +13804,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13948,7 +13998,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14141,7 +14191,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -14258,7 +14308,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14373,7 +14423,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14427,7 +14477,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14488,7 +14538,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14561,7 +14611,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14634,7 +14684,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14708,7 +14758,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14822,7 +14872,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14934,7 +14984,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -15024,7 +15074,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -15112,7 +15162,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15238,7 +15288,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15362,7 +15412,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15464,7 +15514,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15564,7 +15614,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15678,7 +15728,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15790,7 +15840,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15948,7 +15998,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -16103,7 +16153,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16205,7 +16255,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16305,7 +16355,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16407,7 +16457,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16557,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16609,7 +16659,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16709,7 +16759,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16811,7 +16861,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16911,7 +16961,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16965,7 +17015,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -17026,7 +17076,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -17099,7 +17149,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17172,7 +17222,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17244,7 +17294,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17383,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17392,7 +17442,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17470,7 +17520,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17531,7 +17581,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17604,7 +17654,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17684,7 +17734,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17773,7 +17823,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17835,7 +17885,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17907,7 +17957,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17979,7 +18029,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -18072,7 +18122,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18159,7 +18209,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18238,7 +18288,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18308,7 +18358,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18428,7 +18478,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18547,7 +18597,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18660,7 +18710,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18772,7 +18822,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18829,7 +18879,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18881,7 +18931,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18940,7 +18990,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -19023,7 +19073,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19070,7 +19120,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19146,7 +19196,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19203,7 +19253,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19279,7 +19329,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -19338,7 +19388,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19408,7 +19458,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19557,7 +19607,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19614,7 +19664,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19788,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19797,7 +19847,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19888,7 +19938,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19965,7 +20015,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20042,7 +20092,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20169,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -20196,7 +20246,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -20287,7 +20337,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -20367,7 +20417,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20444,7 +20494,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20521,7 +20571,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20648,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20675,7 +20725,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20771,7 +20821,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20857,7 +20907,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20914,7 +20964,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -21007,7 +21057,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21072,7 +21122,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21166,7 +21216,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -21233,7 +21283,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -21371,7 +21421,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21428,7 +21478,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21549,7 +21599,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21614,7 +21664,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21710,7 +21760,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21777,7 +21827,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21876,7 +21926,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21953,7 +22003,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22081,7 +22131,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22218,7 +22268,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -22295,7 +22345,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22564,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22776,7 +22826,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22997,7 +23047,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -23213,7 +23263,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -23447,7 +23497,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23665,7 +23715,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23722,7 +23772,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23841,7 +23891,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23906,7 +23956,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24026,7 +24076,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -24093,7 +24143,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24160,7 +24210,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24230,7 +24280,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -24318,7 +24368,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24370,7 +24420,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24429,7 +24479,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24488,7 +24538,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24559,7 +24609,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24697,7 +24747,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24755,7 +24805,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24887,7 +24937,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24947,7 +24997,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -25029,7 +25079,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -25120,7 +25170,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -25189,7 +25239,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -25277,7 +25327,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25348,7 +25398,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25419,7 +25469,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25618,7 +25668,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25689,7 +25739,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25760,7 +25810,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25839,7 +25889,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25913,7 +25963,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -26004,7 +26054,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26065,7 +26115,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26139,7 +26189,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26202,7 +26252,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -26273,7 +26323,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26355,7 +26405,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26469,7 +26519,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26538,7 +26588,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26623,7 +26673,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26694,7 +26744,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26788,7 +26838,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26847,7 +26897,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26926,7 +26976,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26997,7 +27047,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27091,7 +27141,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27181,7 +27231,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27271,7 +27321,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -27339,7 +27389,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -27399,7 +27449,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27489,7 +27539,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27579,7 +27629,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27704,7 +27754,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27865,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27926,7 +27976,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27997,7 +28047,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28050,7 +28100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -28110,7 +28160,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -28188,7 +28238,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28269,7 +28319,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -28350,7 +28400,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -28422,7 +28472,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -28482,7 +28532,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28555,7 +28605,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28628,7 +28678,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28688,7 +28738,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28746,7 +28796,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28804,7 +28854,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28864,7 +28914,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28942,7 +28992,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -29020,7 +29070,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29098,7 +29148,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29156,7 +29206,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29234,7 +29284,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -29292,7 +29342,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29345,7 +29395,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -29400,7 +29450,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -29468,7 +29518,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29546,7 +29596,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29617,7 +29667,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29729,7 +29779,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29796,7 +29846,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29935,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30004,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -30035,7 +30085,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -30113,7 +30163,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -30191,7 +30241,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -30257,7 +30307,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -30341,7 +30391,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30408,7 +30458,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -30475,7 +30525,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30551,7 +30601,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30630,7 +30680,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30715,7 +30765,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30787,7 +30837,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30839,7 +30889,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35735,7 +35785,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/swagger2-1.6.x-server.json b/app/config/specs/swagger2-1.6.x-server.json index ae30cb6b37..e38495629c 100644 --- a/app/config/specs/swagger2-1.6.x-server.json +++ b/app/config/specs/swagger2-1.6.x-server.json @@ -8284,7 +8284,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8356,7 +8356,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8627,7 +8627,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8678,7 +8678,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8730,7 +8730,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8789,7 +8789,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9030,7 +9030,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9091,7 +9091,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9171,7 +9171,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9263,7 +9263,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9330,7 +9330,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9392,7 +9392,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9458,7 +9458,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9540,7 +9540,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9609,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9680,7 +9680,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9764,7 +9764,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9884,7 +9884,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9950,7 +9950,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10019,7 +10019,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10078,7 +10078,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10164,7 +10164,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10231,7 +10231,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10317,7 +10317,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10386,7 +10386,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10587,7 +10587,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10689,7 +10689,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10800,7 +10800,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10827,6 +10827,57 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10851,7 +10902,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10913,7 +10964,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10975,7 +11026,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11046,7 +11097,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11108,7 +11159,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -11194,7 +11245,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11256,7 +11307,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11318,7 +11369,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11380,7 +11431,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11442,7 +11493,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11504,7 +11555,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11566,7 +11617,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11628,7 +11679,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11690,7 +11741,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11741,7 +11792,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11792,7 +11843,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12283,7 +12334,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12358,7 +12409,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12516,7 +12567,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12671,7 +12722,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12866,7 +12917,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13060,7 +13111,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13178,7 +13229,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13294,7 +13345,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13349,7 +13400,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13411,7 +13462,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13536,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13559,7 +13610,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13634,7 +13685,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13749,7 +13800,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13862,7 +13913,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13953,7 +14004,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14042,7 +14093,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14169,7 +14220,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14294,7 +14345,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14397,7 +14448,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14498,7 +14549,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14613,7 +14664,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14726,7 +14777,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14885,7 +14936,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15041,7 +15092,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15144,7 +15195,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15245,7 +15296,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15348,7 +15399,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15449,7 +15500,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15552,7 +15603,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15653,7 +15704,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15756,7 +15807,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15857,7 +15908,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15912,7 +15963,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15974,7 +16025,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16048,7 +16099,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16122,7 +16173,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16195,7 +16246,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16285,7 +16336,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16345,7 +16396,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16424,7 +16475,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16486,7 +16537,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16560,7 +16611,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16641,7 +16692,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16732,7 +16783,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16795,7 +16846,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16869,7 +16920,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16941,7 +16992,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -17080,7 +17131,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17139,7 +17190,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17272,7 +17323,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17384,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17417,7 +17468,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17510,7 +17561,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17581,7 +17632,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17671,7 +17722,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17744,7 +17795,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17817,7 +17868,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -18018,7 +18069,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -18091,7 +18142,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18167,7 +18218,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -18260,7 +18311,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18323,7 +18374,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -18399,7 +18450,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18464,7 +18515,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18548,7 +18599,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18664,7 +18715,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18735,7 +18786,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18822,7 +18873,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18895,7 +18946,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18991,7 +19042,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -19052,7 +19103,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -19133,7 +19184,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -19205,7 +19256,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19300,7 +19351,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19391,7 +19442,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19482,7 +19533,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19551,7 +19602,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19612,7 +19663,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19703,7 +19754,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19794,7 +19845,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19920,7 +19971,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -20032,7 +20083,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -20144,7 +20195,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -20198,7 +20249,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -20259,7 +20310,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -20338,7 +20389,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -20420,7 +20471,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -20502,7 +20553,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20575,7 +20626,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20636,7 +20687,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20710,7 +20761,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20784,7 +20835,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20845,7 +20896,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20904,7 +20955,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20963,7 +21014,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21024,7 +21075,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -21103,7 +21154,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -21182,7 +21233,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21261,7 +21312,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -21320,7 +21371,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -21399,7 +21450,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -21458,7 +21509,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21512,7 +21563,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21568,7 +21619,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21637,7 +21688,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21716,7 +21767,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21788,7 +21839,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21901,7 +21952,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21969,7 +22020,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -22059,7 +22110,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -22129,7 +22180,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -22211,7 +22262,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -22290,7 +22341,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index 793e9a13af..c0980c44ce 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -4927,7 +4927,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5009,7 +5009,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -5127,7 +5127,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5198,7 +5198,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5271,7 +5271,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5768,7 +5768,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5852,7 +5852,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5924,7 +5924,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -6006,7 +6006,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -6097,7 +6097,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -6166,7 +6166,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6254,7 +6254,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6325,7 +6325,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6396,7 +6396,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6595,7 +6595,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6666,7 +6666,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6740,7 +6740,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6831,7 +6831,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6892,7 +6892,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6966,7 +6966,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7029,7 +7029,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7111,7 +7111,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7225,7 +7225,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7294,7 +7294,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7379,7 +7379,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7450,7 +7450,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7545,7 +7545,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7605,7 +7605,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 45fed68682..94b0d55199 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -4497,7 +4497,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4566,7 +4566,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -9135,7 +9135,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9206,7 +9206,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9476,7 +9476,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9526,7 +9526,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9577,7 +9577,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9672,7 +9672,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9731,7 +9731,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9802,7 +9802,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9860,7 +9860,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -10100,7 +10100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -10160,7 +10160,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10239,7 +10239,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10330,7 +10330,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10396,7 +10396,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10457,7 +10457,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10522,7 +10522,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10603,7 +10603,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10671,7 +10671,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10741,7 +10741,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10823,7 +10823,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10941,7 +10941,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11005,7 +11005,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11073,7 +11073,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11152,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11210,7 +11210,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11295,7 +11295,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11361,7 +11361,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11446,7 +11446,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11514,7 +11514,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11587,7 +11587,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11710,7 +11710,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11810,7 +11810,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11919,7 +11919,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11945,6 +11945,56 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11969,7 +12019,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12030,7 +12080,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12091,7 +12141,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12161,7 +12211,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12222,7 +12272,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12307,7 +12357,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12368,7 +12418,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12429,7 +12479,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12490,7 +12540,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12551,7 +12601,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12612,7 +12662,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12673,7 +12723,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12734,7 +12784,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12795,7 +12845,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12845,7 +12895,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12895,7 +12945,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13369,7 +13419,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13443,7 +13493,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13600,7 +13650,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13754,7 +13804,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13948,7 +13998,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14141,7 +14191,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -14258,7 +14308,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14373,7 +14423,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14427,7 +14477,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14488,7 +14538,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14561,7 +14611,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14634,7 +14684,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14708,7 +14758,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14822,7 +14872,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14934,7 +14984,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -15024,7 +15074,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -15112,7 +15162,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15238,7 +15288,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15362,7 +15412,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15464,7 +15514,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15564,7 +15614,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15678,7 +15728,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15790,7 +15840,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15948,7 +15998,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -16103,7 +16153,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16205,7 +16255,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16305,7 +16355,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16407,7 +16457,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16557,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16609,7 +16659,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16709,7 +16759,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16811,7 +16861,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16911,7 +16961,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16965,7 +17015,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -17026,7 +17076,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -17099,7 +17149,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17172,7 +17222,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17244,7 +17294,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17383,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17392,7 +17442,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17470,7 +17520,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17531,7 +17581,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17604,7 +17654,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17684,7 +17734,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17773,7 +17823,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17835,7 +17885,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17907,7 +17957,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17979,7 +18029,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -18072,7 +18122,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18159,7 +18209,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18238,7 +18288,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18308,7 +18358,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18428,7 +18478,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18547,7 +18597,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18660,7 +18710,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18772,7 +18822,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18829,7 +18879,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18881,7 +18931,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18940,7 +18990,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -19023,7 +19073,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19070,7 +19120,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19146,7 +19196,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19203,7 +19253,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19279,7 +19329,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -19338,7 +19388,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19408,7 +19458,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19557,7 +19607,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19614,7 +19664,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19788,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19797,7 +19847,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19888,7 +19938,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19965,7 +20015,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20042,7 +20092,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20169,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -20196,7 +20246,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -20287,7 +20337,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -20367,7 +20417,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20444,7 +20494,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20521,7 +20571,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20648,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20675,7 +20725,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20771,7 +20821,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20857,7 +20907,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20914,7 +20964,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -21007,7 +21057,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21072,7 +21122,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21166,7 +21216,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -21233,7 +21283,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -21371,7 +21421,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21428,7 +21478,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21549,7 +21599,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21614,7 +21664,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21710,7 +21760,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21777,7 +21827,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21876,7 +21926,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21953,7 +22003,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22081,7 +22131,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22218,7 +22268,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -22295,7 +22345,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22564,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22776,7 +22826,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22997,7 +23047,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -23213,7 +23263,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -23447,7 +23497,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23665,7 +23715,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23722,7 +23772,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23841,7 +23891,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23906,7 +23956,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24026,7 +24076,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -24093,7 +24143,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24160,7 +24210,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24230,7 +24280,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -24318,7 +24368,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24370,7 +24420,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24429,7 +24479,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24488,7 +24538,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24559,7 +24609,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24697,7 +24747,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24755,7 +24805,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24887,7 +24937,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24947,7 +24997,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -25029,7 +25079,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -25120,7 +25170,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -25189,7 +25239,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -25277,7 +25327,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25348,7 +25398,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25419,7 +25469,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25618,7 +25668,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25689,7 +25739,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25760,7 +25810,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25839,7 +25889,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25913,7 +25963,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -26004,7 +26054,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26065,7 +26115,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26139,7 +26189,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26202,7 +26252,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -26273,7 +26323,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26355,7 +26405,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26469,7 +26519,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26538,7 +26588,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26623,7 +26673,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26694,7 +26744,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26788,7 +26838,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26847,7 +26897,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26926,7 +26976,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26997,7 +27047,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27091,7 +27141,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27181,7 +27231,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27271,7 +27321,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -27339,7 +27389,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -27399,7 +27449,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27489,7 +27539,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27579,7 +27629,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27704,7 +27754,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27865,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27926,7 +27976,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27997,7 +28047,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28050,7 +28100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -28110,7 +28160,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -28188,7 +28238,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28269,7 +28319,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -28350,7 +28400,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -28422,7 +28472,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -28482,7 +28532,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28555,7 +28605,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28628,7 +28678,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28688,7 +28738,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28746,7 +28796,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28804,7 +28854,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28864,7 +28914,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28942,7 +28992,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -29020,7 +29070,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29098,7 +29148,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29156,7 +29206,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29234,7 +29284,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -29292,7 +29342,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29345,7 +29395,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -29400,7 +29450,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -29468,7 +29518,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29546,7 +29596,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29617,7 +29667,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29729,7 +29779,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29796,7 +29846,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29935,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30004,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -30035,7 +30085,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -30113,7 +30163,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -30191,7 +30241,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -30257,7 +30307,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -30341,7 +30391,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30408,7 +30458,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -30475,7 +30525,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30551,7 +30601,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30630,7 +30680,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30715,7 +30765,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30787,7 +30837,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30839,7 +30889,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35735,7 +35785,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index ae30cb6b37..e38495629c 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -8284,7 +8284,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8356,7 +8356,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8627,7 +8627,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8678,7 +8678,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8730,7 +8730,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8789,7 +8789,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9030,7 +9030,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9091,7 +9091,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9171,7 +9171,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9263,7 +9263,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9330,7 +9330,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9392,7 +9392,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9458,7 +9458,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9540,7 +9540,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9609,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9680,7 +9680,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9764,7 +9764,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9884,7 +9884,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9950,7 +9950,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10019,7 +10019,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10078,7 +10078,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10164,7 +10164,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10231,7 +10231,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10317,7 +10317,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10386,7 +10386,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10587,7 +10587,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10689,7 +10689,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10800,7 +10800,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10827,6 +10827,57 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10851,7 +10902,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10913,7 +10964,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10975,7 +11026,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11046,7 +11097,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11108,7 +11159,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -11194,7 +11245,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11256,7 +11307,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11318,7 +11369,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11380,7 +11431,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11442,7 +11493,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11504,7 +11555,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11566,7 +11617,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11628,7 +11679,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11690,7 +11741,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11741,7 +11792,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11792,7 +11843,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12283,7 +12334,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12358,7 +12409,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12516,7 +12567,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12671,7 +12722,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12866,7 +12917,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13060,7 +13111,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13178,7 +13229,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13294,7 +13345,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13349,7 +13400,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13411,7 +13462,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13536,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13559,7 +13610,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13634,7 +13685,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13749,7 +13800,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13862,7 +13913,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13953,7 +14004,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14042,7 +14093,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14169,7 +14220,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14294,7 +14345,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14397,7 +14448,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14498,7 +14549,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14613,7 +14664,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14726,7 +14777,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14885,7 +14936,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15041,7 +15092,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15144,7 +15195,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15245,7 +15296,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15348,7 +15399,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15449,7 +15500,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15552,7 +15603,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15653,7 +15704,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15756,7 +15807,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15857,7 +15908,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15912,7 +15963,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15974,7 +16025,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16048,7 +16099,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16122,7 +16173,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16195,7 +16246,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16285,7 +16336,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16345,7 +16396,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16424,7 +16475,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16486,7 +16537,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16560,7 +16611,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16641,7 +16692,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16732,7 +16783,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16795,7 +16846,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16869,7 +16920,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16941,7 +16992,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -17080,7 +17131,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17139,7 +17190,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17272,7 +17323,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17384,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17417,7 +17468,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17510,7 +17561,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17581,7 +17632,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17671,7 +17722,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17744,7 +17795,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17817,7 +17868,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -18018,7 +18069,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -18091,7 +18142,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18167,7 +18218,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -18260,7 +18311,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18323,7 +18374,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -18399,7 +18450,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18464,7 +18515,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18548,7 +18599,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18664,7 +18715,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18735,7 +18786,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18822,7 +18873,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18895,7 +18946,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18991,7 +19042,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -19052,7 +19103,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -19133,7 +19184,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -19205,7 +19256,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19300,7 +19351,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19391,7 +19442,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19482,7 +19533,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19551,7 +19602,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19612,7 +19663,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19703,7 +19754,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19794,7 +19845,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19920,7 +19971,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -20032,7 +20083,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -20144,7 +20195,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -20198,7 +20249,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -20259,7 +20310,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -20338,7 +20389,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -20420,7 +20471,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -20502,7 +20553,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20575,7 +20626,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20636,7 +20687,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20710,7 +20761,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20784,7 +20835,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20845,7 +20896,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20904,7 +20955,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20963,7 +21014,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21024,7 +21075,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -21103,7 +21154,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -21182,7 +21233,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21261,7 +21312,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -21320,7 +21371,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -21399,7 +21450,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -21458,7 +21509,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21512,7 +21563,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21568,7 +21619,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21637,7 +21688,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21716,7 +21767,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21788,7 +21839,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21901,7 +21952,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21969,7 +22020,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -22059,7 +22110,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -22129,7 +22180,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -22211,7 +22262,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -22290,7 +22341,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 2e60d08d43..bd9562110f 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -21,7 +21,6 @@ use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Hooks\Hooks; use Appwrite\Network\Validator\Email; -use Appwrite\Network\Validator\Redirect; use Appwrite\OpenSSL\OpenSSL; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; @@ -60,6 +59,7 @@ use Utopia\System\System; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; use Utopia\Validator\Boolean; +use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\URL; use Utopia\Validator\WhiteList; @@ -1188,8 +1188,8 @@ App::get('/v1/account/sessions/oauth2/:provider') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.') - ->param('success', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) - ->param('failure', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) + ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('request') ->inject('response') @@ -1784,8 +1784,8 @@ App::get('/v1/account/tokens/oauth2/:provider') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.') - ->param('success', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) - ->param('failure', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) + ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('request') ->inject('response') @@ -1864,7 +1864,7 @@ App::post('/v1/account/tokens/magic-url') ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), '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, ['hostnames', 'schemes']) + ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('phrase', false, new Boolean(), 'Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.', true) ->inject('request') ->inject('response') @@ -3157,7 +3157,7 @@ App::post('/v1/account/recovery') ->label('abuse-limit', 10) ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('email', '', new Email(), 'User email.') - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['hostnames', 'schemes']) + ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients']) ->inject('request') ->inject('response') ->inject('user') @@ -3432,7 +3432,7 @@ App::post('/v1/account/verification') )) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{userId}') - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), '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.', false, ['hostnames', 'schemes']) // TODO add built-in confirm page + ->param('url', '', fn ($clients) => new Host($clients), '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.', false, ['clients']) // TODO add built-in confirm page ->inject('request') ->inject('response') ->inject('project') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index ac73994aef..48d20cd17f 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -1741,7 +1741,7 @@ App::post('/v1/projects/:projectId/platforms') ] )) ->param('projectId', '', new UID(), 'Project unique ID.') - ->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, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], 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, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], 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/controllers/api/teams.php b/app/controllers/api/teams.php index 4029c5b2f1..7f988d726f 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -11,7 +11,6 @@ use Appwrite\Event\Messaging; use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; -use Appwrite\Network\Validator\Redirect; use Appwrite\Platform\Workers\Deletes; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; @@ -50,6 +49,7 @@ use Utopia\Locale\Locale; use Utopia\System\System; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; +use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; @@ -455,7 +455,7 @@ App::post('/v1/teams/:teamId/memberships') } return new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE); }, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', false, ['project']) - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This 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, ['hostnames', 'schemes']) // TODO add our own built-in confirm page + ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This 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']) // TODO add our own built-in confirm page ->param('name', '', new Text(128), 'Name of the new team member. Max length: 128 chars.', true) ->inject('response') ->inject('project') diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index 0d45d62dff..2c145febcc 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -288,8 +288,8 @@ App::get('/v1/vcs/github/authorize') type: MethodType::WEBAUTH, hide: true, )) - ->param('success', '', fn ($hostnames) => new Host($hostnames), 'URL to redirect back to console after a successful installation attempt.', true, ['hostnames']) - ->param('failure', '', fn ($hostnames) => new Host($hostnames), 'URL to redirect back to console after a failed installation attempt.', true, ['hostnames']) + ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a successful installation attempt.', true, ['clients']) + ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a failed installation attempt.', true, ['clients']) ->inject('request') ->inject('response') ->inject('project') diff --git a/app/controllers/general.php b/app/controllers/general.php index b9d1f008ad..7e691d033f 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -497,7 +497,7 @@ App::init() ->inject('getProjectDB') ->inject('locale') ->inject('localeCodes') - ->inject('hostnames') + ->inject('clients') ->inject('geodb') ->inject('queueForUsage') ->inject('queueForEvents') @@ -505,8 +505,7 @@ App::init() ->inject('queueForFunctions') ->inject('isResourceBlocked') ->inject('previewHostname') - ->inject('platforms') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $hostnames, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname, array $platforms) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname) { /* * Appwrite Router */ @@ -622,7 +621,7 @@ App::init() $port = \parse_url($request->getOrigin($referrer), PHP_URL_PORT); $refDomainOrigin = 'localhost'; - $validator = new Hostname($hostnames); + $validator = new Hostname($clients); if ($validator->isValid($origin)) { $refDomainOrigin = $origin; } @@ -713,7 +712,7 @@ App::init() * Skip this check for non-web platforms which are not required to send an origin header */ $origin = $request->getOrigin($request->getReferer('')); - $originValidator = new Origin($platforms); + $originValidator = new Origin(\array_merge($project->getAttribute('platforms', []), $console->getAttribute('platforms', []))); if ( !$originValidator->isValid($origin) diff --git a/app/controllers/mock.php b/app/controllers/mock.php index eb108ac61a..16d8e03841 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -3,7 +3,6 @@ global $utopia, $request, $response; use Appwrite\Extend\Exception; -use Appwrite\Network\Validator\Redirect; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; use Utopia\App; @@ -15,6 +14,7 @@ use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\UID; use Utopia\System\System; +use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; use Utopia\VCS\Adapter\Git\GitHub; @@ -26,7 +26,7 @@ App::get('/v1/mock/tests/general/oauth2') ->label('docs', false) ->label('mock', true) ->param('client_id', '', new Text(100), 'OAuth2 Client ID.') - ->param('redirect_uri', '', new Redirect(['localhost']), 'OAuth2 Redirect URI.') // Important to deny an open redirect attack + ->param('redirect_uri', '', new Host(['localhost']), 'OAuth2 Redirect URI.') // Important to deny an open redirect attack ->param('scope', '', new Text(100), 'OAuth2 scope list.') ->param('state', '', new Text(1024), 'OAuth2 state.') ->inject('response') @@ -44,7 +44,7 @@ App::get('/v1/mock/tests/general/oauth2/token') ->param('client_id', '', new Text(100), 'OAuth2 Client ID.') ->param('client_secret', '', new Text(100), 'OAuth2 scope list.') ->param('grant_type', 'authorization_code', new WhiteList(['refresh_token', 'authorization_code']), 'OAuth2 Grant Type.', true) - ->param('redirect_uri', '', new Redirect(['localhost']), 'OAuth2 Redirect URI.', true) + ->param('redirect_uri', '', new Host(['localhost']), 'OAuth2 Redirect URI.', true) ->param('code', '', new Text(100), 'OAuth2 state.', true) ->param('refresh_token', '', new Text(100), 'OAuth2 refresh token.', true) ->inject('response') diff --git a/app/init.php b/app/init.php index 93f31a6c4a..941e253260 100644 --- a/app/init.php +++ b/app/init.php @@ -1191,46 +1191,58 @@ App::setResource('queueForCertificates', function (Queue\Publisher $publisher) { App::setResource('queueForMigrations', function (Queue\Publisher $publisher) { return new Migration($publisher); }, ['publisher']); -App::setResource('platforms', function (Document $project, Document $console) { - return [ - ...$project->getAttribute('platforms', []), - ...$console->getAttribute('platforms', []), - ]; -}, ['project', 'console']); -App::setResource('hostnames', function (array $platforms) { - // Allow environment configured hostnames - $hostnames = []; +App::setResource('clients', function ($request, $console, $project) { + $console->setAttribute('platforms', [ // Always allow current host + '$collection' => ID::custom('platforms'), + 'name' => 'Current Host', + 'type' => Origin::CLIENT_TYPE_WEB, + 'hostname' => $request->getHostname(), + ], Document::SET_TYPE_APPEND); + + $hostnames = explode(',', System::getEnv('_APP_CONSOLE_HOSTNAMES', '')); $validator = new Hostname(); - foreach (explode(',', System::getEnv('_APP_CONSOLE_HOSTNAMES', '')) as $hostname) { + foreach ($hostnames as $hostname) { $hostname = trim($hostname); - if ($validator->isValid($hostname)) { - $hostnames[] = $hostname; + if (!$validator->isValid($hostname)) { + continue; + } + $console->setAttribute('platforms', [ + '$collection' => ID::custom('platforms'), + 'type' => Origin::CLIENT_TYPE_WEB, + 'name' => $hostname, + 'hostname' => $hostname, + ], Document::SET_TYPE_APPEND); + } + + /** + * Get All verified client URLs for both console and current projects + * + Filter for duplicated entries + */ + $clientsConsole = \array_map( + fn ($node) => $node['hostname'], + \array_filter( + $console->getAttribute('platforms', []), + fn ($node) => (isset($node['type']) && ($node['type'] === Origin::CLIENT_TYPE_WEB) && !empty($node['hostname'])) + ) + ); + + $clients = $clientsConsole; + $platforms = $project->getAttribute('platforms', []); + + foreach ($platforms as $node) { + if ( + isset($node['type']) && + ($node['type'] === Origin::CLIENT_TYPE_WEB || + $node['type'] === Origin::CLIENT_TYPE_FLUTTER_WEB) && + !empty($node['hostname']) + ) { + $clients[] = $node['hostname']; } } - // Add database configured hostnames - foreach ($platforms as $platform) { - if (!empty($platform['hostname']) && in_array($platform['type'], [ - Origin::CLIENT_TYPE_WEB, - Origin::CLIENT_TYPE_FLUTTER_WEB, - ])) { - $hostnames[] = $platform['hostname']; - } - } + return \array_unique($clients); +}, ['request', 'console', 'project']); - return \array_unique($hostnames); -}, ['platforms']); -App::setResource('schemes', function (array $platforms, Document $project) { - // Allow expo development scheme by default - $schemes = ['exp']; - - // Allow `appwrite-callback-${projectId}` scheme by default - if (!empty($project) && $project->getId() !== 'console') { - $schemes[] = 'appwrite-callback-' . $project->getId(); - } - - return \array_unique($schemes); -}, ['platforms', 'project']); App::setResource('user', function ($mode, $project, $console, $request, $response, $dbForProject, $dbForPlatform) { /** @var Appwrite\Utopia\Request $request */ /** @var Appwrite\Utopia\Response $response */ diff --git a/src/Appwrite/GraphQL/Types/Mapper.php b/src/Appwrite/GraphQL/Types/Mapper.php index c0bcb9b716..e5056d0abc 100644 --- a/src/Appwrite/GraphQL/Types/Mapper.php +++ b/src/Appwrite/GraphQL/Types/Mapper.php @@ -266,7 +266,6 @@ class Mapper case 'Appwrite\Utopia\Database\Validator\CustomId': case 'Utopia\Validator\Domain': case 'Appwrite\Network\Validator\Email': - case 'Appwrite\Network\Validator\Redirect': case 'Appwrite\Event\Validator\Event': case 'Appwrite\Event\Validator\FunctionEvent': case 'Utopia\Validator\HexColor': diff --git a/src/Appwrite/Network/Validator/Redirect.php b/src/Appwrite/Network/Validator/Redirect.php deleted file mode 100644 index 3402e72aef..0000000000 --- a/src/Appwrite/Network/Validator/Redirect.php +++ /dev/null @@ -1,86 +0,0 @@ - $hostnames Allow list of allowed hostnames - * @param array $schemes Allow list of allowed schemes - */ - public function __construct(array $hostnames = [], array $schemes = []) - { - $this->schemes = $schemes; - parent::__construct($hostnames); - } - - /** - * Get Description - * - * Returns validator description - * - * @return string - */ - public function getDescription(): string - { - $schemes = ''; - if (!empty($this->schemes)) { - $schemes = "URL scheme must be one of the following: " . implode(", ", array_map(function ($scheme) { - return "`$scheme`://"; - }, $this->schemes)); - } - - $hostnames = ''; - if (!empty($this->hostnames)) { - $hostnames = "URL hostname must be one of the following: " . implode(", ", array_map(function ($hostname) { - return "http://`$hostname`"; - }, $this->hostnames)); - } - - return $schemes . ($schemes && $hostnames ? " or " : "") . $hostnames; - } - - /** - * Is valid - * - * Validation will pass when $value is a valid URL and the host is allowed - * - * @param mixed $value - * @return bool - */ - public function isValid($value): bool - { - if (empty($value) || !\is_string($value)) { - return false; - } - - // Then check for scheme - $scheme = ''; - if (preg_match('/^([a-z][a-z0-9+\.-]*):\/+/i', $value, $matches)) { - $scheme = strtolower($matches[1]); - } - - // These are dangerous schemes, may expose XSS vulnerabilities - if (in_array($scheme, ["javascript", "data", "blob", "file"])) { - return false; - } - - // When the scheme is in the allowed list, the URL is valid. - if (!empty($this->schemes) && in_array($scheme, $this->schemes)) { - return true; - } - - return parent::isValid($value); - } -} diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index 2eb9187882..bd5405539d 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -375,7 +375,6 @@ class OpenAPI3 extends Format $node['schema']['format'] = 'email'; $node['schema']['x-example'] = 'email@example.com'; break; - case 'Appwrite\Network\Validator\Redirect': case 'Utopia\Validator\Host': case 'Utopia\Validator\URL': $node['schema']['type'] = $validator->getType(); diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 927cda27d1..7277e3ab2b 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -393,7 +393,6 @@ class Swagger2 extends Format $node['format'] = 'email'; $node['x-example'] = 'email@example.com'; break; - case 'Appwrite\Network\Validator\Redirect': case 'Utopia\Validator\Host': case 'Utopia\Validator\URL': $node['type'] = $validator->getType(); diff --git a/src/Appwrite/Utopia/Response/Model/Platform.php b/src/Appwrite/Utopia/Response/Model/Platform.php index 16ff3f40fd..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-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.', + 'description' => 'Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.', 'default' => '', 'example' => 'web', ]) diff --git a/tests/unit/Network/Validators/RedirectTest.php b/tests/unit/Network/Validators/RedirectTest.php deleted file mode 100644 index 301a831a58..0000000000 --- a/tests/unit/Network/Validators/RedirectTest.php +++ /dev/null @@ -1,43 +0,0 @@ - [["localhost"], [], "http://localhost", true], - "localhost-no-scheme" => [["localhost"], [], "localhost", false], - "expo scheme" => [[], ["exp"], "exp://192.168.0.1", true], - "custom scheme" => [[], ["myapp"], "myapp://", true], - "custom scheme triple slash" => [[], ["myapp"], "myapp:///", true], - "scheme with special chars" => [[], ["my-app+custom.123"], "my-app+custom.123://", true], - "url https" => [["example.com"], [], "https://example.com", true], - "url http" => [["example.com"], [], "http://example.com", true], - "malformed scheme" => [[], [], "http:/example.com", false], - "invalid url" => [[], [], "example.com", false], - "invalid host" => [["notexample.com"], [], "https://example.com", false], - "javascript scheme" => [[], [], "javascript://alert(1)", false], - "javascript scheme with different case" => [[], [], "JaVaScRiPt://alert(1)", false], - "empty string" => [[], [], "", false], - ]; - } - - /** - * @dataProvider redirectsProvider - */ - public function testIsValid( - array $hostnames, - array $schemes, - string $value, - bool $expected - ): void { - $validator = new Redirect($hostnames, $schemes); - - $this->assertEquals($expected, $validator->isValid($value)); - } -} From 9788a126a8a594de8228cd322e0ebf30abe50806 Mon Sep 17 00:00:00 2001 From: "Luke B. Silver" <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 09:53:26 +0000 Subject: [PATCH 54/99] Revert "Revert "feat: custom app schemes"" --- app/config/specs/open-api3-1.6.x-client.json | 56 +- app/config/specs/open-api3-1.6.x-console.json | 546 ++++++++--------- app/config/specs/open-api3-1.6.x-server.json | 367 +++++------- app/config/specs/open-api3-latest-client.json | 56 +- .../specs/open-api3-latest-console.json | 546 ++++++++--------- app/config/specs/open-api3-latest-server.json | 367 +++++------- app/config/specs/swagger2-1.6.x-client.json | 56 +- app/config/specs/swagger2-1.6.x-console.json | 548 ++++++++---------- app/config/specs/swagger2-1.6.x-server.json | 369 +++++------- app/config/specs/swagger2-latest-client.json | 56 +- app/config/specs/swagger2-latest-console.json | 548 ++++++++---------- app/config/specs/swagger2-latest-server.json | 369 +++++------- app/controllers/api/account.php | 16 +- app/controllers/api/projects.php | 2 +- app/controllers/api/teams.php | 4 +- app/controllers/api/vcs.php | 4 +- app/controllers/general.php | 9 +- app/controllers/mock.php | 6 +- app/init.php | 80 ++- src/Appwrite/GraphQL/Types/Mapper.php | 1 + src/Appwrite/Network/Validator/Redirect.php | 86 +++ .../Specification/Format/OpenAPI3.php | 1 + .../Specification/Format/Swagger2.php | 1 + .../Utopia/Response/Model/Platform.php | 2 +- .../unit/Network/Validators/RedirectTest.php | 43 ++ 25 files changed, 1932 insertions(+), 2207 deletions(-) create mode 100644 src/Appwrite/Network/Validator/Redirect.php create mode 100644 tests/unit/Network/Validators/RedirectTest.php diff --git a/app/config/specs/open-api3-1.6.x-client.json b/app/config/specs/open-api3-1.6.x-client.json index 820b1f55e0..db563a6acf 100644 --- a/app/config/specs/open-api3-1.6.x-client.json +++ b/app/config/specs/open-api3-1.6.x-client.json @@ -4761,7 +4761,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -4846,7 +4846,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -4960,7 +4960,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5033,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5084,7 +5084,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -5543,7 +5543,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -5625,7 +5625,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -5699,7 +5699,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -5784,7 +5784,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -5881,7 +5881,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -5952,7 +5952,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -6040,7 +6040,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6106,7 +6106,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6172,7 +6172,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -6388,7 +6388,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6461,7 +6461,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6536,7 +6536,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -6620,7 +6620,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6681,7 +6681,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -6754,7 +6754,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -6817,7 +6817,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -6902,7 +6902,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7012,7 +7012,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7083,7 +7083,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7169,7 +7169,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7242,7 +7242,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7339,7 +7339,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -7399,7 +7399,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-1.6.x-console.json b/app/config/specs/open-api3-1.6.x-console.json index 7f57dfc437..4c93f3d184 100644 --- a/app/config/specs/open-api3-1.6.x-console.json +++ b/app/config/specs/open-api3-1.6.x-console.json @@ -4293,7 +4293,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 333, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -4359,7 +4359,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 332, + "weight": 331, "cookies": false, "type": "", "deprecated": false, @@ -8986,7 +8986,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9058,7 +9058,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -9304,7 +9304,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9352,7 +9352,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9401,7 +9401,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 314, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -9500,7 +9500,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 315, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9559,7 +9559,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 294, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -9630,7 +9630,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9688,7 +9688,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9911,7 +9911,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9971,7 +9971,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -10053,7 +10053,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -10148,7 +10148,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10216,7 +10216,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -10277,7 +10277,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10340,7 +10340,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10424,7 +10424,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10487,7 +10487,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -10559,7 +10559,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10644,7 +10644,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10758,7 +10758,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10822,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10892,7 +10892,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 293, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -10973,7 +10973,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11031,7 +11031,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11116,7 +11116,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11184,7 +11184,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11269,7 +11269,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11339,7 +11339,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11390,7 +11390,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -11489,7 +11489,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11585,7 +11585,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11692,7 +11692,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -11718,54 +11718,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthStatus" - } - } - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11788,7 +11740,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11849,7 +11801,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11910,7 +11862,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11982,7 +11934,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12043,7 +11995,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -12130,7 +12082,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12191,7 +12143,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12252,7 +12204,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12313,7 +12265,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12374,7 +12326,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12435,7 +12387,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12496,7 +12448,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12557,7 +12509,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12618,7 +12570,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12666,7 +12618,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12714,7 +12666,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -13170,7 +13122,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13245,7 +13197,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -13388,7 +13340,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13533,7 +13485,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13706,7 +13658,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13883,7 +13835,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13991,7 +13943,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -14102,7 +14054,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14154,7 +14106,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14215,7 +14167,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -14289,7 +14241,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14363,7 +14315,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14438,7 +14390,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14542,7 +14494,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14649,7 +14601,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -14733,7 +14685,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -14820,7 +14772,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -14934,7 +14886,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15051,7 +15003,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15145,7 +15097,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15242,7 +15194,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15346,7 +15298,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15453,7 +15405,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15595,7 +15547,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15739,7 +15691,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15833,7 +15785,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15930,7 +15882,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16024,7 +15976,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16121,7 +16073,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16215,7 +16167,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16312,7 +16264,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16406,7 +16358,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16503,7 +16455,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16555,7 +16507,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -16616,7 +16568,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -16690,7 +16642,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16764,7 +16716,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16837,7 +16789,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16919,7 +16871,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16978,7 +16930,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17054,7 +17006,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17115,7 +17067,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17189,7 +17141,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17272,7 +17224,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17361,7 +17313,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17423,7 +17375,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17497,7 +17449,7 @@ }, "x-appwrite": { "method": "list", - "weight": 338, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -17570,7 +17522,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 334, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -17657,7 +17609,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 340, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -17749,7 +17701,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 335, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -17824,7 +17776,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 341, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -17895,7 +17847,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 337, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18005,7 +17957,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 343, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18137,7 +18089,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 336, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18241,7 +18193,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 342, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18364,7 +18316,7 @@ }, "x-appwrite": { "method": "get", - "weight": 339, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -18421,7 +18373,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 344, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18471,7 +18423,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 345, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18530,7 +18482,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 196, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -18617,7 +18569,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 198, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -18662,7 +18614,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 197, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -18734,7 +18686,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 199, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -18791,7 +18743,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 200, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -18865,7 +18817,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 201, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -18924,7 +18876,7 @@ }, "x-appwrite": { "method": "list", - "weight": 151, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -18995,7 +18947,7 @@ }, "x-appwrite": { "method": "create", - "weight": 150, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -19129,7 +19081,7 @@ }, "x-appwrite": { "method": "get", - "weight": 152, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19186,7 +19138,7 @@ }, "x-appwrite": { "method": "update", - "weight": 153, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19300,7 +19252,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 170, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19359,7 +19311,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 157, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -19450,7 +19402,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 158, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19528,7 +19480,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 163, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -19606,7 +19558,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 162, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -19684,7 +19636,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 168, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -19762,7 +19714,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 161, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -19852,7 +19804,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 169, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -19933,7 +19885,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 166, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20011,7 +19963,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 165, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20089,7 +20041,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 167, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20167,7 +20119,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 160, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20245,7 +20197,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 164, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20344,7 +20296,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 182, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20430,7 +20382,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 178, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20487,7 +20439,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 177, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -20579,7 +20531,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 179, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20646,7 +20598,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 180, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -20739,7 +20691,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 181, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -20808,7 +20760,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 159, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -20944,7 +20896,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 184, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21001,7 +20953,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 183, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -21119,7 +21071,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 185, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21186,7 +21138,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 186, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21280,7 +21232,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 187, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21349,7 +21301,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 155, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21448,7 +21400,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 156, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21526,7 +21478,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 188, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21643,7 +21595,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 189, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -21773,7 +21725,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 154, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -21851,7 +21803,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 191, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22074,7 +22026,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 193, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22337,7 +22289,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 195, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -22562,7 +22514,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 190, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22782,7 +22734,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 192, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -23021,7 +22973,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 194, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -23243,7 +23195,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 172, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23300,7 +23252,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 171, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -23414,7 +23366,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 173, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23481,7 +23433,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 174, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23596,7 +23548,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 176, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -23665,7 +23617,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 175, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -23734,7 +23686,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 317, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -23805,7 +23757,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 316, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -23888,7 +23840,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 318, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -23938,7 +23890,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 319, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -23997,7 +23949,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 320, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24056,7 +24008,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24128,7 +24080,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -24254,7 +24206,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24312,7 +24264,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24435,7 +24387,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24495,7 +24447,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -24580,7 +24532,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -24677,7 +24629,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -24748,7 +24700,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -24836,7 +24788,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -24902,7 +24854,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -24968,7 +24920,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -25184,7 +25136,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25257,7 +25209,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 216, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25328,7 +25280,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 217, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25409,7 +25361,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25484,7 +25436,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25568,7 +25520,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25629,7 +25581,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -25702,7 +25654,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -25765,7 +25717,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 231, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -25837,7 +25789,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -25922,7 +25874,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26032,7 +25984,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26103,7 +26055,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26189,7 +26141,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26262,7 +26214,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26358,7 +26310,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26417,7 +26369,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26497,7 +26449,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -26569,7 +26521,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -26656,7 +26608,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -26740,7 +26692,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26824,7 +26776,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -26891,7 +26843,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -26951,7 +26903,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27035,7 +26987,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27119,7 +27071,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27233,7 +27185,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27335,7 +27287,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27439,7 +27391,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 274, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -27510,7 +27462,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -27561,7 +27513,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -27621,7 +27573,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -27700,7 +27652,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -27781,7 +27733,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -27863,7 +27815,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -27936,7 +27888,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -27996,7 +27948,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -28068,7 +28020,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28143,7 +28095,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28203,7 +28155,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28261,7 +28213,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28319,7 +28271,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28379,7 +28331,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -28458,7 +28410,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28537,7 +28489,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -28616,7 +28568,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28674,7 +28626,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -28753,7 +28705,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -28811,7 +28763,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28862,7 +28814,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -28915,7 +28867,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -28985,7 +28937,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -29064,7 +29016,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -29136,7 +29088,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -29245,7 +29197,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29314,7 +29266,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29402,7 +29354,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -29473,7 +29425,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29554,7 +29506,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29633,7 +29585,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -29712,7 +29664,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 279, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -29780,7 +29732,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 280, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -29864,7 +29816,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 281, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -29933,7 +29885,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 282, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30002,7 +29954,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 277, + "weight": 276, "cookies": false, "type": "", "deprecated": false, @@ -30082,7 +30034,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 278, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30160,7 +30112,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 287, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -30248,7 +30200,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 284, + "weight": 283, "cookies": false, "type": "", "deprecated": false, @@ -30321,7 +30273,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 285, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30371,7 +30323,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 286, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -35248,7 +35200,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/open-api3-1.6.x-server.json b/app/config/specs/open-api3-1.6.x-server.json index 68d408762a..33a9985d41 100644 --- a/app/config/specs/open-api3-1.6.x-server.json +++ b/app/config/specs/open-api3-1.6.x-server.json @@ -8138,7 +8138,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8211,7 +8211,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -8458,7 +8458,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8507,7 +8507,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8557,7 +8557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8616,7 +8616,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -8840,7 +8840,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -8901,7 +8901,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -8984,7 +8984,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -9080,7 +9080,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9149,7 +9149,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -9211,7 +9211,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9275,7 +9275,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9360,7 +9360,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9424,7 +9424,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -9497,7 +9497,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9584,7 +9584,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9700,7 +9700,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9766,7 +9766,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9837,7 +9837,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -9896,7 +9896,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -9982,7 +9982,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10051,7 +10051,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10137,7 +10137,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10208,7 +10208,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10261,7 +10261,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -10363,7 +10363,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -10570,7 +10570,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -10597,55 +10597,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthStatus" - } - } - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10668,7 +10619,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10730,7 +10681,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10792,7 +10743,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10865,7 +10816,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -10927,7 +10878,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11015,7 +10966,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11077,7 +11028,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11139,7 +11090,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11201,7 +11152,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11263,7 +11214,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11325,7 +11276,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11387,7 +11338,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11449,7 +11400,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11462,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11560,7 +11511,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11609,7 +11560,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -12082,7 +12033,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12158,7 +12109,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -12302,7 +12253,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -12448,7 +12399,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12622,7 +12573,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -12800,7 +12751,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12909,7 +12860,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13021,7 +12972,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13074,7 +13025,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13136,7 +13087,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13211,7 +13162,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13286,7 +13237,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13362,7 +13313,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13467,7 +13418,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13575,7 +13526,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -13660,7 +13611,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -13748,7 +13699,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -13863,7 +13814,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -13981,7 +13932,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14076,7 +14027,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14174,7 +14125,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14279,7 +14230,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14387,7 +14338,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14530,7 +14481,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14675,7 +14626,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14770,7 +14721,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14868,7 +14819,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -14963,7 +14914,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15061,7 +15012,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15156,7 +15107,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15254,7 +15205,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15349,7 +15300,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15447,7 +15398,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15500,7 +15451,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -15562,7 +15513,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -15637,7 +15588,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -15712,7 +15663,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15786,7 +15737,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15869,7 +15820,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -15929,7 +15880,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16006,7 +15957,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16068,7 +16019,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16143,7 +16094,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16227,7 +16178,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16318,7 +16269,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16381,7 +16332,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16457,7 +16408,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16530,7 +16481,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -16657,7 +16608,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16716,7 +16667,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -16840,7 +16791,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -16901,7 +16852,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -16988,7 +16939,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -17087,7 +17038,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17160,7 +17111,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -17250,7 +17201,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17318,7 +17269,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17386,7 +17337,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -17604,7 +17555,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17679,7 +17630,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -17756,7 +17707,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -17842,7 +17793,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -17905,7 +17856,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -17980,7 +17931,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18045,7 +17996,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18132,7 +18083,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18244,7 +18195,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18317,7 +18268,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18405,7 +18356,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18480,7 +18431,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18578,7 +18529,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18639,7 +18590,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -18721,7 +18672,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -18794,7 +18745,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -18882,7 +18833,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -18967,7 +18918,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19052,7 +19003,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -19120,7 +19071,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -19181,7 +19132,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19266,7 +19217,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19351,7 +19302,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19466,7 +19417,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19569,7 +19520,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19674,7 +19625,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -19726,7 +19677,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -19787,7 +19738,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -19867,7 +19818,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19949,7 +19900,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -20032,7 +19983,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20106,7 +20057,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20167,7 +20118,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -20240,7 +20191,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20316,7 +20267,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20377,7 +20328,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20436,7 +20387,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -20495,7 +20446,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20556,7 +20507,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -20636,7 +20587,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -20716,7 +20667,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -20796,7 +20747,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -20855,7 +20806,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -20935,7 +20886,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -20994,7 +20945,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -21046,7 +20997,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21100,7 +21051,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21171,7 +21122,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -21251,7 +21202,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -21324,7 +21275,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -21434,7 +21385,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -21504,7 +21455,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -21593,7 +21544,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -21665,7 +21616,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21747,7 +21698,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21827,7 +21778,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index 820b1f55e0..db563a6acf 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -4761,7 +4761,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -4846,7 +4846,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -4960,7 +4960,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5033,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5084,7 +5084,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -5543,7 +5543,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -5625,7 +5625,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -5699,7 +5699,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -5784,7 +5784,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -5881,7 +5881,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -5952,7 +5952,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -6040,7 +6040,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6106,7 +6106,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6172,7 +6172,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -6388,7 +6388,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6461,7 +6461,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6536,7 +6536,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -6620,7 +6620,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6681,7 +6681,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -6754,7 +6754,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -6817,7 +6817,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -6902,7 +6902,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7012,7 +7012,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7083,7 +7083,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7169,7 +7169,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7242,7 +7242,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7339,7 +7339,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -7399,7 +7399,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index 7f57dfc437..4c93f3d184 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -4293,7 +4293,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 333, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -4359,7 +4359,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 332, + "weight": 331, "cookies": false, "type": "", "deprecated": false, @@ -8986,7 +8986,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9058,7 +9058,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -9304,7 +9304,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9352,7 +9352,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9401,7 +9401,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 314, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -9500,7 +9500,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 315, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9559,7 +9559,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 294, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -9630,7 +9630,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9688,7 +9688,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9911,7 +9911,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9971,7 +9971,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -10053,7 +10053,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -10148,7 +10148,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10216,7 +10216,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -10277,7 +10277,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10340,7 +10340,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10424,7 +10424,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10487,7 +10487,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -10559,7 +10559,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10644,7 +10644,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10758,7 +10758,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10822,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10892,7 +10892,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 293, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -10973,7 +10973,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11031,7 +11031,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11116,7 +11116,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11184,7 +11184,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11269,7 +11269,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11339,7 +11339,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11390,7 +11390,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -11489,7 +11489,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11585,7 +11585,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11692,7 +11692,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -11718,54 +11718,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthStatus" - } - } - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11788,7 +11740,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11849,7 +11801,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11910,7 +11862,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11982,7 +11934,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12043,7 +11995,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -12130,7 +12082,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12191,7 +12143,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12252,7 +12204,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12313,7 +12265,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12374,7 +12326,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12435,7 +12387,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12496,7 +12448,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12557,7 +12509,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12618,7 +12570,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12666,7 +12618,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12714,7 +12666,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -13170,7 +13122,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13245,7 +13197,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -13388,7 +13340,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13533,7 +13485,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13706,7 +13658,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13883,7 +13835,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13991,7 +13943,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -14102,7 +14054,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14154,7 +14106,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14215,7 +14167,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -14289,7 +14241,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14363,7 +14315,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14438,7 +14390,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14542,7 +14494,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14649,7 +14601,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -14733,7 +14685,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -14820,7 +14772,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -14934,7 +14886,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15051,7 +15003,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15145,7 +15097,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15242,7 +15194,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15346,7 +15298,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15453,7 +15405,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15595,7 +15547,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15739,7 +15691,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15833,7 +15785,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15930,7 +15882,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16024,7 +15976,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16121,7 +16073,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16215,7 +16167,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16312,7 +16264,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16406,7 +16358,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16503,7 +16455,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16555,7 +16507,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -16616,7 +16568,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -16690,7 +16642,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16764,7 +16716,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16837,7 +16789,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16919,7 +16871,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16978,7 +16930,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17054,7 +17006,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17115,7 +17067,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17189,7 +17141,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17272,7 +17224,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17361,7 +17313,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17423,7 +17375,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17497,7 +17449,7 @@ }, "x-appwrite": { "method": "list", - "weight": 338, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -17570,7 +17522,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 334, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -17657,7 +17609,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 340, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -17749,7 +17701,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 335, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -17824,7 +17776,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 341, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -17895,7 +17847,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 337, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18005,7 +17957,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 343, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18137,7 +18089,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 336, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18241,7 +18193,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 342, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18364,7 +18316,7 @@ }, "x-appwrite": { "method": "get", - "weight": 339, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -18421,7 +18373,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 344, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18471,7 +18423,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 345, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18530,7 +18482,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 196, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -18617,7 +18569,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 198, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -18662,7 +18614,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 197, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -18734,7 +18686,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 199, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -18791,7 +18743,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 200, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -18865,7 +18817,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 201, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -18924,7 +18876,7 @@ }, "x-appwrite": { "method": "list", - "weight": 151, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -18995,7 +18947,7 @@ }, "x-appwrite": { "method": "create", - "weight": 150, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -19129,7 +19081,7 @@ }, "x-appwrite": { "method": "get", - "weight": 152, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19186,7 +19138,7 @@ }, "x-appwrite": { "method": "update", - "weight": 153, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19300,7 +19252,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 170, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19359,7 +19311,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 157, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -19450,7 +19402,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 158, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19528,7 +19480,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 163, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -19606,7 +19558,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 162, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -19684,7 +19636,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 168, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -19762,7 +19714,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 161, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -19852,7 +19804,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 169, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -19933,7 +19885,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 166, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20011,7 +19963,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 165, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20089,7 +20041,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 167, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20167,7 +20119,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 160, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20245,7 +20197,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 164, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20344,7 +20296,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 182, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20430,7 +20382,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 178, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20487,7 +20439,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 177, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -20579,7 +20531,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 179, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20646,7 +20598,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 180, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -20739,7 +20691,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 181, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -20808,7 +20760,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 159, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -20944,7 +20896,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 184, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21001,7 +20953,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 183, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -21119,7 +21071,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 185, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21186,7 +21138,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 186, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21280,7 +21232,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 187, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21349,7 +21301,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 155, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21448,7 +21400,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 156, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21526,7 +21478,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 188, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21643,7 +21595,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 189, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -21773,7 +21725,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 154, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -21851,7 +21803,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 191, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22074,7 +22026,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 193, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22337,7 +22289,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 195, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -22562,7 +22514,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 190, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22782,7 +22734,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 192, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -23021,7 +22973,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 194, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -23243,7 +23195,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 172, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23300,7 +23252,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 171, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -23414,7 +23366,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 173, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23481,7 +23433,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 174, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23596,7 +23548,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 176, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -23665,7 +23617,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 175, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -23734,7 +23686,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 317, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -23805,7 +23757,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 316, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -23888,7 +23840,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 318, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -23938,7 +23890,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 319, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -23997,7 +23949,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 320, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24056,7 +24008,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24128,7 +24080,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -24254,7 +24206,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24312,7 +24264,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24435,7 +24387,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24495,7 +24447,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -24580,7 +24532,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -24677,7 +24629,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -24748,7 +24700,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -24836,7 +24788,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -24902,7 +24854,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -24968,7 +24920,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -25184,7 +25136,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25257,7 +25209,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 216, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25328,7 +25280,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 217, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25409,7 +25361,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25484,7 +25436,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25568,7 +25520,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25629,7 +25581,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -25702,7 +25654,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -25765,7 +25717,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 231, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -25837,7 +25789,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -25922,7 +25874,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26032,7 +25984,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26103,7 +26055,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26189,7 +26141,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26262,7 +26214,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26358,7 +26310,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26417,7 +26369,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26497,7 +26449,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -26569,7 +26521,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -26656,7 +26608,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -26740,7 +26692,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26824,7 +26776,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -26891,7 +26843,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -26951,7 +26903,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27035,7 +26987,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27119,7 +27071,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27233,7 +27185,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27335,7 +27287,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27439,7 +27391,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 274, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -27510,7 +27462,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -27561,7 +27513,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -27621,7 +27573,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -27700,7 +27652,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -27781,7 +27733,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -27863,7 +27815,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -27936,7 +27888,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -27996,7 +27948,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -28068,7 +28020,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28143,7 +28095,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28203,7 +28155,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28261,7 +28213,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28319,7 +28271,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28379,7 +28331,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -28458,7 +28410,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28537,7 +28489,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -28616,7 +28568,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28674,7 +28626,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -28753,7 +28705,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -28811,7 +28763,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28862,7 +28814,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -28915,7 +28867,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -28985,7 +28937,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -29064,7 +29016,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -29136,7 +29088,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -29245,7 +29197,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29314,7 +29266,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29402,7 +29354,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -29473,7 +29425,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29554,7 +29506,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29633,7 +29585,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -29712,7 +29664,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 279, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -29780,7 +29732,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 280, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -29864,7 +29816,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 281, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -29933,7 +29885,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 282, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30002,7 +29954,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 277, + "weight": 276, "cookies": false, "type": "", "deprecated": false, @@ -30082,7 +30034,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 278, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30160,7 +30112,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 287, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -30248,7 +30200,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 284, + "weight": 283, "cookies": false, "type": "", "deprecated": false, @@ -30321,7 +30273,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 285, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30371,7 +30323,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 286, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -35248,7 +35200,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index 68d408762a..33a9985d41 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -8138,7 +8138,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8211,7 +8211,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -8458,7 +8458,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8507,7 +8507,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8557,7 +8557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8616,7 +8616,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -8840,7 +8840,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -8901,7 +8901,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -8984,7 +8984,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -9080,7 +9080,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9149,7 +9149,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -9211,7 +9211,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9275,7 +9275,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9360,7 +9360,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9424,7 +9424,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -9497,7 +9497,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9584,7 +9584,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9700,7 +9700,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9766,7 +9766,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9837,7 +9837,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -9896,7 +9896,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -9982,7 +9982,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10051,7 +10051,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10137,7 +10137,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10208,7 +10208,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10261,7 +10261,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -10363,7 +10363,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -10570,7 +10570,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -10597,55 +10597,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/healthStatus" - } - } - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10668,7 +10619,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10730,7 +10681,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10792,7 +10743,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10865,7 +10816,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -10927,7 +10878,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11015,7 +10966,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11077,7 +11028,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11139,7 +11090,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11201,7 +11152,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11263,7 +11214,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11325,7 +11276,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11387,7 +11338,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11449,7 +11400,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11462,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11560,7 +11511,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11609,7 +11560,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -12082,7 +12033,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12158,7 +12109,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -12302,7 +12253,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -12448,7 +12399,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12622,7 +12573,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -12800,7 +12751,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12909,7 +12860,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13021,7 +12972,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13074,7 +13025,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13136,7 +13087,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13211,7 +13162,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13286,7 +13237,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13362,7 +13313,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13467,7 +13418,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13575,7 +13526,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -13660,7 +13611,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -13748,7 +13699,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -13863,7 +13814,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -13981,7 +13932,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14076,7 +14027,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14174,7 +14125,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14279,7 +14230,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14387,7 +14338,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14530,7 +14481,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14675,7 +14626,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14770,7 +14721,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14868,7 +14819,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -14963,7 +14914,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15061,7 +15012,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15156,7 +15107,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15254,7 +15205,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15349,7 +15300,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15447,7 +15398,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15500,7 +15451,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -15562,7 +15513,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -15637,7 +15588,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -15712,7 +15663,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15786,7 +15737,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15869,7 +15820,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -15929,7 +15880,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16006,7 +15957,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16068,7 +16019,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16143,7 +16094,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16227,7 +16178,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16318,7 +16269,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16381,7 +16332,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16457,7 +16408,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16530,7 +16481,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -16657,7 +16608,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16716,7 +16667,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -16840,7 +16791,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -16901,7 +16852,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -16988,7 +16939,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -17087,7 +17038,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17160,7 +17111,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -17250,7 +17201,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17318,7 +17269,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17386,7 +17337,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -17604,7 +17555,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17679,7 +17630,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -17756,7 +17707,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -17842,7 +17793,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -17905,7 +17856,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -17980,7 +17931,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18045,7 +17996,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18132,7 +18083,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18244,7 +18195,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18317,7 +18268,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18405,7 +18356,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18480,7 +18431,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18578,7 +18529,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18639,7 +18590,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -18721,7 +18672,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -18794,7 +18745,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -18882,7 +18833,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -18967,7 +18918,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19052,7 +19003,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -19120,7 +19071,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -19181,7 +19132,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19266,7 +19217,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19351,7 +19302,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19466,7 +19417,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19569,7 +19520,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19674,7 +19625,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -19726,7 +19677,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -19787,7 +19738,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -19867,7 +19818,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19949,7 +19900,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -20032,7 +19983,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20106,7 +20057,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20167,7 +20118,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -20240,7 +20191,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20316,7 +20267,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20377,7 +20328,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20436,7 +20387,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -20495,7 +20446,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20556,7 +20507,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -20636,7 +20587,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -20716,7 +20667,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -20796,7 +20747,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -20855,7 +20806,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -20935,7 +20886,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -20994,7 +20945,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -21046,7 +20997,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21100,7 +21051,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21171,7 +21122,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -21251,7 +21202,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -21324,7 +21275,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -21434,7 +21385,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -21504,7 +21455,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -21593,7 +21544,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -21665,7 +21616,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21747,7 +21698,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21827,7 +21778,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-1.6.x-client.json b/app/config/specs/swagger2-1.6.x-client.json index c0980c44ce..793e9a13af 100644 --- a/app/config/specs/swagger2-1.6.x-client.json +++ b/app/config/specs/swagger2-1.6.x-client.json @@ -4927,7 +4927,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -5009,7 +5009,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -5127,7 +5127,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5198,7 +5198,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5271,7 +5271,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -5768,7 +5768,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -5852,7 +5852,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -5924,7 +5924,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -6006,7 +6006,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -6097,7 +6097,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -6166,7 +6166,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -6254,7 +6254,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6325,7 +6325,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6396,7 +6396,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -6595,7 +6595,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6666,7 +6666,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6740,7 +6740,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -6831,7 +6831,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6892,7 +6892,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -6966,7 +6966,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -7029,7 +7029,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7111,7 +7111,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7225,7 +7225,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7294,7 +7294,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7379,7 +7379,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7450,7 +7450,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7545,7 +7545,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -7605,7 +7605,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-1.6.x-console.json b/app/config/specs/swagger2-1.6.x-console.json index 94b0d55199..45fed68682 100644 --- a/app/config/specs/swagger2-1.6.x-console.json +++ b/app/config/specs/swagger2-1.6.x-console.json @@ -4497,7 +4497,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 333, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -4566,7 +4566,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 332, + "weight": 331, "cookies": false, "type": "", "deprecated": false, @@ -9135,7 +9135,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9206,7 +9206,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -9476,7 +9476,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9526,7 +9526,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9577,7 +9577,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 314, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -9672,7 +9672,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 315, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9731,7 +9731,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 294, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -9802,7 +9802,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9860,7 +9860,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -10100,7 +10100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10160,7 +10160,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -10239,7 +10239,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -10330,7 +10330,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10396,7 +10396,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -10457,7 +10457,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10522,7 +10522,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10603,7 +10603,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10671,7 +10671,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -10741,7 +10741,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10823,7 +10823,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10941,7 +10941,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -11005,7 +11005,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11073,7 +11073,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 293, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11152,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11210,7 +11210,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11295,7 +11295,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11361,7 +11361,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11446,7 +11446,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11514,7 +11514,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11587,7 +11587,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -11710,7 +11710,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11810,7 +11810,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11919,7 +11919,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -11945,56 +11945,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "consumes": [ - "application\/json" - ], - "produces": [ - "application\/json" - ], - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "schema": { - "$ref": "#\/definitions\/healthStatus" - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -12019,7 +11969,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12080,7 +12030,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -12141,7 +12091,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12211,7 +12161,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12272,7 +12222,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -12357,7 +12307,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12418,7 +12368,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12479,7 +12429,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12540,7 +12490,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12601,7 +12551,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12662,7 +12612,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12723,7 +12673,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12784,7 +12734,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12845,7 +12795,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12895,7 +12845,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12945,7 +12895,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -13419,7 +13369,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13493,7 +13443,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -13650,7 +13600,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13804,7 +13754,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13998,7 +13948,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14191,7 +14141,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -14308,7 +14258,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -14423,7 +14373,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14477,7 +14427,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14538,7 +14488,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -14611,7 +14561,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14684,7 +14634,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14758,7 +14708,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14872,7 +14822,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14984,7 +14934,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15074,7 +15024,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15162,7 +15112,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -15288,7 +15238,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15412,7 +15362,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15514,7 +15464,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15614,7 +15564,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15728,7 +15678,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15840,7 +15790,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15998,7 +15948,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -16153,7 +16103,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -16255,7 +16205,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -16355,7 +16305,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16457,7 +16407,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16557,7 +16507,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16659,7 +16609,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16759,7 +16709,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16861,7 +16811,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16961,7 +16911,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -17015,7 +16965,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -17076,7 +17026,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -17149,7 +17099,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17222,7 +17172,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -17294,7 +17244,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -17383,7 +17333,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17442,7 +17392,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17520,7 +17470,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17581,7 +17531,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17654,7 +17604,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17734,7 +17684,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17823,7 +17773,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17885,7 +17835,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17957,7 +17907,7 @@ }, "x-appwrite": { "method": "list", - "weight": 338, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18029,7 +17979,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 334, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -18122,7 +18072,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 340, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18209,7 +18159,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 335, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -18288,7 +18238,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 341, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18358,7 +18308,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 337, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18478,7 +18428,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 343, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18597,7 +18547,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 336, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18710,7 +18660,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 342, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18822,7 +18772,7 @@ }, "x-appwrite": { "method": "get", - "weight": 339, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -18879,7 +18829,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 344, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18931,7 +18881,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 345, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18990,7 +18940,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 196, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -19073,7 +19023,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 198, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19120,7 +19070,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 197, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -19196,7 +19146,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 199, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19253,7 +19203,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 200, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19329,7 +19279,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 201, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19388,7 +19338,7 @@ }, "x-appwrite": { "method": "list", - "weight": 151, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19458,7 +19408,7 @@ }, "x-appwrite": { "method": "create", - "weight": 150, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -19607,7 +19557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 152, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19664,7 +19614,7 @@ }, "x-appwrite": { "method": "update", - "weight": 153, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19788,7 +19738,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 170, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19847,7 +19797,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 157, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -19938,7 +19888,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 158, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -20015,7 +19965,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 163, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20092,7 +20042,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 162, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -20169,7 +20119,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 168, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20246,7 +20196,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 161, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20337,7 +20287,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 169, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -20417,7 +20367,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 166, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20494,7 +20444,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 165, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20571,7 +20521,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 167, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20648,7 +20598,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 160, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20725,7 +20675,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 164, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20821,7 +20771,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 182, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20907,7 +20857,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 178, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20964,7 +20914,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 177, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -21057,7 +21007,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 179, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -21122,7 +21072,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 180, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21216,7 +21166,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 181, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21283,7 +21233,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 159, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -21421,7 +21371,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 184, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21478,7 +21428,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 183, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -21599,7 +21549,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 185, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21664,7 +21614,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 186, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21760,7 +21710,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 187, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21827,7 +21777,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 155, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21926,7 +21876,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 156, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -22003,7 +21953,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 188, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -22131,7 +22081,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 189, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22268,7 +22218,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 154, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -22345,7 +22295,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 191, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22564,7 +22514,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 193, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22826,7 +22776,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 195, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23047,7 +22997,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 190, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -23263,7 +23213,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 192, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -23497,7 +23447,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 194, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -23715,7 +23665,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 172, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23772,7 +23722,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 171, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -23891,7 +23841,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 173, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23956,7 +23906,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 174, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -24076,7 +24026,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 176, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24143,7 +24093,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 175, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24210,7 +24160,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 317, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -24280,7 +24230,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 316, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -24368,7 +24318,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 318, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24420,7 +24370,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 319, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24479,7 +24429,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 320, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24538,7 +24488,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24609,7 +24559,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -24747,7 +24697,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24805,7 +24755,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24937,7 +24887,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24997,7 +24947,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -25079,7 +25029,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -25170,7 +25120,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -25239,7 +25189,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -25327,7 +25277,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -25398,7 +25348,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25469,7 +25419,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -25668,7 +25618,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25739,7 +25689,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 216, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25810,7 +25760,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 217, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25889,7 +25839,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25963,7 +25913,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -26054,7 +26004,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -26115,7 +26065,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26189,7 +26139,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26252,7 +26202,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 231, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26323,7 +26273,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26405,7 +26355,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26519,7 +26469,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26588,7 +26538,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26673,7 +26623,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26744,7 +26694,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26838,7 +26788,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26897,7 +26847,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26976,7 +26926,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -27047,7 +26997,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -27141,7 +27091,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27231,7 +27181,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27321,7 +27271,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -27389,7 +27339,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -27449,7 +27399,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27539,7 +27489,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27629,7 +27579,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27754,7 +27704,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27865,7 +27815,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27976,7 +27926,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 274, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28047,7 +27997,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -28100,7 +28050,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -28160,7 +28110,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -28238,7 +28188,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -28319,7 +28269,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -28400,7 +28350,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -28472,7 +28422,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -28532,7 +28482,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -28605,7 +28555,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28678,7 +28628,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28738,7 +28688,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28796,7 +28746,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28854,7 +28804,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28914,7 +28864,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -28992,7 +28942,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -29070,7 +29020,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -29148,7 +29098,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -29206,7 +29156,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29284,7 +29234,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29342,7 +29292,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -29395,7 +29345,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -29450,7 +29400,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -29518,7 +29468,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -29596,7 +29546,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -29667,7 +29617,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -29779,7 +29729,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29846,7 +29796,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29935,7 +29885,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -30004,7 +29954,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -30085,7 +30035,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -30163,7 +30113,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -30241,7 +30191,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 279, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30307,7 +30257,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 280, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -30391,7 +30341,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 281, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -30458,7 +30408,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 282, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30525,7 +30475,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 277, + "weight": 276, "cookies": false, "type": "", "deprecated": false, @@ -30601,7 +30551,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 278, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30680,7 +30630,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 287, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -30765,7 +30715,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 284, + "weight": 283, "cookies": false, "type": "", "deprecated": false, @@ -30837,7 +30787,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 285, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30889,7 +30839,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 286, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -35785,7 +35735,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/swagger2-1.6.x-server.json b/app/config/specs/swagger2-1.6.x-server.json index e38495629c..ae30cb6b37 100644 --- a/app/config/specs/swagger2-1.6.x-server.json +++ b/app/config/specs/swagger2-1.6.x-server.json @@ -8284,7 +8284,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8356,7 +8356,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -8627,7 +8627,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8678,7 +8678,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8730,7 +8730,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8789,7 +8789,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9030,7 +9030,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9091,7 +9091,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -9171,7 +9171,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -9263,7 +9263,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9330,7 +9330,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -9392,7 +9392,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9458,7 +9458,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9540,7 +9540,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9609,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -9680,7 +9680,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9764,7 +9764,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9884,7 +9884,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9950,7 +9950,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10019,7 +10019,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10078,7 +10078,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10164,7 +10164,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10231,7 +10231,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10317,7 +10317,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10386,7 +10386,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -10587,7 +10587,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -10689,7 +10689,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -10800,7 +10800,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -10827,57 +10827,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "consumes": [ - "application\/json" - ], - "produces": [ - "application\/json" - ], - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "schema": { - "$ref": "#\/definitions\/healthStatus" - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10902,7 +10851,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10964,7 +10913,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11026,7 +10975,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11097,7 +11046,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11159,7 +11108,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11245,7 +11194,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11307,7 +11256,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11369,7 +11318,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11431,7 +11380,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11493,7 +11442,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11555,7 +11504,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11617,7 +11566,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11679,7 +11628,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -11741,7 +11690,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11792,7 +11741,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11843,7 +11792,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -12334,7 +12283,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12409,7 +12358,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -12567,7 +12516,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -12722,7 +12671,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12917,7 +12866,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13111,7 +13060,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13229,7 +13178,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13345,7 +13294,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13400,7 +13349,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13462,7 +13411,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13536,7 +13485,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13610,7 +13559,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13685,7 +13634,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13800,7 +13749,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13913,7 +13862,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -14004,7 +13953,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -14093,7 +14042,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -14220,7 +14169,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -14345,7 +14294,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14448,7 +14397,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14549,7 +14498,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14664,7 +14613,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14777,7 +14726,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14936,7 +14885,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15092,7 +15041,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15195,7 +15144,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15296,7 +15245,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15399,7 +15348,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15500,7 +15449,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15603,7 +15552,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15704,7 +15653,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15807,7 +15756,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15908,7 +15857,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15963,7 +15912,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -16025,7 +15974,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -16099,7 +16048,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16173,7 +16122,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16246,7 +16195,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16336,7 +16285,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16396,7 +16345,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16475,7 +16424,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16537,7 +16486,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16611,7 +16560,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16692,7 +16641,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16783,7 +16732,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16846,7 +16795,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16920,7 +16869,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16992,7 +16941,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -17131,7 +17080,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -17190,7 +17139,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17323,7 +17272,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17384,7 +17333,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -17468,7 +17417,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -17561,7 +17510,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17632,7 +17581,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -17722,7 +17671,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17795,7 +17744,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17868,7 +17817,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -18069,7 +18018,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -18142,7 +18091,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -18218,7 +18167,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -18311,7 +18260,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18374,7 +18323,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18450,7 +18399,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18515,7 +18464,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18599,7 +18548,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18715,7 +18664,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18786,7 +18735,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18873,7 +18822,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18946,7 +18895,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -19042,7 +18991,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -19103,7 +19052,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -19184,7 +19133,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -19256,7 +19205,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -19351,7 +19300,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19442,7 +19391,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19533,7 +19482,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -19602,7 +19551,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -19663,7 +19612,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19754,7 +19703,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19845,7 +19794,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19971,7 +19920,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -20083,7 +20032,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -20195,7 +20144,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -20249,7 +20198,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -20310,7 +20259,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -20389,7 +20338,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -20471,7 +20420,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -20553,7 +20502,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20626,7 +20575,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20687,7 +20636,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -20761,7 +20710,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20835,7 +20784,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20896,7 +20845,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20955,7 +20904,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21014,7 +20963,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -21075,7 +21024,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -21154,7 +21103,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -21233,7 +21182,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -21312,7 +21261,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -21371,7 +21320,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21450,7 +21399,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21509,7 +21458,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -21563,7 +21512,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21619,7 +21568,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21688,7 +21637,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -21767,7 +21716,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -21839,7 +21788,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -21952,7 +21901,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -22020,7 +21969,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -22110,7 +22059,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -22180,7 +22129,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -22262,7 +22211,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -22341,7 +22290,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index c0980c44ce..793e9a13af 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -4927,7 +4927,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -5009,7 +5009,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -5127,7 +5127,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5198,7 +5198,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5271,7 +5271,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -5768,7 +5768,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -5852,7 +5852,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -5924,7 +5924,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -6006,7 +6006,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -6097,7 +6097,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -6166,7 +6166,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -6254,7 +6254,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6325,7 +6325,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6396,7 +6396,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -6595,7 +6595,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6666,7 +6666,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6740,7 +6740,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -6831,7 +6831,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6892,7 +6892,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -6966,7 +6966,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -7029,7 +7029,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7111,7 +7111,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7225,7 +7225,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7294,7 +7294,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7379,7 +7379,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7450,7 +7450,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7545,7 +7545,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -7605,7 +7605,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 94b0d55199..45fed68682 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -4497,7 +4497,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 333, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -4566,7 +4566,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 332, + "weight": 331, "cookies": false, "type": "", "deprecated": false, @@ -9135,7 +9135,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9206,7 +9206,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -9476,7 +9476,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9526,7 +9526,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9577,7 +9577,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 314, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -9672,7 +9672,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 315, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9731,7 +9731,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 294, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -9802,7 +9802,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9860,7 +9860,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -10100,7 +10100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10160,7 +10160,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -10239,7 +10239,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -10330,7 +10330,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10396,7 +10396,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -10457,7 +10457,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10522,7 +10522,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10603,7 +10603,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10671,7 +10671,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -10741,7 +10741,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10823,7 +10823,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10941,7 +10941,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -11005,7 +11005,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11073,7 +11073,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 293, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11152,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11210,7 +11210,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11295,7 +11295,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11361,7 +11361,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11446,7 +11446,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11514,7 +11514,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11587,7 +11587,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -11710,7 +11710,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11810,7 +11810,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11919,7 +11919,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -11945,56 +11945,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "consumes": [ - "application\/json" - ], - "produces": [ - "application\/json" - ], - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "schema": { - "$ref": "#\/definitions\/healthStatus" - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -12019,7 +11969,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12080,7 +12030,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -12141,7 +12091,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12211,7 +12161,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12272,7 +12222,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -12357,7 +12307,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12418,7 +12368,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12479,7 +12429,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12540,7 +12490,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12601,7 +12551,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12662,7 +12612,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12723,7 +12673,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12784,7 +12734,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12845,7 +12795,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12895,7 +12845,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12945,7 +12895,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -13419,7 +13369,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13493,7 +13443,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -13650,7 +13600,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13804,7 +13754,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13998,7 +13948,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14191,7 +14141,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -14308,7 +14258,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -14423,7 +14373,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14477,7 +14427,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14538,7 +14488,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -14611,7 +14561,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14684,7 +14634,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14758,7 +14708,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14872,7 +14822,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14984,7 +14934,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15074,7 +15024,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15162,7 +15112,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -15288,7 +15238,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15412,7 +15362,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15514,7 +15464,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15614,7 +15564,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15728,7 +15678,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15840,7 +15790,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15998,7 +15948,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -16153,7 +16103,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -16255,7 +16205,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -16355,7 +16305,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16457,7 +16407,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16557,7 +16507,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16659,7 +16609,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16759,7 +16709,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16861,7 +16811,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16961,7 +16911,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -17015,7 +16965,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -17076,7 +17026,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -17149,7 +17099,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17222,7 +17172,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -17294,7 +17244,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -17383,7 +17333,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17442,7 +17392,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17520,7 +17470,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17581,7 +17531,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17654,7 +17604,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17734,7 +17684,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17823,7 +17773,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17885,7 +17835,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17957,7 +17907,7 @@ }, "x-appwrite": { "method": "list", - "weight": 338, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18029,7 +17979,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 334, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -18122,7 +18072,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 340, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18209,7 +18159,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 335, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -18288,7 +18238,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 341, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18358,7 +18308,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 337, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18478,7 +18428,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 343, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18597,7 +18547,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 336, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18710,7 +18660,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 342, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18822,7 +18772,7 @@ }, "x-appwrite": { "method": "get", - "weight": 339, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -18879,7 +18829,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 344, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18931,7 +18881,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 345, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18990,7 +18940,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 196, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -19073,7 +19023,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 198, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19120,7 +19070,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 197, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -19196,7 +19146,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 199, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19253,7 +19203,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 200, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19329,7 +19279,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 201, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19388,7 +19338,7 @@ }, "x-appwrite": { "method": "list", - "weight": 151, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19458,7 +19408,7 @@ }, "x-appwrite": { "method": "create", - "weight": 150, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -19607,7 +19557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 152, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19664,7 +19614,7 @@ }, "x-appwrite": { "method": "update", - "weight": 153, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19788,7 +19738,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 170, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19847,7 +19797,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 157, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -19938,7 +19888,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 158, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -20015,7 +19965,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 163, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20092,7 +20042,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 162, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -20169,7 +20119,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 168, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20246,7 +20196,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 161, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20337,7 +20287,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 169, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -20417,7 +20367,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 166, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20494,7 +20444,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 165, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20571,7 +20521,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 167, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20648,7 +20598,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 160, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20725,7 +20675,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 164, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20821,7 +20771,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 182, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20907,7 +20857,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 178, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20964,7 +20914,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 177, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -21057,7 +21007,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 179, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -21122,7 +21072,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 180, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21216,7 +21166,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 181, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21283,7 +21233,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 159, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -21421,7 +21371,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 184, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21478,7 +21428,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 183, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -21599,7 +21549,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 185, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21664,7 +21614,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 186, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21760,7 +21710,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 187, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21827,7 +21777,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 155, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21926,7 +21876,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 156, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -22003,7 +21953,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 188, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -22131,7 +22081,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 189, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22268,7 +22218,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 154, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -22345,7 +22295,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 191, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22564,7 +22514,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 193, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22826,7 +22776,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 195, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23047,7 +22997,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 190, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -23263,7 +23213,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 192, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -23497,7 +23447,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 194, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -23715,7 +23665,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 172, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23772,7 +23722,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 171, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -23891,7 +23841,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 173, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23956,7 +23906,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 174, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -24076,7 +24026,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 176, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24143,7 +24093,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 175, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24210,7 +24160,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 317, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -24280,7 +24230,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 316, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -24368,7 +24318,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 318, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24420,7 +24370,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 319, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24479,7 +24429,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 320, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24538,7 +24488,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24609,7 +24559,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -24747,7 +24697,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24805,7 +24755,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24937,7 +24887,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24997,7 +24947,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -25079,7 +25029,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -25170,7 +25120,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -25239,7 +25189,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -25327,7 +25277,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -25398,7 +25348,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25469,7 +25419,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -25668,7 +25618,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25739,7 +25689,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 216, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25810,7 +25760,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 217, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25889,7 +25839,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25963,7 +25913,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -26054,7 +26004,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -26115,7 +26065,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26189,7 +26139,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26252,7 +26202,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 231, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26323,7 +26273,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26405,7 +26355,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26519,7 +26469,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26588,7 +26538,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26673,7 +26623,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26744,7 +26694,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26838,7 +26788,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26897,7 +26847,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26976,7 +26926,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -27047,7 +26997,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -27141,7 +27091,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27231,7 +27181,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27321,7 +27271,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -27389,7 +27339,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -27449,7 +27399,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27539,7 +27489,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27629,7 +27579,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27754,7 +27704,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27865,7 +27815,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27976,7 +27926,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 274, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28047,7 +27997,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -28100,7 +28050,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -28160,7 +28110,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -28238,7 +28188,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -28319,7 +28269,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -28400,7 +28350,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -28472,7 +28422,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -28532,7 +28482,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -28605,7 +28555,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28678,7 +28628,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28738,7 +28688,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28796,7 +28746,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28854,7 +28804,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28914,7 +28864,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -28992,7 +28942,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -29070,7 +29020,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -29148,7 +29098,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -29206,7 +29156,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29284,7 +29234,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29342,7 +29292,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -29395,7 +29345,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -29450,7 +29400,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -29518,7 +29468,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -29596,7 +29546,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -29667,7 +29617,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -29779,7 +29729,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29846,7 +29796,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29935,7 +29885,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -30004,7 +29954,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -30085,7 +30035,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -30163,7 +30113,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -30241,7 +30191,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 279, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30307,7 +30257,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 280, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -30391,7 +30341,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 281, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -30458,7 +30408,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 282, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30525,7 +30475,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 277, + "weight": 276, "cookies": false, "type": "", "deprecated": false, @@ -30601,7 +30551,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 278, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30680,7 +30630,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 287, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -30765,7 +30715,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 284, + "weight": 283, "cookies": false, "type": "", "deprecated": false, @@ -30837,7 +30787,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 285, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30889,7 +30839,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 286, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -35785,7 +35735,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index e38495629c..ae30cb6b37 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -8284,7 +8284,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8356,7 +8356,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -8627,7 +8627,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8678,7 +8678,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8730,7 +8730,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8789,7 +8789,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9030,7 +9030,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9091,7 +9091,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -9171,7 +9171,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 298, "cookies": false, "type": "upload", "deprecated": false, @@ -9263,7 +9263,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9330,7 +9330,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -9392,7 +9392,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9458,7 +9458,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9540,7 +9540,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9609,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 295, "cookies": false, "type": "location", "deprecated": false, @@ -9680,7 +9680,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9764,7 +9764,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9884,7 +9884,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9950,7 +9950,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10019,7 +10019,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10078,7 +10078,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10164,7 +10164,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10231,7 +10231,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10317,7 +10317,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10386,7 +10386,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 329, "cookies": false, "type": "graphql", "deprecated": false, @@ -10587,7 +10587,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -10689,7 +10689,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -10800,7 +10800,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -10827,57 +10827,6 @@ ] } }, - "\/health\/queue": { - "get": { - "summary": "Get queue", - "operationId": "healthGetQueue", - "consumes": [ - "application\/json" - ], - "produces": [ - "application\/json" - ], - "tags": [ - "health" - ], - "description": "Check the Appwrite queue messaging servers are up and connection is successful.", - "responses": { - "200": { - "description": "Health Status", - "schema": { - "$ref": "#\/definitions\/healthStatus" - } - } - }, - "x-appwrite": { - "method": "getQueue", - "weight": 129, - "cookies": false, - "type": "", - "deprecated": false, - "demo": "health\/get-queue.md", - "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "health.read", - "platforms": [ - "server" - ], - "packaging": false, - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ] - } - }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10902,7 +10851,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10964,7 +10913,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11026,7 +10975,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11097,7 +11046,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11159,7 +11108,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11245,7 +11194,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11307,7 +11256,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11369,7 +11318,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11431,7 +11380,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11493,7 +11442,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11555,7 +11504,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11617,7 +11566,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11679,7 +11628,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -11741,7 +11690,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11792,7 +11741,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11843,7 +11792,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -12334,7 +12283,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 384, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12409,7 +12358,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 381, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -12567,7 +12516,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 388, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -12722,7 +12671,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 383, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12917,7 +12866,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 390, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13111,7 +13060,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 382, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13229,7 +13178,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 389, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13345,7 +13294,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 387, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13400,7 +13349,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 391, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13462,7 +13411,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 385, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13536,7 +13485,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 386, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13610,7 +13559,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 356, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13685,7 +13634,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 355, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13800,7 +13749,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 368, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13913,7 +13862,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 354, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -14004,7 +13953,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 367, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -14093,7 +14042,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 346, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -14220,7 +14169,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 359, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -14345,7 +14294,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 349, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14448,7 +14397,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 362, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14549,7 +14498,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 347, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14664,7 +14613,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 360, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14777,7 +14726,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 348, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14936,7 +14885,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 361, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15092,7 +15041,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 350, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15195,7 +15144,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 363, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15296,7 +15245,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 351, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15399,7 +15348,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 364, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15500,7 +15449,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 352, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15603,7 +15552,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 365, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15704,7 +15653,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 353, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15807,7 +15756,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 366, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15908,7 +15857,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 358, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15963,7 +15912,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 369, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -16025,7 +15974,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 357, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -16099,7 +16048,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 378, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16173,7 +16122,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 371, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16246,7 +16195,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 370, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16336,7 +16285,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 373, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16396,7 +16345,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 374, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16475,7 +16424,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 375, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16537,7 +16486,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 372, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16611,7 +16560,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 377, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16692,7 +16641,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 376, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16783,7 +16732,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 379, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16846,7 +16795,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 380, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16920,7 +16869,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16992,7 +16941,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -17131,7 +17080,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -17190,7 +17139,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17323,7 +17272,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17384,7 +17333,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -17468,7 +17417,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 206, "cookies": false, "type": "upload", "deprecated": false, @@ -17561,7 +17510,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17632,7 +17581,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 213, "cookies": false, "type": "", "deprecated": false, @@ -17722,7 +17671,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17795,7 +17744,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17868,7 +17817,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 209, "cookies": false, "type": "location", "deprecated": false, @@ -18069,7 +18018,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -18142,7 +18091,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -18218,7 +18167,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -18311,7 +18260,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18374,7 +18323,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18450,7 +18399,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18515,7 +18464,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18599,7 +18548,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18715,7 +18664,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18786,7 +18735,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18873,7 +18822,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18946,7 +18895,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -19042,7 +18991,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -19103,7 +19052,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -19184,7 +19133,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -19256,7 +19205,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -19351,7 +19300,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19442,7 +19391,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19533,7 +19482,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -19602,7 +19551,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -19663,7 +19612,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19754,7 +19703,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19845,7 +19794,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19971,7 +19920,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -20083,7 +20032,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -20195,7 +20144,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -20249,7 +20198,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -20310,7 +20259,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -20389,7 +20338,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -20471,7 +20420,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -20553,7 +20502,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20626,7 +20575,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20687,7 +20636,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -20761,7 +20710,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20835,7 +20784,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20896,7 +20845,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20955,7 +20904,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21014,7 +20963,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -21075,7 +21024,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -21154,7 +21103,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -21233,7 +21182,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -21312,7 +21261,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -21371,7 +21320,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21450,7 +21399,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21509,7 +21458,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -21563,7 +21512,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21619,7 +21568,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21688,7 +21637,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -21767,7 +21716,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -21839,7 +21788,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -21952,7 +21901,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -22020,7 +21969,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -22110,7 +22059,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -22180,7 +22129,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -22262,7 +22211,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -22341,7 +22290,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 251, "cookies": false, "type": "", "deprecated": false, diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index bd9562110f..2e60d08d43 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -21,6 +21,7 @@ use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Hooks\Hooks; use Appwrite\Network\Validator\Email; +use Appwrite\Network\Validator\Redirect; use Appwrite\OpenSSL\OpenSSL; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; @@ -59,7 +60,6 @@ use Utopia\System\System; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; use Utopia\Validator\Boolean; -use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\URL; use Utopia\Validator\WhiteList; @@ -1188,8 +1188,8 @@ App::get('/v1/account/sessions/oauth2/:provider') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.') - ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) - ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('success', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) + ->param('failure', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) ->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('request') ->inject('response') @@ -1784,8 +1784,8 @@ App::get('/v1/account/tokens/oauth2/:provider') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.') - ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) - ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('success', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) + ->param('failure', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) ->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('request') ->inject('response') @@ -1864,7 +1864,7 @@ App::post('/v1/account/tokens/magic-url') ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') - ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), '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, ['hostnames', 'schemes']) ->param('phrase', false, new Boolean(), 'Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.', true) ->inject('request') ->inject('response') @@ -3157,7 +3157,7 @@ App::post('/v1/account/recovery') ->label('abuse-limit', 10) ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('email', '', new Email(), 'User email.') - ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients']) + ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['hostnames', 'schemes']) ->inject('request') ->inject('response') ->inject('user') @@ -3432,7 +3432,7 @@ App::post('/v1/account/verification') )) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{userId}') - ->param('url', '', fn ($clients) => new Host($clients), '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.', false, ['clients']) // TODO add built-in confirm page + ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), '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.', false, ['hostnames', 'schemes']) // TODO add built-in confirm page ->inject('request') ->inject('response') ->inject('project') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 48d20cd17f..ac73994aef 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -1741,7 +1741,7 @@ App::post('/v1/projects/:projectId/platforms') ] )) ->param('projectId', '', new UID(), 'Project unique ID.') - ->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, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], 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, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], 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/controllers/api/teams.php b/app/controllers/api/teams.php index 7f988d726f..4029c5b2f1 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -11,6 +11,7 @@ use Appwrite\Event\Messaging; use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; +use Appwrite\Network\Validator\Redirect; use Appwrite\Platform\Workers\Deletes; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; @@ -49,7 +50,6 @@ use Utopia\Locale\Locale; use Utopia\System\System; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; -use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; @@ -455,7 +455,7 @@ App::post('/v1/teams/:teamId/memberships') } return new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE); }, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', false, ['project']) - ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This 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']) // TODO add our own built-in confirm page + ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This 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, ['hostnames', 'schemes']) // TODO add our own built-in confirm page ->param('name', '', new Text(128), 'Name of the new team member. Max length: 128 chars.', true) ->inject('response') ->inject('project') diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index 2c145febcc..0d45d62dff 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -288,8 +288,8 @@ App::get('/v1/vcs/github/authorize') type: MethodType::WEBAUTH, hide: true, )) - ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a successful installation attempt.', true, ['clients']) - ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a failed installation attempt.', true, ['clients']) + ->param('success', '', fn ($hostnames) => new Host($hostnames), 'URL to redirect back to console after a successful installation attempt.', true, ['hostnames']) + ->param('failure', '', fn ($hostnames) => new Host($hostnames), 'URL to redirect back to console after a failed installation attempt.', true, ['hostnames']) ->inject('request') ->inject('response') ->inject('project') diff --git a/app/controllers/general.php b/app/controllers/general.php index 7e691d033f..b9d1f008ad 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -497,7 +497,7 @@ App::init() ->inject('getProjectDB') ->inject('locale') ->inject('localeCodes') - ->inject('clients') + ->inject('hostnames') ->inject('geodb') ->inject('queueForUsage') ->inject('queueForEvents') @@ -505,7 +505,8 @@ App::init() ->inject('queueForFunctions') ->inject('isResourceBlocked') ->inject('previewHostname') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname) { + ->inject('platforms') + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $hostnames, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname, array $platforms) { /* * Appwrite Router */ @@ -621,7 +622,7 @@ App::init() $port = \parse_url($request->getOrigin($referrer), PHP_URL_PORT); $refDomainOrigin = 'localhost'; - $validator = new Hostname($clients); + $validator = new Hostname($hostnames); if ($validator->isValid($origin)) { $refDomainOrigin = $origin; } @@ -712,7 +713,7 @@ App::init() * Skip this check for non-web platforms which are not required to send an origin header */ $origin = $request->getOrigin($request->getReferer('')); - $originValidator = new Origin(\array_merge($project->getAttribute('platforms', []), $console->getAttribute('platforms', []))); + $originValidator = new Origin($platforms); if ( !$originValidator->isValid($origin) diff --git a/app/controllers/mock.php b/app/controllers/mock.php index 16d8e03841..eb108ac61a 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -3,6 +3,7 @@ global $utopia, $request, $response; use Appwrite\Extend\Exception; +use Appwrite\Network\Validator\Redirect; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; use Utopia\App; @@ -14,7 +15,6 @@ use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\UID; use Utopia\System\System; -use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; use Utopia\VCS\Adapter\Git\GitHub; @@ -26,7 +26,7 @@ App::get('/v1/mock/tests/general/oauth2') ->label('docs', false) ->label('mock', true) ->param('client_id', '', new Text(100), 'OAuth2 Client ID.') - ->param('redirect_uri', '', new Host(['localhost']), 'OAuth2 Redirect URI.') // Important to deny an open redirect attack + ->param('redirect_uri', '', new Redirect(['localhost']), 'OAuth2 Redirect URI.') // Important to deny an open redirect attack ->param('scope', '', new Text(100), 'OAuth2 scope list.') ->param('state', '', new Text(1024), 'OAuth2 state.') ->inject('response') @@ -44,7 +44,7 @@ App::get('/v1/mock/tests/general/oauth2/token') ->param('client_id', '', new Text(100), 'OAuth2 Client ID.') ->param('client_secret', '', new Text(100), 'OAuth2 scope list.') ->param('grant_type', 'authorization_code', new WhiteList(['refresh_token', 'authorization_code']), 'OAuth2 Grant Type.', true) - ->param('redirect_uri', '', new Host(['localhost']), 'OAuth2 Redirect URI.', true) + ->param('redirect_uri', '', new Redirect(['localhost']), 'OAuth2 Redirect URI.', true) ->param('code', '', new Text(100), 'OAuth2 state.', true) ->param('refresh_token', '', new Text(100), 'OAuth2 refresh token.', true) ->inject('response') diff --git a/app/init.php b/app/init.php index 941e253260..93f31a6c4a 100644 --- a/app/init.php +++ b/app/init.php @@ -1191,58 +1191,46 @@ App::setResource('queueForCertificates', function (Queue\Publisher $publisher) { App::setResource('queueForMigrations', function (Queue\Publisher $publisher) { return new Migration($publisher); }, ['publisher']); -App::setResource('clients', function ($request, $console, $project) { - $console->setAttribute('platforms', [ // Always allow current host - '$collection' => ID::custom('platforms'), - 'name' => 'Current Host', - 'type' => Origin::CLIENT_TYPE_WEB, - 'hostname' => $request->getHostname(), - ], Document::SET_TYPE_APPEND); - - $hostnames = explode(',', System::getEnv('_APP_CONSOLE_HOSTNAMES', '')); +App::setResource('platforms', function (Document $project, Document $console) { + return [ + ...$project->getAttribute('platforms', []), + ...$console->getAttribute('platforms', []), + ]; +}, ['project', 'console']); +App::setResource('hostnames', function (array $platforms) { + // Allow environment configured hostnames + $hostnames = []; $validator = new Hostname(); - foreach ($hostnames as $hostname) { + foreach (explode(',', System::getEnv('_APP_CONSOLE_HOSTNAMES', '')) as $hostname) { $hostname = trim($hostname); - if (!$validator->isValid($hostname)) { - continue; - } - $console->setAttribute('platforms', [ - '$collection' => ID::custom('platforms'), - 'type' => Origin::CLIENT_TYPE_WEB, - 'name' => $hostname, - 'hostname' => $hostname, - ], Document::SET_TYPE_APPEND); - } - - /** - * Get All verified client URLs for both console and current projects - * + Filter for duplicated entries - */ - $clientsConsole = \array_map( - fn ($node) => $node['hostname'], - \array_filter( - $console->getAttribute('platforms', []), - fn ($node) => (isset($node['type']) && ($node['type'] === Origin::CLIENT_TYPE_WEB) && !empty($node['hostname'])) - ) - ); - - $clients = $clientsConsole; - $platforms = $project->getAttribute('platforms', []); - - foreach ($platforms as $node) { - if ( - isset($node['type']) && - ($node['type'] === Origin::CLIENT_TYPE_WEB || - $node['type'] === Origin::CLIENT_TYPE_FLUTTER_WEB) && - !empty($node['hostname']) - ) { - $clients[] = $node['hostname']; + if ($validator->isValid($hostname)) { + $hostnames[] = $hostname; } } - return \array_unique($clients); -}, ['request', 'console', 'project']); + // Add database configured hostnames + foreach ($platforms as $platform) { + if (!empty($platform['hostname']) && in_array($platform['type'], [ + Origin::CLIENT_TYPE_WEB, + Origin::CLIENT_TYPE_FLUTTER_WEB, + ])) { + $hostnames[] = $platform['hostname']; + } + } + return \array_unique($hostnames); +}, ['platforms']); +App::setResource('schemes', function (array $platforms, Document $project) { + // Allow expo development scheme by default + $schemes = ['exp']; + + // Allow `appwrite-callback-${projectId}` scheme by default + if (!empty($project) && $project->getId() !== 'console') { + $schemes[] = 'appwrite-callback-' . $project->getId(); + } + + return \array_unique($schemes); +}, ['platforms', 'project']); App::setResource('user', function ($mode, $project, $console, $request, $response, $dbForProject, $dbForPlatform) { /** @var Appwrite\Utopia\Request $request */ /** @var Appwrite\Utopia\Response $response */ diff --git a/src/Appwrite/GraphQL/Types/Mapper.php b/src/Appwrite/GraphQL/Types/Mapper.php index e5056d0abc..c0bcb9b716 100644 --- a/src/Appwrite/GraphQL/Types/Mapper.php +++ b/src/Appwrite/GraphQL/Types/Mapper.php @@ -266,6 +266,7 @@ class Mapper case 'Appwrite\Utopia\Database\Validator\CustomId': case 'Utopia\Validator\Domain': case 'Appwrite\Network\Validator\Email': + case 'Appwrite\Network\Validator\Redirect': case 'Appwrite\Event\Validator\Event': case 'Appwrite\Event\Validator\FunctionEvent': case 'Utopia\Validator\HexColor': diff --git a/src/Appwrite/Network/Validator/Redirect.php b/src/Appwrite/Network/Validator/Redirect.php new file mode 100644 index 0000000000..3402e72aef --- /dev/null +++ b/src/Appwrite/Network/Validator/Redirect.php @@ -0,0 +1,86 @@ + $hostnames Allow list of allowed hostnames + * @param array $schemes Allow list of allowed schemes + */ + public function __construct(array $hostnames = [], array $schemes = []) + { + $this->schemes = $schemes; + parent::__construct($hostnames); + } + + /** + * Get Description + * + * Returns validator description + * + * @return string + */ + public function getDescription(): string + { + $schemes = ''; + if (!empty($this->schemes)) { + $schemes = "URL scheme must be one of the following: " . implode(", ", array_map(function ($scheme) { + return "`$scheme`://"; + }, $this->schemes)); + } + + $hostnames = ''; + if (!empty($this->hostnames)) { + $hostnames = "URL hostname must be one of the following: " . implode(", ", array_map(function ($hostname) { + return "http://`$hostname`"; + }, $this->hostnames)); + } + + return $schemes . ($schemes && $hostnames ? " or " : "") . $hostnames; + } + + /** + * Is valid + * + * Validation will pass when $value is a valid URL and the host is allowed + * + * @param mixed $value + * @return bool + */ + public function isValid($value): bool + { + if (empty($value) || !\is_string($value)) { + return false; + } + + // Then check for scheme + $scheme = ''; + if (preg_match('/^([a-z][a-z0-9+\.-]*):\/+/i', $value, $matches)) { + $scheme = strtolower($matches[1]); + } + + // These are dangerous schemes, may expose XSS vulnerabilities + if (in_array($scheme, ["javascript", "data", "blob", "file"])) { + return false; + } + + // When the scheme is in the allowed list, the URL is valid. + if (!empty($this->schemes) && in_array($scheme, $this->schemes)) { + return true; + } + + return parent::isValid($value); + } +} diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index bd5405539d..2eb9187882 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -375,6 +375,7 @@ class OpenAPI3 extends Format $node['schema']['format'] = 'email'; $node['schema']['x-example'] = 'email@example.com'; break; + case 'Appwrite\Network\Validator\Redirect': case 'Utopia\Validator\Host': case 'Utopia\Validator\URL': $node['schema']['type'] = $validator->getType(); diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 7277e3ab2b..927cda27d1 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -393,6 +393,7 @@ class Swagger2 extends Format $node['format'] = 'email'; $node['x-example'] = 'email@example.com'; break; + case 'Appwrite\Network\Validator\Redirect': case 'Utopia\Validator\Host': case 'Utopia\Validator\URL': $node['type'] = $validator->getType(); diff --git a/src/Appwrite/Utopia/Response/Model/Platform.php b/src/Appwrite/Utopia/Response/Model/Platform.php index 4b8ffb1486..16ff3f40fd 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-web, flutter-ios, flutter-android, ios, android, and unity.', + 'description' => 'Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.', 'default' => '', 'example' => 'web', ]) diff --git a/tests/unit/Network/Validators/RedirectTest.php b/tests/unit/Network/Validators/RedirectTest.php new file mode 100644 index 0000000000..301a831a58 --- /dev/null +++ b/tests/unit/Network/Validators/RedirectTest.php @@ -0,0 +1,43 @@ + [["localhost"], [], "http://localhost", true], + "localhost-no-scheme" => [["localhost"], [], "localhost", false], + "expo scheme" => [[], ["exp"], "exp://192.168.0.1", true], + "custom scheme" => [[], ["myapp"], "myapp://", true], + "custom scheme triple slash" => [[], ["myapp"], "myapp:///", true], + "scheme with special chars" => [[], ["my-app+custom.123"], "my-app+custom.123://", true], + "url https" => [["example.com"], [], "https://example.com", true], + "url http" => [["example.com"], [], "http://example.com", true], + "malformed scheme" => [[], [], "http:/example.com", false], + "invalid url" => [[], [], "example.com", false], + "invalid host" => [["notexample.com"], [], "https://example.com", false], + "javascript scheme" => [[], [], "javascript://alert(1)", false], + "javascript scheme with different case" => [[], [], "JaVaScRiPt://alert(1)", false], + "empty string" => [[], [], "", false], + ]; + } + + /** + * @dataProvider redirectsProvider + */ + public function testIsValid( + array $hostnames, + array $schemes, + string $value, + bool $expected + ): void { + $validator = new Redirect($hostnames, $schemes); + + $this->assertEquals($expected, $validator->isValid($value)); + } +} From 768e4c4988a5125a5bbd23015f23c49153610a27 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Fri, 7 Feb 2025 10:36:41 +0000 Subject: [PATCH 55/99] chore: added webp to allowed file inputs --- app/config/storage/inputs.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/config/storage/inputs.php b/app/config/storage/inputs.php index 4532279b31..713801cd7c 100644 --- a/app/config/storage/inputs.php +++ b/app/config/storage/inputs.php @@ -7,4 +7,5 @@ return [ "gif" => "image/gif", "png" => "image/png", "heic" => "image/heic", + "webp" => "image/webp", ]; From 10b88ba19435be0c9f579d0de245a35a4c851797 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 10:38:36 +0000 Subject: [PATCH 56/99] chore: small improvements --- app/init.php | 4 +--- src/Appwrite/Network/Validator/Redirect.php | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/init.php b/app/init.php index 93f31a6c4a..1d7cf648d9 100644 --- a/app/init.php +++ b/app/init.php @@ -1221,11 +1221,9 @@ App::setResource('hostnames', function (array $platforms) { return \array_unique($hostnames); }, ['platforms']); App::setResource('schemes', function (array $platforms, Document $project) { - // Allow expo development scheme by default - $schemes = ['exp']; - // Allow `appwrite-callback-${projectId}` scheme by default if (!empty($project) && $project->getId() !== 'console') { + $schemes[] = 'exp'; $schemes[] = 'appwrite-callback-' . $project->getId(); } diff --git a/src/Appwrite/Network/Validator/Redirect.php b/src/Appwrite/Network/Validator/Redirect.php index 3402e72aef..bc3bb81d8a 100644 --- a/src/Appwrite/Network/Validator/Redirect.php +++ b/src/Appwrite/Network/Validator/Redirect.php @@ -22,6 +22,7 @@ class Redirect extends Host public function __construct(array $hostnames = [], array $schemes = []) { $this->schemes = $schemes; + $this->hostnames = $hostnames; parent::__construct($hostnames); } From 10ab613f3b9fb710774f549cb4bf0e9f57dd749a Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 15:15:54 +0000 Subject: [PATCH 57/99] chore: fix empty schemes --- app/init.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/init.php b/app/init.php index 1d7cf648d9..dfcb198f1e 100644 --- a/app/init.php +++ b/app/init.php @@ -1221,6 +1221,8 @@ App::setResource('hostnames', function (array $platforms) { return \array_unique($hostnames); }, ['platforms']); App::setResource('schemes', function (array $platforms, Document $project) { + $schemes = []; + // Allow `appwrite-callback-${projectId}` scheme by default if (!empty($project) && $project->getId() !== 'console') { $schemes[] = 'exp'; From 111c28592d9582fe7fbe02b05aa737626f03b44d Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 15:22:02 +0000 Subject: [PATCH 58/99] chore: fix warning --- src/Appwrite/Network/Validator/Redirect.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Appwrite/Network/Validator/Redirect.php b/src/Appwrite/Network/Validator/Redirect.php index bc3bb81d8a..354046a143 100644 --- a/src/Appwrite/Network/Validator/Redirect.php +++ b/src/Appwrite/Network/Validator/Redirect.php @@ -14,6 +14,7 @@ use Utopia\Validator\Host; class Redirect extends Host { protected array $schemes = []; + protected array $hostnames = []; /** * @param array $hostnames Allow list of allowed hostnames From 3d74b651fe79d24ab027588ae2d673a3a9721a6b Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 15:49:15 +0000 Subject: [PATCH 59/99] test: subdomain case --- src/Appwrite/Network/Validator/Redirect.php | 4 ++-- tests/unit/Network/Validators/RedirectTest.php | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Network/Validator/Redirect.php b/src/Appwrite/Network/Validator/Redirect.php index 354046a143..aa1592cd08 100644 --- a/src/Appwrite/Network/Validator/Redirect.php +++ b/src/Appwrite/Network/Validator/Redirect.php @@ -39,14 +39,14 @@ class Redirect extends Host $schemes = ''; if (!empty($this->schemes)) { $schemes = "URL scheme must be one of the following: " . implode(", ", array_map(function ($scheme) { - return "`$scheme`://"; + return "$scheme://"; }, $this->schemes)); } $hostnames = ''; if (!empty($this->hostnames)) { $hostnames = "URL hostname must be one of the following: " . implode(", ", array_map(function ($hostname) { - return "http://`$hostname`"; + return "http://$hostname"; }, $this->hostnames)); } diff --git a/tests/unit/Network/Validators/RedirectTest.php b/tests/unit/Network/Validators/RedirectTest.php index 301a831a58..8c039451e0 100644 --- a/tests/unit/Network/Validators/RedirectTest.php +++ b/tests/unit/Network/Validators/RedirectTest.php @@ -18,6 +18,8 @@ class RedirectTest extends TestCase "scheme with special chars" => [[], ["my-app+custom.123"], "my-app+custom.123://", true], "url https" => [["example.com"], [], "https://example.com", true], "url http" => [["example.com"], [], "http://example.com", true], + "wildcard" => [["*"], [], "https://example.com", true], + "wildcard subdomain" => [["*.example.com"], [], "https://sub.example.com", true], "malformed scheme" => [[], [], "http:/example.com", false], "invalid url" => [[], [], "example.com", false], "invalid host" => [["notexample.com"], [], "https://example.com", false], From 975393ae48f18e76d4bad82bbaf4207a08d3af7a Mon Sep 17 00:00:00 2001 From: "Luke B. Silver" <22452787+loks0n@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:34:58 +0000 Subject: [PATCH 60/99] Revert "Restore "feat: custom app schemes""" --- app/config/specs/open-api3-1.6.x-client.json | 56 +- app/config/specs/open-api3-1.6.x-console.json | 546 +++++++++-------- app/config/specs/open-api3-1.6.x-server.json | 367 +++++++----- app/config/specs/open-api3-latest-client.json | 56 +- .../specs/open-api3-latest-console.json | 546 +++++++++-------- app/config/specs/open-api3-latest-server.json | 367 +++++++----- app/config/specs/swagger2-1.6.x-client.json | 56 +- app/config/specs/swagger2-1.6.x-console.json | 548 ++++++++++-------- app/config/specs/swagger2-1.6.x-server.json | 369 +++++++----- app/config/specs/swagger2-latest-client.json | 56 +- app/config/specs/swagger2-latest-console.json | 548 ++++++++++-------- app/config/specs/swagger2-latest-server.json | 369 +++++++----- app/controllers/api/account.php | 16 +- app/controllers/api/projects.php | 2 +- app/controllers/api/teams.php | 4 +- app/controllers/api/vcs.php | 4 +- app/controllers/general.php | 9 +- app/controllers/mock.php | 6 +- app/init.php | 80 +-- src/Appwrite/GraphQL/Types/Mapper.php | 1 - src/Appwrite/Network/Validator/Redirect.php | 88 --- .../Specification/Format/OpenAPI3.php | 1 - .../Specification/Format/Swagger2.php | 1 - .../Utopia/Response/Model/Platform.php | 2 +- .../unit/Network/Validators/RedirectTest.php | 45 -- 25 files changed, 2207 insertions(+), 1936 deletions(-) delete mode 100644 src/Appwrite/Network/Validator/Redirect.php delete mode 100644 tests/unit/Network/Validators/RedirectTest.php diff --git a/app/config/specs/open-api3-1.6.x-client.json b/app/config/specs/open-api3-1.6.x-client.json index db563a6acf..820b1f55e0 100644 --- a/app/config/specs/open-api3-1.6.x-client.json +++ b/app/config/specs/open-api3-1.6.x-client.json @@ -4761,7 +4761,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -4846,7 +4846,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -4960,7 +4960,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5033,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5084,7 +5084,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5543,7 +5543,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5625,7 +5625,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5699,7 +5699,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -5784,7 +5784,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -5881,7 +5881,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -5952,7 +5952,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6040,7 +6040,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6106,7 +6106,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6172,7 +6172,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6388,7 +6388,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6461,7 +6461,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6536,7 +6536,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6620,7 +6620,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6681,7 +6681,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6754,7 +6754,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -6817,7 +6817,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -6902,7 +6902,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7012,7 +7012,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7083,7 +7083,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7169,7 +7169,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7242,7 +7242,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7339,7 +7339,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7399,7 +7399,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-1.6.x-console.json b/app/config/specs/open-api3-1.6.x-console.json index 4c93f3d184..7f57dfc437 100644 --- a/app/config/specs/open-api3-1.6.x-console.json +++ b/app/config/specs/open-api3-1.6.x-console.json @@ -4293,7 +4293,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4359,7 +4359,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -8986,7 +8986,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9058,7 +9058,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9304,7 +9304,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9352,7 +9352,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9401,7 +9401,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9500,7 +9500,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9559,7 +9559,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9630,7 +9630,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9688,7 +9688,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9911,7 +9911,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9971,7 +9971,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10053,7 +10053,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10148,7 +10148,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10216,7 +10216,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10277,7 +10277,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10340,7 +10340,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10424,7 +10424,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10487,7 +10487,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10559,7 +10559,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10644,7 +10644,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10758,7 +10758,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10822,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10892,7 +10892,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -10973,7 +10973,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11031,7 +11031,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11116,7 +11116,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11184,7 +11184,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11269,7 +11269,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11339,7 +11339,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11390,7 +11390,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11489,7 +11489,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11585,7 +11585,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11692,7 +11692,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11718,6 +11718,54 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11740,7 +11788,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11801,7 +11849,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11862,7 +11910,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11934,7 +11982,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11995,7 +12043,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12082,7 +12130,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12143,7 +12191,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12204,7 +12252,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12265,7 +12313,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12326,7 +12374,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12387,7 +12435,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12448,7 +12496,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12509,7 +12557,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12570,7 +12618,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12618,7 +12666,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12666,7 +12714,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13122,7 +13170,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13197,7 +13245,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13340,7 +13388,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13533,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13658,7 +13706,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13835,7 +13883,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13943,7 +13991,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14054,7 +14102,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14106,7 +14154,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14167,7 +14215,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14241,7 +14289,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14315,7 +14363,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14390,7 +14438,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14494,7 +14542,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14601,7 +14649,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14685,7 +14733,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14772,7 +14820,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14886,7 +14934,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15003,7 +15051,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15097,7 +15145,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15194,7 +15242,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15298,7 +15346,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15405,7 +15453,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15547,7 +15595,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15691,7 +15739,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15785,7 +15833,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15882,7 +15930,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15976,7 +16024,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16073,7 +16121,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16167,7 +16215,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16264,7 +16312,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16358,7 +16406,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16455,7 +16503,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16555,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16568,7 +16616,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16642,7 +16690,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16716,7 +16764,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16789,7 +16837,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16871,7 +16919,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16930,7 +16978,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17006,7 +17054,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17067,7 +17115,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17141,7 +17189,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17224,7 +17272,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17313,7 +17361,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17375,7 +17423,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17449,7 +17497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17522,7 +17570,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -17609,7 +17657,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -17701,7 +17749,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -17776,7 +17824,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -17847,7 +17895,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -17957,7 +18005,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18089,7 +18137,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18193,7 +18241,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18316,7 +18364,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18373,7 +18421,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18423,7 +18471,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18482,7 +18530,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -18569,7 +18617,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -18614,7 +18662,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -18686,7 +18734,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -18743,7 +18791,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -18817,7 +18865,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -18876,7 +18924,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -18947,7 +18995,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19081,7 +19129,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19138,7 +19186,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19252,7 +19300,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19311,7 +19359,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19402,7 +19450,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19480,7 +19528,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -19558,7 +19606,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -19636,7 +19684,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -19714,7 +19762,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -19804,7 +19852,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19885,7 +19933,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -19963,7 +20011,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20041,7 +20089,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20167,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20197,7 +20245,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20296,7 +20344,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20382,7 +20430,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20439,7 +20487,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20531,7 +20579,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20646,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -20691,7 +20739,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20760,7 +20808,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20896,7 +20944,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -20953,7 +21001,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21071,7 +21119,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21138,7 +21186,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21232,7 +21280,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21301,7 +21349,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21400,7 +21448,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21478,7 +21526,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -21595,7 +21643,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -21725,7 +21773,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21803,7 +21851,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22026,7 +22074,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22289,7 +22337,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22562,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22734,7 +22782,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22973,7 +23021,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23195,7 +23243,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23252,7 +23300,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23366,7 +23414,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23433,7 +23481,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -23548,7 +23596,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -23617,7 +23665,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -23686,7 +23734,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -23757,7 +23805,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -23840,7 +23888,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -23890,7 +23938,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -23949,7 +23997,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24008,7 +24056,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24080,7 +24128,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24206,7 +24254,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24264,7 +24312,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24387,7 +24435,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24447,7 +24495,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -24532,7 +24580,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -24629,7 +24677,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -24700,7 +24748,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -24788,7 +24836,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -24854,7 +24902,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -24920,7 +24968,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25136,7 +25184,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25209,7 +25257,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25280,7 +25328,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25361,7 +25409,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25436,7 +25484,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25520,7 +25568,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -25581,7 +25629,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -25654,7 +25702,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -25717,7 +25765,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -25789,7 +25837,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -25874,7 +25922,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -25984,7 +26032,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26055,7 +26103,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26141,7 +26189,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26214,7 +26262,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26310,7 +26358,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26369,7 +26417,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26449,7 +26497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26521,7 +26569,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26608,7 +26656,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -26692,7 +26740,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -26776,7 +26824,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -26843,7 +26891,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -26903,7 +26951,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -26987,7 +27035,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27071,7 +27119,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27185,7 +27233,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27287,7 +27335,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27391,7 +27439,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27462,7 +27510,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -27513,7 +27561,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -27573,7 +27621,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -27652,7 +27700,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -27733,7 +27781,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27863,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -27888,7 +27936,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -27948,7 +27996,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28020,7 +28068,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28095,7 +28143,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28155,7 +28203,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28213,7 +28261,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28271,7 +28319,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28331,7 +28379,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28410,7 +28458,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -28489,7 +28537,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -28568,7 +28616,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -28626,7 +28674,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -28705,7 +28753,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -28763,7 +28811,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -28814,7 +28862,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -28867,7 +28915,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -28937,7 +28985,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29016,7 +29064,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29088,7 +29136,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29197,7 +29245,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29266,7 +29314,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29354,7 +29402,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29425,7 +29473,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -29506,7 +29554,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29585,7 +29633,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -29664,7 +29712,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -29732,7 +29780,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -29816,7 +29864,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29933,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30002,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30034,7 +30082,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30112,7 +30160,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30200,7 +30248,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30273,7 +30321,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30323,7 +30371,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35200,7 +35248,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/open-api3-1.6.x-server.json b/app/config/specs/open-api3-1.6.x-server.json index 33a9985d41..68d408762a 100644 --- a/app/config/specs/open-api3-1.6.x-server.json +++ b/app/config/specs/open-api3-1.6.x-server.json @@ -8138,7 +8138,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8211,7 +8211,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8458,7 +8458,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8507,7 +8507,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8557,7 +8557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8616,7 +8616,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -8840,7 +8840,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -8901,7 +8901,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -8984,7 +8984,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9080,7 +9080,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9149,7 +9149,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9211,7 +9211,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9275,7 +9275,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9360,7 +9360,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9424,7 +9424,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9497,7 +9497,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9584,7 +9584,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9700,7 +9700,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9766,7 +9766,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -9837,7 +9837,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -9896,7 +9896,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -9982,7 +9982,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10051,7 +10051,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10137,7 +10137,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10208,7 +10208,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10261,7 +10261,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10363,7 +10363,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10570,7 +10570,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10597,6 +10597,55 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10619,7 +10668,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10681,7 +10730,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10743,7 +10792,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -10816,7 +10865,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -10878,7 +10927,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -10966,7 +11015,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11028,7 +11077,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11090,7 +11139,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11201,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11214,7 +11263,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11276,7 +11325,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11338,7 +11387,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11400,7 +11449,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11462,7 +11511,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11560,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11560,7 +11609,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12033,7 +12082,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12109,7 +12158,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12253,7 +12302,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12399,7 +12448,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12573,7 +12622,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -12751,7 +12800,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12860,7 +12909,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -12972,7 +13021,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13025,7 +13074,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13087,7 +13136,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13162,7 +13211,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13237,7 +13286,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13313,7 +13362,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13418,7 +13467,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13526,7 +13575,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13611,7 +13660,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13699,7 +13748,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -13814,7 +13863,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -13932,7 +13981,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14027,7 +14076,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14125,7 +14174,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14230,7 +14279,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14338,7 +14387,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14481,7 +14530,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14626,7 +14675,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -14721,7 +14770,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -14819,7 +14868,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -14914,7 +14963,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15012,7 +15061,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15107,7 +15156,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15205,7 +15254,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15300,7 +15349,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15398,7 +15447,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15451,7 +15500,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15513,7 +15562,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15588,7 +15637,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -15663,7 +15712,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -15737,7 +15786,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15820,7 +15869,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -15880,7 +15929,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -15957,7 +16006,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16019,7 +16068,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16094,7 +16143,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16178,7 +16227,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16269,7 +16318,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16332,7 +16381,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16408,7 +16457,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16481,7 +16530,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16608,7 +16657,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -16667,7 +16716,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -16791,7 +16840,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -16852,7 +16901,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -16939,7 +16988,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17038,7 +17087,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17111,7 +17160,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17201,7 +17250,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17269,7 +17318,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17337,7 +17386,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17555,7 +17604,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -17630,7 +17679,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -17707,7 +17756,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -17793,7 +17842,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -17856,7 +17905,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -17931,7 +17980,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -17996,7 +18045,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18083,7 +18132,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18195,7 +18244,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18268,7 +18317,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18356,7 +18405,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18431,7 +18480,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18529,7 +18578,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18590,7 +18639,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18672,7 +18721,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -18745,7 +18794,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -18833,7 +18882,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -18918,7 +18967,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19003,7 +19052,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19071,7 +19120,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19132,7 +19181,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19217,7 +19266,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19302,7 +19351,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19417,7 +19466,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -19520,7 +19569,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19625,7 +19674,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -19677,7 +19726,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19787,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -19818,7 +19867,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -19900,7 +19949,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -19983,7 +20032,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20057,7 +20106,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20118,7 +20167,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20191,7 +20240,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20267,7 +20316,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20328,7 +20377,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20387,7 +20436,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20446,7 +20495,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -20507,7 +20556,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -20587,7 +20636,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -20667,7 +20716,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -20747,7 +20796,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -20806,7 +20855,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -20886,7 +20935,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20945,7 +20994,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -20997,7 +21046,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21051,7 +21100,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21122,7 +21171,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21202,7 +21251,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21275,7 +21324,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21385,7 +21434,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21455,7 +21504,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -21544,7 +21593,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -21616,7 +21665,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21698,7 +21747,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21778,7 +21827,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index db563a6acf..820b1f55e0 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -4761,7 +4761,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -4846,7 +4846,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -4960,7 +4960,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5033,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5084,7 +5084,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5543,7 +5543,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5625,7 +5625,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5699,7 +5699,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -5784,7 +5784,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -5881,7 +5881,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -5952,7 +5952,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6040,7 +6040,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6106,7 +6106,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6172,7 +6172,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6388,7 +6388,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6461,7 +6461,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6536,7 +6536,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6620,7 +6620,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6681,7 +6681,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6754,7 +6754,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -6817,7 +6817,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -6902,7 +6902,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7012,7 +7012,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7083,7 +7083,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7169,7 +7169,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7242,7 +7242,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7339,7 +7339,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7399,7 +7399,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index 4c93f3d184..7f57dfc437 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -4293,7 +4293,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4359,7 +4359,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -8986,7 +8986,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9058,7 +9058,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9304,7 +9304,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9352,7 +9352,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9401,7 +9401,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9500,7 +9500,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9559,7 +9559,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9630,7 +9630,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9688,7 +9688,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9911,7 +9911,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9971,7 +9971,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10053,7 +10053,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10148,7 +10148,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10216,7 +10216,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10277,7 +10277,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10340,7 +10340,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10424,7 +10424,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10487,7 +10487,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10559,7 +10559,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10644,7 +10644,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10758,7 +10758,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10822,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10892,7 +10892,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -10973,7 +10973,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11031,7 +11031,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11116,7 +11116,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11184,7 +11184,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11269,7 +11269,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11339,7 +11339,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11390,7 +11390,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11489,7 +11489,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11585,7 +11585,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11692,7 +11692,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11718,6 +11718,54 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11740,7 +11788,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11801,7 +11849,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11862,7 +11910,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11934,7 +11982,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11995,7 +12043,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12082,7 +12130,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12143,7 +12191,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12204,7 +12252,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12265,7 +12313,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12326,7 +12374,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12387,7 +12435,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12448,7 +12496,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12509,7 +12557,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12570,7 +12618,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12618,7 +12666,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12666,7 +12714,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13122,7 +13170,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13197,7 +13245,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13340,7 +13388,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13533,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13658,7 +13706,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13835,7 +13883,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13943,7 +13991,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14054,7 +14102,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14106,7 +14154,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14167,7 +14215,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14241,7 +14289,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14315,7 +14363,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14390,7 +14438,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14494,7 +14542,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14601,7 +14649,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14685,7 +14733,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14772,7 +14820,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14886,7 +14934,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15003,7 +15051,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15097,7 +15145,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15194,7 +15242,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15298,7 +15346,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15405,7 +15453,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15547,7 +15595,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15691,7 +15739,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15785,7 +15833,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15882,7 +15930,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15976,7 +16024,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16073,7 +16121,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16167,7 +16215,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16264,7 +16312,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16358,7 +16406,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16455,7 +16503,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16555,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16568,7 +16616,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16642,7 +16690,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16716,7 +16764,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16789,7 +16837,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16871,7 +16919,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16930,7 +16978,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17006,7 +17054,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17067,7 +17115,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17141,7 +17189,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17224,7 +17272,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17313,7 +17361,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17375,7 +17423,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17449,7 +17497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17522,7 +17570,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -17609,7 +17657,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -17701,7 +17749,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -17776,7 +17824,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -17847,7 +17895,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -17957,7 +18005,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18089,7 +18137,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18193,7 +18241,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18316,7 +18364,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18373,7 +18421,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18423,7 +18471,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18482,7 +18530,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -18569,7 +18617,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -18614,7 +18662,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -18686,7 +18734,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -18743,7 +18791,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -18817,7 +18865,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -18876,7 +18924,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -18947,7 +18995,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19081,7 +19129,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19138,7 +19186,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19252,7 +19300,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19311,7 +19359,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19402,7 +19450,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19480,7 +19528,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -19558,7 +19606,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -19636,7 +19684,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -19714,7 +19762,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -19804,7 +19852,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -19885,7 +19933,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -19963,7 +20011,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20041,7 +20089,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20167,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20197,7 +20245,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20296,7 +20344,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20382,7 +20430,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20439,7 +20487,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -20531,7 +20579,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20646,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -20691,7 +20739,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -20760,7 +20808,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20896,7 +20944,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -20953,7 +21001,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21071,7 +21119,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21138,7 +21186,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21232,7 +21280,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21301,7 +21349,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21400,7 +21448,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21478,7 +21526,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -21595,7 +21643,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -21725,7 +21773,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -21803,7 +21851,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22026,7 +22074,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22289,7 +22337,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22562,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22734,7 +22782,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -22973,7 +23021,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23195,7 +23243,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23252,7 +23300,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23366,7 +23414,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23433,7 +23481,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -23548,7 +23596,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -23617,7 +23665,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -23686,7 +23734,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -23757,7 +23805,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -23840,7 +23888,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -23890,7 +23938,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -23949,7 +23997,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24008,7 +24056,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24080,7 +24128,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24206,7 +24254,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24264,7 +24312,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24387,7 +24435,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24447,7 +24495,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -24532,7 +24580,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -24629,7 +24677,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -24700,7 +24748,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -24788,7 +24836,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -24854,7 +24902,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -24920,7 +24968,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25136,7 +25184,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25209,7 +25257,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25280,7 +25328,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25361,7 +25409,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25436,7 +25484,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -25520,7 +25568,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -25581,7 +25629,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -25654,7 +25702,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -25717,7 +25765,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -25789,7 +25837,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -25874,7 +25922,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -25984,7 +26032,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26055,7 +26103,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26141,7 +26189,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26214,7 +26262,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26310,7 +26358,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26369,7 +26417,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26449,7 +26497,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26521,7 +26569,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26608,7 +26656,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -26692,7 +26740,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -26776,7 +26824,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -26843,7 +26891,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -26903,7 +26951,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -26987,7 +27035,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27071,7 +27119,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27185,7 +27233,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27287,7 +27335,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27391,7 +27439,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27462,7 +27510,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -27513,7 +27561,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -27573,7 +27621,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -27652,7 +27700,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -27733,7 +27781,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27863,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -27888,7 +27936,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -27948,7 +27996,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28020,7 +28068,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28095,7 +28143,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28155,7 +28203,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28213,7 +28261,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28271,7 +28319,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28331,7 +28379,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28410,7 +28458,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -28489,7 +28537,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -28568,7 +28616,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -28626,7 +28674,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -28705,7 +28753,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -28763,7 +28811,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -28814,7 +28862,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -28867,7 +28915,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -28937,7 +28985,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29016,7 +29064,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29088,7 +29136,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29197,7 +29245,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29266,7 +29314,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29354,7 +29402,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29425,7 +29473,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -29506,7 +29554,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29585,7 +29633,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -29664,7 +29712,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -29732,7 +29780,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -29816,7 +29864,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29933,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30002,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30034,7 +30082,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30112,7 +30160,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30200,7 +30248,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30273,7 +30321,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30323,7 +30371,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35200,7 +35248,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index 33a9985d41..68d408762a 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -8138,7 +8138,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8211,7 +8211,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8458,7 +8458,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8507,7 +8507,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8557,7 +8557,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8616,7 +8616,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -8840,7 +8840,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -8901,7 +8901,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -8984,7 +8984,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9080,7 +9080,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9149,7 +9149,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9211,7 +9211,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9275,7 +9275,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9360,7 +9360,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9424,7 +9424,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9497,7 +9497,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9584,7 +9584,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9700,7 +9700,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9766,7 +9766,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -9837,7 +9837,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -9896,7 +9896,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -9982,7 +9982,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10051,7 +10051,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10137,7 +10137,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10208,7 +10208,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10261,7 +10261,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10363,7 +10363,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10570,7 +10570,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10597,6 +10597,55 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/healthStatus" + } + } + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10619,7 +10668,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10681,7 +10730,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10743,7 +10792,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -10816,7 +10865,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -10878,7 +10927,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -10966,7 +11015,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11028,7 +11077,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11090,7 +11139,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11201,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11214,7 +11263,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11276,7 +11325,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11338,7 +11387,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11400,7 +11449,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11462,7 +11511,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11560,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11560,7 +11609,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12033,7 +12082,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12109,7 +12158,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12253,7 +12302,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12399,7 +12448,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12573,7 +12622,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -12751,7 +12800,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -12860,7 +12909,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -12972,7 +13021,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13025,7 +13074,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13087,7 +13136,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13162,7 +13211,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13237,7 +13286,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13313,7 +13362,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13418,7 +13467,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13526,7 +13575,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13611,7 +13660,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -13699,7 +13748,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -13814,7 +13863,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -13932,7 +13981,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14027,7 +14076,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14125,7 +14174,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14230,7 +14279,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14338,7 +14387,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14481,7 +14530,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14626,7 +14675,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -14721,7 +14770,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -14819,7 +14868,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -14914,7 +14963,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15012,7 +15061,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15107,7 +15156,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15205,7 +15254,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15300,7 +15349,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15398,7 +15447,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15451,7 +15500,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15513,7 +15562,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15588,7 +15637,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -15663,7 +15712,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -15737,7 +15786,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15820,7 +15869,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -15880,7 +15929,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -15957,7 +16006,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16019,7 +16068,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16094,7 +16143,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16178,7 +16227,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16269,7 +16318,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16332,7 +16381,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16408,7 +16457,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16481,7 +16530,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -16608,7 +16657,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -16667,7 +16716,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -16791,7 +16840,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -16852,7 +16901,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -16939,7 +16988,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17038,7 +17087,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17111,7 +17160,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17201,7 +17250,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17269,7 +17318,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17337,7 +17386,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -17555,7 +17604,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -17630,7 +17679,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -17707,7 +17756,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -17793,7 +17842,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -17856,7 +17905,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -17931,7 +17980,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -17996,7 +18045,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18083,7 +18132,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18195,7 +18244,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18268,7 +18317,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18356,7 +18405,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18431,7 +18480,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18529,7 +18578,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18590,7 +18639,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18672,7 +18721,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -18745,7 +18794,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -18833,7 +18882,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -18918,7 +18967,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19003,7 +19052,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19071,7 +19120,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19132,7 +19181,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19217,7 +19266,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19302,7 +19351,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19417,7 +19466,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -19520,7 +19569,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19625,7 +19674,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -19677,7 +19726,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19787,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -19818,7 +19867,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -19900,7 +19949,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -19983,7 +20032,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20057,7 +20106,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20118,7 +20167,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20191,7 +20240,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20267,7 +20316,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20328,7 +20377,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20387,7 +20436,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20446,7 +20495,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -20507,7 +20556,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -20587,7 +20636,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -20667,7 +20716,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -20747,7 +20796,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -20806,7 +20855,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -20886,7 +20935,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -20945,7 +20994,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -20997,7 +21046,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21051,7 +21100,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21122,7 +21171,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21202,7 +21251,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21275,7 +21324,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21385,7 +21434,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21455,7 +21504,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -21544,7 +21593,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -21616,7 +21665,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21698,7 +21747,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21778,7 +21827,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-1.6.x-client.json b/app/config/specs/swagger2-1.6.x-client.json index 793e9a13af..c0980c44ce 100644 --- a/app/config/specs/swagger2-1.6.x-client.json +++ b/app/config/specs/swagger2-1.6.x-client.json @@ -4927,7 +4927,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5009,7 +5009,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -5127,7 +5127,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5198,7 +5198,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5271,7 +5271,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5768,7 +5768,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5852,7 +5852,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5924,7 +5924,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -6006,7 +6006,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -6097,7 +6097,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -6166,7 +6166,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6254,7 +6254,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6325,7 +6325,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6396,7 +6396,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6595,7 +6595,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6666,7 +6666,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6740,7 +6740,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6831,7 +6831,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6892,7 +6892,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6966,7 +6966,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7029,7 +7029,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7111,7 +7111,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7225,7 +7225,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7294,7 +7294,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7379,7 +7379,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7450,7 +7450,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7545,7 +7545,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7605,7 +7605,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-1.6.x-console.json b/app/config/specs/swagger2-1.6.x-console.json index 45fed68682..94b0d55199 100644 --- a/app/config/specs/swagger2-1.6.x-console.json +++ b/app/config/specs/swagger2-1.6.x-console.json @@ -4497,7 +4497,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4566,7 +4566,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -9135,7 +9135,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9206,7 +9206,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9476,7 +9476,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9526,7 +9526,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9577,7 +9577,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9672,7 +9672,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9731,7 +9731,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9802,7 +9802,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9860,7 +9860,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -10100,7 +10100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -10160,7 +10160,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10239,7 +10239,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10330,7 +10330,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10396,7 +10396,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10457,7 +10457,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10522,7 +10522,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10603,7 +10603,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10671,7 +10671,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10741,7 +10741,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10823,7 +10823,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10941,7 +10941,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11005,7 +11005,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11073,7 +11073,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11152,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11210,7 +11210,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11295,7 +11295,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11361,7 +11361,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11446,7 +11446,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11514,7 +11514,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11587,7 +11587,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11710,7 +11710,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11810,7 +11810,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11919,7 +11919,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11945,6 +11945,56 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11969,7 +12019,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12030,7 +12080,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12091,7 +12141,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12161,7 +12211,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12222,7 +12272,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12307,7 +12357,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12368,7 +12418,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12429,7 +12479,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12490,7 +12540,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12551,7 +12601,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12612,7 +12662,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12673,7 +12723,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12734,7 +12784,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12795,7 +12845,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12845,7 +12895,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12895,7 +12945,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13369,7 +13419,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13443,7 +13493,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13600,7 +13650,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13754,7 +13804,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13948,7 +13998,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14141,7 +14191,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -14258,7 +14308,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14373,7 +14423,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14427,7 +14477,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14488,7 +14538,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14561,7 +14611,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14634,7 +14684,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14708,7 +14758,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14822,7 +14872,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14934,7 +14984,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -15024,7 +15074,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -15112,7 +15162,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15238,7 +15288,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15362,7 +15412,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15464,7 +15514,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15564,7 +15614,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15678,7 +15728,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15790,7 +15840,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15948,7 +15998,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -16103,7 +16153,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16205,7 +16255,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16305,7 +16355,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16407,7 +16457,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16557,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16609,7 +16659,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16709,7 +16759,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16811,7 +16861,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16911,7 +16961,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16965,7 +17015,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -17026,7 +17076,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -17099,7 +17149,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17172,7 +17222,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17244,7 +17294,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17383,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17392,7 +17442,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17470,7 +17520,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17531,7 +17581,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17604,7 +17654,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17684,7 +17734,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17773,7 +17823,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17835,7 +17885,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17907,7 +17957,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17979,7 +18029,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -18072,7 +18122,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18159,7 +18209,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18238,7 +18288,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18308,7 +18358,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18428,7 +18478,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18547,7 +18597,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18660,7 +18710,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18772,7 +18822,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18829,7 +18879,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18881,7 +18931,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18940,7 +18990,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -19023,7 +19073,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19070,7 +19120,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19146,7 +19196,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19203,7 +19253,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19279,7 +19329,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -19338,7 +19388,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19408,7 +19458,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19557,7 +19607,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19614,7 +19664,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19788,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19797,7 +19847,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19888,7 +19938,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19965,7 +20015,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20042,7 +20092,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20169,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -20196,7 +20246,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -20287,7 +20337,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -20367,7 +20417,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20444,7 +20494,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20521,7 +20571,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20648,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20675,7 +20725,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20771,7 +20821,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20857,7 +20907,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20914,7 +20964,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -21007,7 +21057,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21072,7 +21122,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21166,7 +21216,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -21233,7 +21283,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -21371,7 +21421,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21428,7 +21478,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21549,7 +21599,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21614,7 +21664,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21710,7 +21760,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21777,7 +21827,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21876,7 +21926,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21953,7 +22003,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22081,7 +22131,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22218,7 +22268,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -22295,7 +22345,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22564,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22776,7 +22826,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22997,7 +23047,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -23213,7 +23263,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -23447,7 +23497,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23665,7 +23715,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23722,7 +23772,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23841,7 +23891,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23906,7 +23956,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24026,7 +24076,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -24093,7 +24143,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24160,7 +24210,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24230,7 +24280,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -24318,7 +24368,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24370,7 +24420,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24429,7 +24479,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24488,7 +24538,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24559,7 +24609,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24697,7 +24747,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24755,7 +24805,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24887,7 +24937,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24947,7 +24997,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -25029,7 +25079,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -25120,7 +25170,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -25189,7 +25239,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -25277,7 +25327,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25348,7 +25398,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25419,7 +25469,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25618,7 +25668,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25689,7 +25739,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25760,7 +25810,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25839,7 +25889,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25913,7 +25963,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -26004,7 +26054,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26065,7 +26115,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26139,7 +26189,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26202,7 +26252,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -26273,7 +26323,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26355,7 +26405,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26469,7 +26519,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26538,7 +26588,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26623,7 +26673,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26694,7 +26744,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26788,7 +26838,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26847,7 +26897,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26926,7 +26976,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26997,7 +27047,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27091,7 +27141,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27181,7 +27231,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27271,7 +27321,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -27339,7 +27389,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -27399,7 +27449,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27489,7 +27539,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27579,7 +27629,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27704,7 +27754,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27865,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27926,7 +27976,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27997,7 +28047,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28050,7 +28100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -28110,7 +28160,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -28188,7 +28238,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28269,7 +28319,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -28350,7 +28400,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -28422,7 +28472,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -28482,7 +28532,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28555,7 +28605,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28628,7 +28678,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28688,7 +28738,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28746,7 +28796,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28804,7 +28854,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28864,7 +28914,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28942,7 +28992,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -29020,7 +29070,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29098,7 +29148,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29156,7 +29206,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29234,7 +29284,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -29292,7 +29342,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29345,7 +29395,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -29400,7 +29450,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -29468,7 +29518,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29546,7 +29596,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29617,7 +29667,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29729,7 +29779,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29796,7 +29846,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29935,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30004,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -30035,7 +30085,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -30113,7 +30163,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -30191,7 +30241,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -30257,7 +30307,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -30341,7 +30391,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30408,7 +30458,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -30475,7 +30525,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30551,7 +30601,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30630,7 +30680,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30715,7 +30765,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30787,7 +30837,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30839,7 +30889,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35735,7 +35785,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/swagger2-1.6.x-server.json b/app/config/specs/swagger2-1.6.x-server.json index ae30cb6b37..e38495629c 100644 --- a/app/config/specs/swagger2-1.6.x-server.json +++ b/app/config/specs/swagger2-1.6.x-server.json @@ -8284,7 +8284,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8356,7 +8356,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8627,7 +8627,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8678,7 +8678,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8730,7 +8730,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8789,7 +8789,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9030,7 +9030,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9091,7 +9091,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9171,7 +9171,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9263,7 +9263,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9330,7 +9330,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9392,7 +9392,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9458,7 +9458,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9540,7 +9540,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9609,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9680,7 +9680,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9764,7 +9764,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9884,7 +9884,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9950,7 +9950,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10019,7 +10019,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10078,7 +10078,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10164,7 +10164,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10231,7 +10231,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10317,7 +10317,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10386,7 +10386,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10587,7 +10587,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10689,7 +10689,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10800,7 +10800,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10827,6 +10827,57 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10851,7 +10902,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10913,7 +10964,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10975,7 +11026,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11046,7 +11097,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11108,7 +11159,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -11194,7 +11245,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11256,7 +11307,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11318,7 +11369,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11380,7 +11431,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11442,7 +11493,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11504,7 +11555,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11566,7 +11617,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11628,7 +11679,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11690,7 +11741,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11741,7 +11792,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11792,7 +11843,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12283,7 +12334,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12358,7 +12409,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12516,7 +12567,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12671,7 +12722,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12866,7 +12917,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13060,7 +13111,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13178,7 +13229,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13294,7 +13345,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13349,7 +13400,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13411,7 +13462,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13536,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13559,7 +13610,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13634,7 +13685,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13749,7 +13800,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13862,7 +13913,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13953,7 +14004,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14042,7 +14093,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14169,7 +14220,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14294,7 +14345,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14397,7 +14448,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14498,7 +14549,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14613,7 +14664,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14726,7 +14777,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14885,7 +14936,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15041,7 +15092,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15144,7 +15195,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15245,7 +15296,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15348,7 +15399,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15449,7 +15500,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15552,7 +15603,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15653,7 +15704,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15756,7 +15807,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15857,7 +15908,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15912,7 +15963,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15974,7 +16025,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16048,7 +16099,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16122,7 +16173,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16195,7 +16246,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16285,7 +16336,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16345,7 +16396,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16424,7 +16475,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16486,7 +16537,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16560,7 +16611,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16641,7 +16692,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16732,7 +16783,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16795,7 +16846,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16869,7 +16920,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16941,7 +16992,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -17080,7 +17131,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17139,7 +17190,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17272,7 +17323,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17384,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17417,7 +17468,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17510,7 +17561,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17581,7 +17632,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17671,7 +17722,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17744,7 +17795,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17817,7 +17868,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -18018,7 +18069,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -18091,7 +18142,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18167,7 +18218,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -18260,7 +18311,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18323,7 +18374,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -18399,7 +18450,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18464,7 +18515,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18548,7 +18599,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18664,7 +18715,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18735,7 +18786,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18822,7 +18873,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18895,7 +18946,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18991,7 +19042,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -19052,7 +19103,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -19133,7 +19184,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -19205,7 +19256,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19300,7 +19351,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19391,7 +19442,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19482,7 +19533,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19551,7 +19602,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19612,7 +19663,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19703,7 +19754,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19794,7 +19845,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19920,7 +19971,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -20032,7 +20083,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -20144,7 +20195,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -20198,7 +20249,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -20259,7 +20310,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -20338,7 +20389,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -20420,7 +20471,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -20502,7 +20553,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20575,7 +20626,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20636,7 +20687,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20710,7 +20761,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20784,7 +20835,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20845,7 +20896,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20904,7 +20955,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20963,7 +21014,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21024,7 +21075,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -21103,7 +21154,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -21182,7 +21233,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21261,7 +21312,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -21320,7 +21371,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -21399,7 +21450,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -21458,7 +21509,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21512,7 +21563,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21568,7 +21619,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21637,7 +21688,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21716,7 +21767,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21788,7 +21839,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21901,7 +21952,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21969,7 +22020,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -22059,7 +22110,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -22129,7 +22180,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -22211,7 +22262,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -22290,7 +22341,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index 793e9a13af..c0980c44ce 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -4927,7 +4927,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5009,7 +5009,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -5127,7 +5127,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5198,7 +5198,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5271,7 +5271,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -5768,7 +5768,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -5852,7 +5852,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -5924,7 +5924,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -6006,7 +6006,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -6097,7 +6097,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -6166,7 +6166,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -6254,7 +6254,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6325,7 +6325,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6396,7 +6396,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -6595,7 +6595,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6666,7 +6666,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6740,7 +6740,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -6831,7 +6831,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6892,7 +6892,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -6966,7 +6966,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -7029,7 +7029,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7111,7 +7111,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7225,7 +7225,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7294,7 +7294,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7379,7 +7379,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7450,7 +7450,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7545,7 +7545,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7605,7 +7605,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 45fed68682..94b0d55199 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -4497,7 +4497,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4566,7 +4566,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 331, + "weight": 332, "cookies": false, "type": "", "deprecated": false, @@ -9135,7 +9135,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9206,7 +9206,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -9476,7 +9476,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9526,7 +9526,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9577,7 +9577,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -9672,7 +9672,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9731,7 +9731,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -9802,7 +9802,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9860,7 +9860,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -10100,7 +10100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -10160,7 +10160,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -10239,7 +10239,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -10330,7 +10330,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10396,7 +10396,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -10457,7 +10457,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10522,7 +10522,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10603,7 +10603,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10671,7 +10671,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -10741,7 +10741,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10823,7 +10823,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10941,7 +10941,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11005,7 +11005,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11073,7 +11073,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -11152,7 +11152,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11210,7 +11210,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11295,7 +11295,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11361,7 +11361,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11446,7 +11446,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11514,7 +11514,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11587,7 +11587,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -11710,7 +11710,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11810,7 +11810,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11919,7 +11919,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11945,6 +11945,56 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -11969,7 +12019,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12030,7 +12080,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12091,7 +12141,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12161,7 +12211,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12222,7 +12272,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12307,7 +12357,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12368,7 +12418,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12429,7 +12479,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12490,7 +12540,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12551,7 +12601,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12612,7 +12662,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12673,7 +12723,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12734,7 +12784,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12795,7 +12845,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12845,7 +12895,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12895,7 +12945,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -13369,7 +13419,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -13443,7 +13493,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -13600,7 +13650,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13754,7 +13804,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -13948,7 +13998,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14141,7 +14191,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -14258,7 +14308,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14373,7 +14423,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -14427,7 +14477,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -14488,7 +14538,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -14561,7 +14611,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -14634,7 +14684,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14708,7 +14758,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -14822,7 +14872,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -14934,7 +14984,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -15024,7 +15074,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -15112,7 +15162,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -15238,7 +15288,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15362,7 +15412,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -15464,7 +15514,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15564,7 +15614,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -15678,7 +15728,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15790,7 +15840,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -15948,7 +15998,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -16103,7 +16153,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -16205,7 +16255,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -16305,7 +16355,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -16407,7 +16457,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16507,7 +16557,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -16609,7 +16659,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16709,7 +16759,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -16811,7 +16861,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -16911,7 +16961,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16965,7 +17015,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -17026,7 +17076,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -17099,7 +17149,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17172,7 +17222,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17244,7 +17294,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17383,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17392,7 +17442,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -17470,7 +17520,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -17531,7 +17581,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17604,7 +17654,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17684,7 +17734,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17773,7 +17823,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17835,7 +17885,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17907,7 +17957,7 @@ }, "x-appwrite": { "method": "list", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -17979,7 +18029,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -18072,7 +18122,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18159,7 +18209,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18238,7 +18288,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -18308,7 +18358,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18428,7 +18478,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18547,7 +18597,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18660,7 +18710,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18772,7 +18822,7 @@ }, "x-appwrite": { "method": "get", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18829,7 +18879,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18881,7 +18931,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 344, + "weight": 345, "cookies": false, "type": "", "deprecated": false, @@ -18940,7 +18990,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -19023,7 +19073,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19070,7 +19120,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19146,7 +19196,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19203,7 +19253,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19279,7 +19329,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -19338,7 +19388,7 @@ }, "x-appwrite": { "method": "list", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -19408,7 +19458,7 @@ }, "x-appwrite": { "method": "create", - "weight": 149, + "weight": 150, "cookies": false, "type": "", "deprecated": false, @@ -19557,7 +19607,7 @@ }, "x-appwrite": { "method": "get", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19614,7 +19664,7 @@ }, "x-appwrite": { "method": "update", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -19738,7 +19788,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -19797,7 +19847,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -19888,7 +19938,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -19965,7 +20015,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20042,7 +20092,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20119,7 +20169,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -20196,7 +20246,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -20287,7 +20337,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -20367,7 +20417,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -20444,7 +20494,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -20521,7 +20571,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20598,7 +20648,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -20675,7 +20725,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20771,7 +20821,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -20857,7 +20907,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -20914,7 +20964,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -21007,7 +21057,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21072,7 +21122,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21166,7 +21216,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -21233,7 +21283,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -21371,7 +21421,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -21428,7 +21478,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21549,7 +21599,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21614,7 +21664,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -21710,7 +21760,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -21777,7 +21827,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -21876,7 +21926,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -21953,7 +22003,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22081,7 +22131,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22218,7 +22268,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -22295,7 +22345,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -22514,7 +22564,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -22776,7 +22826,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -22997,7 +23047,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -23213,7 +23263,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -23447,7 +23497,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23665,7 +23715,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -23722,7 +23772,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -23841,7 +23891,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -23906,7 +23956,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24026,7 +24076,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -24093,7 +24143,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24160,7 +24210,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24230,7 +24280,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -24318,7 +24368,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24370,7 +24420,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24429,7 +24479,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -24488,7 +24538,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -24559,7 +24609,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -24697,7 +24747,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -24755,7 +24805,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -24887,7 +24937,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -24947,7 +24997,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -25029,7 +25079,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -25120,7 +25170,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -25189,7 +25239,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -25277,7 +25327,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25348,7 +25398,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -25419,7 +25469,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -25618,7 +25668,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -25689,7 +25739,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25760,7 +25810,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -25839,7 +25889,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -25913,7 +25963,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -26004,7 +26054,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26065,7 +26115,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -26139,7 +26189,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -26202,7 +26252,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -26273,7 +26323,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -26355,7 +26405,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26469,7 +26519,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -26538,7 +26588,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -26623,7 +26673,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -26694,7 +26744,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -26788,7 +26838,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26847,7 +26897,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26926,7 +26976,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -26997,7 +27047,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27091,7 +27141,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -27181,7 +27231,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27271,7 +27321,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -27339,7 +27389,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -27399,7 +27449,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27489,7 +27539,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -27579,7 +27629,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -27704,7 +27754,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -27815,7 +27865,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27926,7 +27976,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -27997,7 +28047,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28050,7 +28100,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -28110,7 +28160,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -28188,7 +28238,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28269,7 +28319,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -28350,7 +28400,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -28422,7 +28472,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -28482,7 +28532,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -28555,7 +28605,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -28628,7 +28678,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -28688,7 +28738,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -28746,7 +28796,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -28804,7 +28854,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -28864,7 +28914,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -28942,7 +28992,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -29020,7 +29070,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29098,7 +29148,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29156,7 +29206,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -29234,7 +29284,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -29292,7 +29342,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29345,7 +29395,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -29400,7 +29450,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -29468,7 +29518,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -29546,7 +29596,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29617,7 +29667,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29729,7 +29779,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29796,7 +29846,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29885,7 +29935,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29954,7 +30004,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -30035,7 +30085,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -30113,7 +30163,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -30191,7 +30241,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -30257,7 +30307,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -30341,7 +30391,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -30408,7 +30458,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -30475,7 +30525,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 276, + "weight": 277, "cookies": false, "type": "", "deprecated": false, @@ -30551,7 +30601,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -30630,7 +30680,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -30715,7 +30765,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 283, + "weight": 284, "cookies": false, "type": "", "deprecated": false, @@ -30787,7 +30837,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -30839,7 +30889,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -35735,7 +35785,7 @@ }, "type": { "type": "string", - "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.", + "description": "Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.", "x-example": "web" }, "key": { diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index ae30cb6b37..e38495629c 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -8284,7 +8284,7 @@ }, "x-appwrite": { "method": "list", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8356,7 +8356,7 @@ }, "x-appwrite": { "method": "create", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -8627,7 +8627,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8678,7 +8678,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8730,7 +8730,7 @@ }, "x-appwrite": { "method": "get", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8789,7 +8789,7 @@ }, "x-appwrite": { "method": "update", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9030,7 +9030,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9091,7 +9091,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 299, + "weight": 300, "cookies": false, "type": "", "deprecated": false, @@ -9171,7 +9171,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 298, + "weight": 299, "cookies": false, "type": "upload", "deprecated": false, @@ -9263,7 +9263,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9330,7 +9330,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 296, + "weight": 297, "cookies": false, "type": "", "deprecated": false, @@ -9392,7 +9392,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9458,7 +9458,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9540,7 +9540,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9609,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 295, + "weight": 296, "cookies": false, "type": "location", "deprecated": false, @@ -9680,7 +9680,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -9764,7 +9764,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9884,7 +9884,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9950,7 +9950,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10019,7 +10019,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10078,7 +10078,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10164,7 +10164,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10231,7 +10231,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10317,7 +10317,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10386,7 +10386,7 @@ }, "x-appwrite": { "method": "query", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10461,7 +10461,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 329, + "weight": 330, "cookies": false, "type": "graphql", "deprecated": false, @@ -10587,7 +10587,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -10689,7 +10689,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -10800,7 +10800,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -10827,6 +10827,57 @@ ] } }, + "\/health\/queue": { + "get": { + "summary": "Get queue", + "operationId": "healthGetQueue", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "health" + ], + "description": "Check the Appwrite queue messaging servers are up and connection is successful.", + "responses": { + "200": { + "description": "Health Status", + "schema": { + "$ref": "#\/definitions\/healthStatus" + } + } + }, + "x-appwrite": { + "method": "getQueue", + "weight": 129, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "health\/get-queue.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "health.read", + "platforms": [ + "server" + ], + "packaging": false, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ] + } + }, "\/health\/queue\/builds": { "get": { "summary": "Get builds queue", @@ -10851,7 +10902,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -10913,7 +10964,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10975,7 +11026,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11046,7 +11097,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11108,7 +11159,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -11194,7 +11245,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11256,7 +11307,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11318,7 +11369,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11380,7 +11431,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11442,7 +11493,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11504,7 +11555,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11566,7 +11617,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11628,7 +11679,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -11690,7 +11741,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -11741,7 +11792,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11792,7 +11843,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12283,7 +12334,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -12358,7 +12409,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -12516,7 +12567,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12671,7 +12722,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -12866,7 +12917,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13060,7 +13111,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -13178,7 +13229,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13294,7 +13345,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -13349,7 +13400,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13411,7 +13462,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -13485,7 +13536,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -13559,7 +13610,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -13634,7 +13685,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -13749,7 +13800,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -13862,7 +13913,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -13953,7 +14004,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14042,7 +14093,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 345, + "weight": 346, "cookies": false, "type": "", "deprecated": false, @@ -14169,7 +14220,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -14294,7 +14345,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -14397,7 +14448,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14498,7 +14549,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -14613,7 +14664,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -14726,7 +14777,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -14885,7 +14936,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15041,7 +15092,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -15144,7 +15195,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15245,7 +15296,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -15348,7 +15399,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -15449,7 +15500,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -15552,7 +15603,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -15653,7 +15704,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15756,7 +15807,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15857,7 +15908,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15912,7 +15963,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15974,7 +16025,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16048,7 +16099,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16122,7 +16173,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16195,7 +16246,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16285,7 +16336,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16345,7 +16396,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -16424,7 +16475,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -16486,7 +16537,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16560,7 +16611,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16641,7 +16692,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16732,7 +16783,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16795,7 +16846,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16869,7 +16920,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -16941,7 +16992,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -17080,7 +17131,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17139,7 +17190,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17272,7 +17323,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -17333,7 +17384,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 207, + "weight": 208, "cookies": false, "type": "", "deprecated": false, @@ -17417,7 +17468,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 206, + "weight": 207, "cookies": false, "type": "upload", "deprecated": false, @@ -17510,7 +17561,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17581,7 +17632,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 213, + "weight": 214, "cookies": false, "type": "", "deprecated": false, @@ -17671,7 +17722,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17744,7 +17795,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -17817,7 +17868,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 209, + "weight": 210, "cookies": false, "type": "location", "deprecated": false, @@ -18018,7 +18069,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -18091,7 +18142,7 @@ }, "x-appwrite": { "method": "list", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18167,7 +18218,7 @@ }, "x-appwrite": { "method": "create", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -18260,7 +18311,7 @@ }, "x-appwrite": { "method": "get", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18323,7 +18374,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -18399,7 +18450,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -18464,7 +18515,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18548,7 +18599,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18664,7 +18715,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18735,7 +18786,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18822,7 +18873,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -18895,7 +18946,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -18991,7 +19042,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -19052,7 +19103,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -19133,7 +19184,7 @@ }, "x-appwrite": { "method": "list", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -19205,7 +19256,7 @@ }, "x-appwrite": { "method": "create", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -19300,7 +19351,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19391,7 +19442,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19482,7 +19533,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -19551,7 +19602,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -19612,7 +19663,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19703,7 +19754,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -19794,7 +19845,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19920,7 +19971,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -20032,7 +20083,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -20144,7 +20195,7 @@ }, "x-appwrite": { "method": "get", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -20198,7 +20249,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -20259,7 +20310,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -20338,7 +20389,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -20420,7 +20471,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -20502,7 +20553,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20575,7 +20626,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -20636,7 +20687,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -20710,7 +20761,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -20784,7 +20835,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20845,7 +20896,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -20904,7 +20955,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -20963,7 +21014,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21024,7 +21075,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -21103,7 +21154,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -21182,7 +21233,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21261,7 +21312,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -21320,7 +21371,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -21399,7 +21450,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -21458,7 +21509,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21512,7 +21563,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21568,7 +21619,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -21637,7 +21688,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -21716,7 +21767,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21788,7 +21839,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -21901,7 +21952,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21969,7 +22020,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -22059,7 +22110,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -22129,7 +22180,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -22211,7 +22262,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -22290,7 +22341,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 2e60d08d43..bd9562110f 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -21,7 +21,6 @@ use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Hooks\Hooks; use Appwrite\Network\Validator\Email; -use Appwrite\Network\Validator\Redirect; use Appwrite\OpenSSL\OpenSSL; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; @@ -60,6 +59,7 @@ use Utopia\System\System; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; use Utopia\Validator\Boolean; +use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\URL; use Utopia\Validator\WhiteList; @@ -1188,8 +1188,8 @@ App::get('/v1/account/sessions/oauth2/:provider') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.') - ->param('success', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) - ->param('failure', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) + ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('request') ->inject('response') @@ -1784,8 +1784,8 @@ App::get('/v1/account/tokens/oauth2/:provider') ->label('abuse-limit', 50) ->label('abuse-key', 'ip:{ip}') ->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.') - ->param('success', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) - ->param('failure', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['hostnames', 'schemes']) + ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) + ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('request') ->inject('response') @@ -1864,7 +1864,7 @@ App::post('/v1/account/tokens/magic-url') ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), '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, ['hostnames', 'schemes']) + ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->param('phrase', false, new Boolean(), 'Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.', true) ->inject('request') ->inject('response') @@ -3157,7 +3157,7 @@ App::post('/v1/account/recovery') ->label('abuse-limit', 10) ->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}']) ->param('email', '', new Email(), 'User email.') - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['hostnames', 'schemes']) + ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients']) ->inject('request') ->inject('response') ->inject('user') @@ -3432,7 +3432,7 @@ App::post('/v1/account/verification') )) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{userId}') - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), '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.', false, ['hostnames', 'schemes']) // TODO add built-in confirm page + ->param('url', '', fn ($clients) => new Host($clients), '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.', false, ['clients']) // TODO add built-in confirm page ->inject('request') ->inject('response') ->inject('project') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index ac73994aef..48d20cd17f 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -1741,7 +1741,7 @@ App::post('/v1/projects/:projectId/platforms') ] )) ->param('projectId', '', new UID(), 'Project unique ID.') - ->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, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], 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, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], 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/controllers/api/teams.php b/app/controllers/api/teams.php index 4029c5b2f1..7f988d726f 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -11,7 +11,6 @@ use Appwrite\Event\Messaging; use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; -use Appwrite\Network\Validator\Redirect; use Appwrite\Platform\Workers\Deletes; use Appwrite\SDK\AuthType; use Appwrite\SDK\ContentType; @@ -50,6 +49,7 @@ use Utopia\Locale\Locale; use Utopia\System\System; use Utopia\Validator\ArrayList; use Utopia\Validator\Assoc; +use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; @@ -455,7 +455,7 @@ App::post('/v1/teams/:teamId/memberships') } return new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE); }, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', false, ['project']) - ->param('url', '', fn ($hostnames, $schemes) => new Redirect($hostnames, $schemes), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This 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, ['hostnames', 'schemes']) // TODO add our own built-in confirm page + ->param('url', '', fn ($clients) => new Host($clients), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This 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']) // TODO add our own built-in confirm page ->param('name', '', new Text(128), 'Name of the new team member. Max length: 128 chars.', true) ->inject('response') ->inject('project') diff --git a/app/controllers/api/vcs.php b/app/controllers/api/vcs.php index 0d45d62dff..2c145febcc 100644 --- a/app/controllers/api/vcs.php +++ b/app/controllers/api/vcs.php @@ -288,8 +288,8 @@ App::get('/v1/vcs/github/authorize') type: MethodType::WEBAUTH, hide: true, )) - ->param('success', '', fn ($hostnames) => new Host($hostnames), 'URL to redirect back to console after a successful installation attempt.', true, ['hostnames']) - ->param('failure', '', fn ($hostnames) => new Host($hostnames), 'URL to redirect back to console after a failed installation attempt.', true, ['hostnames']) + ->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a successful installation attempt.', true, ['clients']) + ->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a failed installation attempt.', true, ['clients']) ->inject('request') ->inject('response') ->inject('project') diff --git a/app/controllers/general.php b/app/controllers/general.php index b9d1f008ad..7e691d033f 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -497,7 +497,7 @@ App::init() ->inject('getProjectDB') ->inject('locale') ->inject('localeCodes') - ->inject('hostnames') + ->inject('clients') ->inject('geodb') ->inject('queueForUsage') ->inject('queueForEvents') @@ -505,8 +505,7 @@ App::init() ->inject('queueForFunctions') ->inject('isResourceBlocked') ->inject('previewHostname') - ->inject('platforms') - ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $hostnames, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname, array $platforms) { + ->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, callable $isResourceBlocked, string $previewHostname) { /* * Appwrite Router */ @@ -622,7 +621,7 @@ App::init() $port = \parse_url($request->getOrigin($referrer), PHP_URL_PORT); $refDomainOrigin = 'localhost'; - $validator = new Hostname($hostnames); + $validator = new Hostname($clients); if ($validator->isValid($origin)) { $refDomainOrigin = $origin; } @@ -713,7 +712,7 @@ App::init() * Skip this check for non-web platforms which are not required to send an origin header */ $origin = $request->getOrigin($request->getReferer('')); - $originValidator = new Origin($platforms); + $originValidator = new Origin(\array_merge($project->getAttribute('platforms', []), $console->getAttribute('platforms', []))); if ( !$originValidator->isValid($origin) diff --git a/app/controllers/mock.php b/app/controllers/mock.php index eb108ac61a..16d8e03841 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -3,7 +3,6 @@ global $utopia, $request, $response; use Appwrite\Extend\Exception; -use Appwrite\Network\Validator\Redirect; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; use Utopia\App; @@ -15,6 +14,7 @@ use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\UID; use Utopia\System\System; +use Utopia\Validator\Host; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; use Utopia\VCS\Adapter\Git\GitHub; @@ -26,7 +26,7 @@ App::get('/v1/mock/tests/general/oauth2') ->label('docs', false) ->label('mock', true) ->param('client_id', '', new Text(100), 'OAuth2 Client ID.') - ->param('redirect_uri', '', new Redirect(['localhost']), 'OAuth2 Redirect URI.') // Important to deny an open redirect attack + ->param('redirect_uri', '', new Host(['localhost']), 'OAuth2 Redirect URI.') // Important to deny an open redirect attack ->param('scope', '', new Text(100), 'OAuth2 scope list.') ->param('state', '', new Text(1024), 'OAuth2 state.') ->inject('response') @@ -44,7 +44,7 @@ App::get('/v1/mock/tests/general/oauth2/token') ->param('client_id', '', new Text(100), 'OAuth2 Client ID.') ->param('client_secret', '', new Text(100), 'OAuth2 scope list.') ->param('grant_type', 'authorization_code', new WhiteList(['refresh_token', 'authorization_code']), 'OAuth2 Grant Type.', true) - ->param('redirect_uri', '', new Redirect(['localhost']), 'OAuth2 Redirect URI.', true) + ->param('redirect_uri', '', new Host(['localhost']), 'OAuth2 Redirect URI.', true) ->param('code', '', new Text(100), 'OAuth2 state.', true) ->param('refresh_token', '', new Text(100), 'OAuth2 refresh token.', true) ->inject('response') diff --git a/app/init.php b/app/init.php index dfcb198f1e..941e253260 100644 --- a/app/init.php +++ b/app/init.php @@ -1191,46 +1191,58 @@ App::setResource('queueForCertificates', function (Queue\Publisher $publisher) { App::setResource('queueForMigrations', function (Queue\Publisher $publisher) { return new Migration($publisher); }, ['publisher']); -App::setResource('platforms', function (Document $project, Document $console) { - return [ - ...$project->getAttribute('platforms', []), - ...$console->getAttribute('platforms', []), - ]; -}, ['project', 'console']); -App::setResource('hostnames', function (array $platforms) { - // Allow environment configured hostnames - $hostnames = []; +App::setResource('clients', function ($request, $console, $project) { + $console->setAttribute('platforms', [ // Always allow current host + '$collection' => ID::custom('platforms'), + 'name' => 'Current Host', + 'type' => Origin::CLIENT_TYPE_WEB, + 'hostname' => $request->getHostname(), + ], Document::SET_TYPE_APPEND); + + $hostnames = explode(',', System::getEnv('_APP_CONSOLE_HOSTNAMES', '')); $validator = new Hostname(); - foreach (explode(',', System::getEnv('_APP_CONSOLE_HOSTNAMES', '')) as $hostname) { + foreach ($hostnames as $hostname) { $hostname = trim($hostname); - if ($validator->isValid($hostname)) { - $hostnames[] = $hostname; + if (!$validator->isValid($hostname)) { + continue; + } + $console->setAttribute('platforms', [ + '$collection' => ID::custom('platforms'), + 'type' => Origin::CLIENT_TYPE_WEB, + 'name' => $hostname, + 'hostname' => $hostname, + ], Document::SET_TYPE_APPEND); + } + + /** + * Get All verified client URLs for both console and current projects + * + Filter for duplicated entries + */ + $clientsConsole = \array_map( + fn ($node) => $node['hostname'], + \array_filter( + $console->getAttribute('platforms', []), + fn ($node) => (isset($node['type']) && ($node['type'] === Origin::CLIENT_TYPE_WEB) && !empty($node['hostname'])) + ) + ); + + $clients = $clientsConsole; + $platforms = $project->getAttribute('platforms', []); + + foreach ($platforms as $node) { + if ( + isset($node['type']) && + ($node['type'] === Origin::CLIENT_TYPE_WEB || + $node['type'] === Origin::CLIENT_TYPE_FLUTTER_WEB) && + !empty($node['hostname']) + ) { + $clients[] = $node['hostname']; } } - // Add database configured hostnames - foreach ($platforms as $platform) { - if (!empty($platform['hostname']) && in_array($platform['type'], [ - Origin::CLIENT_TYPE_WEB, - Origin::CLIENT_TYPE_FLUTTER_WEB, - ])) { - $hostnames[] = $platform['hostname']; - } - } + return \array_unique($clients); +}, ['request', 'console', 'project']); - return \array_unique($hostnames); -}, ['platforms']); -App::setResource('schemes', function (array $platforms, Document $project) { - $schemes = []; - - // Allow `appwrite-callback-${projectId}` scheme by default - if (!empty($project) && $project->getId() !== 'console') { - $schemes[] = 'exp'; - $schemes[] = 'appwrite-callback-' . $project->getId(); - } - - return \array_unique($schemes); -}, ['platforms', 'project']); App::setResource('user', function ($mode, $project, $console, $request, $response, $dbForProject, $dbForPlatform) { /** @var Appwrite\Utopia\Request $request */ /** @var Appwrite\Utopia\Response $response */ diff --git a/src/Appwrite/GraphQL/Types/Mapper.php b/src/Appwrite/GraphQL/Types/Mapper.php index c0bcb9b716..e5056d0abc 100644 --- a/src/Appwrite/GraphQL/Types/Mapper.php +++ b/src/Appwrite/GraphQL/Types/Mapper.php @@ -266,7 +266,6 @@ class Mapper case 'Appwrite\Utopia\Database\Validator\CustomId': case 'Utopia\Validator\Domain': case 'Appwrite\Network\Validator\Email': - case 'Appwrite\Network\Validator\Redirect': case 'Appwrite\Event\Validator\Event': case 'Appwrite\Event\Validator\FunctionEvent': case 'Utopia\Validator\HexColor': diff --git a/src/Appwrite/Network/Validator/Redirect.php b/src/Appwrite/Network/Validator/Redirect.php deleted file mode 100644 index aa1592cd08..0000000000 --- a/src/Appwrite/Network/Validator/Redirect.php +++ /dev/null @@ -1,88 +0,0 @@ - $hostnames Allow list of allowed hostnames - * @param array $schemes Allow list of allowed schemes - */ - public function __construct(array $hostnames = [], array $schemes = []) - { - $this->schemes = $schemes; - $this->hostnames = $hostnames; - parent::__construct($hostnames); - } - - /** - * Get Description - * - * Returns validator description - * - * @return string - */ - public function getDescription(): string - { - $schemes = ''; - if (!empty($this->schemes)) { - $schemes = "URL scheme must be one of the following: " . implode(", ", array_map(function ($scheme) { - return "$scheme://"; - }, $this->schemes)); - } - - $hostnames = ''; - if (!empty($this->hostnames)) { - $hostnames = "URL hostname must be one of the following: " . implode(", ", array_map(function ($hostname) { - return "http://$hostname"; - }, $this->hostnames)); - } - - return $schemes . ($schemes && $hostnames ? " or " : "") . $hostnames; - } - - /** - * Is valid - * - * Validation will pass when $value is a valid URL and the host is allowed - * - * @param mixed $value - * @return bool - */ - public function isValid($value): bool - { - if (empty($value) || !\is_string($value)) { - return false; - } - - // Then check for scheme - $scheme = ''; - if (preg_match('/^([a-z][a-z0-9+\.-]*):\/+/i', $value, $matches)) { - $scheme = strtolower($matches[1]); - } - - // These are dangerous schemes, may expose XSS vulnerabilities - if (in_array($scheme, ["javascript", "data", "blob", "file"])) { - return false; - } - - // When the scheme is in the allowed list, the URL is valid. - if (!empty($this->schemes) && in_array($scheme, $this->schemes)) { - return true; - } - - return parent::isValid($value); - } -} diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index 2eb9187882..bd5405539d 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -375,7 +375,6 @@ class OpenAPI3 extends Format $node['schema']['format'] = 'email'; $node['schema']['x-example'] = 'email@example.com'; break; - case 'Appwrite\Network\Validator\Redirect': case 'Utopia\Validator\Host': case 'Utopia\Validator\URL': $node['schema']['type'] = $validator->getType(); diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 927cda27d1..7277e3ab2b 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -393,7 +393,6 @@ class Swagger2 extends Format $node['format'] = 'email'; $node['x-example'] = 'email@example.com'; break; - case 'Appwrite\Network\Validator\Redirect': case 'Utopia\Validator\Host': case 'Utopia\Validator\URL': $node['type'] = $validator->getType(); diff --git a/src/Appwrite/Utopia/Response/Model/Platform.php b/src/Appwrite/Utopia/Response/Model/Platform.php index 16ff3f40fd..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-web, flutter-ios, flutter-android, ios, android, react-native-android, react-native-ios and unity.', + 'description' => 'Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.', 'default' => '', 'example' => 'web', ]) diff --git a/tests/unit/Network/Validators/RedirectTest.php b/tests/unit/Network/Validators/RedirectTest.php deleted file mode 100644 index 8c039451e0..0000000000 --- a/tests/unit/Network/Validators/RedirectTest.php +++ /dev/null @@ -1,45 +0,0 @@ - [["localhost"], [], "http://localhost", true], - "localhost-no-scheme" => [["localhost"], [], "localhost", false], - "expo scheme" => [[], ["exp"], "exp://192.168.0.1", true], - "custom scheme" => [[], ["myapp"], "myapp://", true], - "custom scheme triple slash" => [[], ["myapp"], "myapp:///", true], - "scheme with special chars" => [[], ["my-app+custom.123"], "my-app+custom.123://", true], - "url https" => [["example.com"], [], "https://example.com", true], - "url http" => [["example.com"], [], "http://example.com", true], - "wildcard" => [["*"], [], "https://example.com", true], - "wildcard subdomain" => [["*.example.com"], [], "https://sub.example.com", true], - "malformed scheme" => [[], [], "http:/example.com", false], - "invalid url" => [[], [], "example.com", false], - "invalid host" => [["notexample.com"], [], "https://example.com", false], - "javascript scheme" => [[], [], "javascript://alert(1)", false], - "javascript scheme with different case" => [[], [], "JaVaScRiPt://alert(1)", false], - "empty string" => [[], [], "", false], - ]; - } - - /** - * @dataProvider redirectsProvider - */ - public function testIsValid( - array $hostnames, - array $schemes, - string $value, - bool $expected - ): void { - $validator = new Redirect($hostnames, $schemes); - - $this->assertEquals($expected, $validator->isValid($value)); - } -} From 59516408af5d0c5a9a8dbca0810f84d13ee12fc0 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 9 Feb 2025 05:15:26 +0000 Subject: [PATCH 61/99] revert env update --- .env | 2 +- CHANGES.md | 2 +- app/config/variables.php | 6 +++--- app/views/install/compose.phtml | 4 ++-- docker-compose.yml | 6 +++--- src/Appwrite/Platform/Workers/StatsUsage.php | 2 +- src/Appwrite/Platform/Workers/Usage.php | 2 +- tests/e2e/Services/Functions/FunctionsCustomServerTest.php | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.env b/.env index 2e4b5fa5c7..06a6fa9b3e 100644 --- a/.env +++ b/.env @@ -85,7 +85,7 @@ _APP_MAINTENANCE_RETENTION_CACHE=2592000 _APP_MAINTENANCE_RETENTION_EXECUTION=1209600 _APP_MAINTENANCE_RETENTION_ABUSE=86400 _APP_MAINTENANCE_RETENTION_AUDIT=1209600 -_APP_STATS_AGGREGATION_INTERVAL=30 +_APP_USAGE_AGGREGATION_INTERVAL=30 _APP_STATS_RESOURCES_INTERVAL=3600 _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000 _APP_MAINTENANCE_RETENTION_SCHEDULES=86400 diff --git a/CHANGES.md b/CHANGES.md index 0e1be1698b..62db3d525e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1687,7 +1687,7 @@ - Added new environment variables to enable error logging: - The `_APP_LOGGING_PROVIDER` variable allows you to enable the logger set the value to one of `sentry`, `raygun`, `appsignal`. - The `_APP_LOGGING_CONFIG` variable configures authentication to 3rd party error logging providers. If using Sentry, this should be 'SENTRY_API_KEY;SENTRY_APP_ID'. If using Raygun, this should be Raygun API key. If using AppSignal, this should be AppSignal API key. -- Added new environment variable `_APP_STATS_AGGREGATION_INTERVAL` to configure the usage worker interval +- Added new environment variable `_APP_USAGE_AGGREGATION_INTERVAL` to configure the usage worker interval - Added negative rotation values to file preview endpoint - Multiple responses from the Health service were changed to new (better) schema **Breaking Change** - Method `health.getAntiVirus()` has been renamed to `health.getAntivirus()` diff --git a/app/config/variables.php b/app/config/variables.php index 6603f246bc..57810525c7 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -224,7 +224,7 @@ return [ 'filter' => '' ], [ - 'name' => '_APP_STATS_AGGREGATION_INTERVAL', + 'name' => '_APP_USAGE_AGGREGATION_INTERVAL', 'description' => 'Interval value containing the number of seconds that the Appwrite usage process should wait before aggregating stats and syncing it to Database from TimeSeries data. The default value is 30 seconds. Reintroduced in 1.1.0.', 'introduction' => '1.1.0', 'default' => '30', @@ -234,7 +234,7 @@ return [ ], [ 'name' => '_APP_USAGE_TIMESERIES_INTERVAL', - 'description' => 'Deprecated since 1.1.0 use _APP_STATS_AGGREGATION_INTERVAL instead.', + 'description' => 'Deprecated since 1.1.0 use _APP_USAGE_AGGREGATION_INTERVAL instead.', 'introduction' => '1.0.0', 'default' => '30', 'required' => false, @@ -243,7 +243,7 @@ return [ ], [ 'name' => '_APP_USAGE_DATABASE_INTERVAL', - 'description' => 'Deprecated since 1.1.0 use _APP_STATS_AGGREGATION_INTERVAL instead.', + 'description' => 'Deprecated since 1.1.0 use _APP_USAGE_AGGREGATION_INTERVAL instead.', 'introduction' => '1.0.0', 'default' => '900', 'required' => false, diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 1a1f07b8a0..d8f3f649e0 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -734,7 +734,7 @@ $image = $this->getParam('image', ''); - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL + - _APP_USAGE_AGGREGATION_INTERVAL appwrite-worker-stats-usage-dump: image: /: @@ -762,7 +762,7 @@ $image = $this->getParam('image', ''); - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL + - _APP_USAGE_AGGREGATION_INTERVAL appwrite-task-scheduler-functions: image: /: diff --git a/docker-compose.yml b/docker-compose.yml index 2603e707e8..5391bbe397 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -781,7 +781,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL + - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES appwrite-worker-stats-usage: @@ -812,7 +812,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL + - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES appwrite-worker-stats-usage-dump: @@ -843,7 +843,7 @@ services: - _APP_REDIS_PASS - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - - _APP_STATS_AGGREGATION_INTERVAL + - _APP_USAGE_AGGREGATION_INTERVAL - _APP_DATABASE_SHARED_TABLES - _APP_STATS_USAGE_DUAL_WRITING_DBS diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index f0f7d99b03..c4d8b0e8d2 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -56,7 +56,7 @@ class StatsUsage extends Action } //Todo Figure out way to preserve keys when the container is being recreated @shimonewman - $aggregationInterval = (int) System::getEnv('_APP_STATS_AGGREGATION_INTERVAL', '20'); + $aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); $project = new Document($payload['project'] ?? []); $projectId = $project->getInternalId(); foreach ($payload['reduce'] ?? [] as $document) { diff --git a/src/Appwrite/Platform/Workers/Usage.php b/src/Appwrite/Platform/Workers/Usage.php index 1380d223df..3687eeab67 100644 --- a/src/Appwrite/Platform/Workers/Usage.php +++ b/src/Appwrite/Platform/Workers/Usage.php @@ -41,7 +41,7 @@ class Usage extends Action $this->action($message, $project, $getProjectDB, $queueForUsageDump); }); - $this->aggregationInterval = (int) System::getEnv('_APP_STATS_AGGREGATION_INTERVAL', '20'); + $this->aggregationInterval = (int) System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', '20'); $this->lastTriggeredTime = time(); } diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 9807e47999..d8d1eb8eb5 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -1687,7 +1687,7 @@ class FunctionsCustomServerTest extends Scope }); // Await Aggregation - sleep(System::getEnv('_APP_STATS_AGGREGATION_INTERVAL', 30)); + sleep(System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', 30)); $this->assertEventually(function () use ($functionId) { $response = $this->getFunctionUsage($functionId, [ From 55e30a0ef49a9af942e637dcc9e6433ec5495fdf Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 9 Feb 2025 12:19:16 +0545 Subject: [PATCH 62/99] Update src/Appwrite/Platform/Workers/StatsUsageDump.php Co-authored-by: Christy Jacob --- src/Appwrite/Platform/Workers/StatsUsageDump.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index a1b776b720..581bacdc6c 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -115,9 +115,6 @@ class StatsUsageDump extends Action foreach ($payload['stats'] ?? [] as $stats) { $project = new Document($stats['project'] ?? []); - /** - * End temp bug fallback - */ $numberOfKeys = !empty($stats['keys']) ? count($stats['keys']) : 0; $receivedAt = $stats['receivedAt'] ?? 'NONE'; if ($numberOfKeys === 0) { From ec9045b488c935ed31b441884c888d420fe8d628 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 9 Feb 2025 06:36:59 +0000 Subject: [PATCH 63/99] add stats-resources health queue --- app/controllers/api/health.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 1551b7aca7..e5336067c8 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -952,6 +952,7 @@ App::get('/v1/health/queue/failed/:name') Event::AUDITS_QUEUE_NAME, Event::MAILS_QUEUE_NAME, Event::FUNCTIONS_QUEUE_NAME, + Event::STATS_RESOURCES_QUEUE_NAME, Event::STATS_USAGE_QUEUE_NAME, Event::STATS_USAGE_DUMP_QUEUE_NAME, Event::WEBHOOK_QUEUE_NAME, From e8faf2a85939ddb9ffeb03b91432103d87bca0f0 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 9 Feb 2025 08:52:07 +0000 Subject: [PATCH 64/99] fix worker --- src/Appwrite/Platform/Workers/StatsResources.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 668d71d703..e3c76ecb9a 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -85,11 +85,20 @@ class StatsResources extends Action { Console::info('Begining count for: ' . $project->getId()); + $dbForLogs = null; + $dbForProject = null; try { /** @var \Utopia\Database\Database $dbForLogs */ $dbForLogs = call_user_func($getLogsDB, $project); /** @var \Utopia\Database\Database $dbForProject */ $dbForProject = call_user_func($getProjectDB, $project); + } catch (Throwable $th) { + Console::error('Unable to get database'); + Console::error($th->getMessage()); + return; + } + + try { $region = $project->getAttribute('region'); @@ -162,12 +171,12 @@ class StatsResources extends Action } catch (Throwable $th) { call_user_func_array($this->logError, [$th, "StatsResources", "count_for_functions_{$project->getId()}"]); } + + $this->writeDocuments($dbForLogs, $project); } catch (Throwable $th) { call_user_func_array($this->logError, [$th, "StatsResources", "count_for_project_{$project->getId()}"]); } - $this->writeDocuments($dbForLogs, $project); - Console::info('End of count for: ' . $project->getId()); } From 3092e765cc9c82b66deec4c844f432a5e72d4d76 Mon Sep 17 00:00:00 2001 From: fogelito Date: Sun, 9 Feb 2025 18:34:41 +0200 Subject: [PATCH 65/99] indexException --- app/controllers/api/databases.php | 18 ++++++++++++ composer.lock | 46 +++++++++++++++---------------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index df46c1890b..8b2369ee15 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -377,6 +377,19 @@ function updateAttribute( $dbForProject->purgeCachedDocument('database_' . $db->getInternalId(), $relatedCollection->getId()); } } else { + + $validator = new IndexValidator( + $collection->getAttribute('attributes', []), + $dbForProject->getAdapter()->getMaxIndexLength(), + $dbForProject->getAdapter()->getInternalIndexesKeys(), + ); + + foreach ($collection->getAttribute('indexes', []) as $index){ + if (!$validator->isValid($index)) { + throw new Exception(Exception::INDEX_INVALID, $validator->getDescription()); + } + } + try { $dbForProject->updateAttribute( collection: $collectionId, @@ -393,6 +406,11 @@ function updateAttribute( throw new Exception(Exception::ATTRIBUTE_NOT_FOUND); } catch (LimitException) { throw new Exception(Exception::ATTRIBUTE_LIMIT_EXCEEDED); + } catch (indexException $e) { + /** + * We do not have index indexException thrown from Utopia... + */ + throw new Exception(Exception::INDEX_INVALID, $e->getDescription()); } } diff --git a/composer.lock b/composer.lock index f3075c1801..a65fabb429 100644 --- a/composer.lock +++ b/composer.lock @@ -1237,16 +1237,16 @@ }, { "name": "open-telemetry/api", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/opentelemetry-php/api.git", - "reference": "74b1a03263be8c5acb578f41da054b4bac3af4a0" + "reference": "8b925df3047628968bc5be722468db1b98b82d51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opentelemetry-php/api/zipball/74b1a03263be8c5acb578f41da054b4bac3af4a0", - "reference": "74b1a03263be8c5acb578f41da054b4bac3af4a0", + "url": "https://api.github.com/repos/opentelemetry-php/api/zipball/8b925df3047628968bc5be722468db1b98b82d51", + "reference": "8b925df3047628968bc5be722468db1b98b82d51", "shasum": "" }, "require": { @@ -1303,7 +1303,7 @@ "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", "source": "https://github.com/open-telemetry/opentelemetry-php" }, - "time": "2025-01-20T23:35:16+00:00" + "time": "2025-02-03T21:49:11+00:00" }, { "name": "open-telemetry/context", @@ -1493,16 +1493,16 @@ }, { "name": "open-telemetry/sdk", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/opentelemetry-php/sdk.git", - "reference": "96aeaee5b7cb8c0bc4af7ff4717b429f2d9f67e1" + "reference": "37eec0fe47ddd627911f318f29b6cd48196be0c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opentelemetry-php/sdk/zipball/96aeaee5b7cb8c0bc4af7ff4717b429f2d9f67e1", - "reference": "96aeaee5b7cb8c0bc4af7ff4717b429f2d9f67e1", + "url": "https://api.github.com/repos/opentelemetry-php/sdk/zipball/37eec0fe47ddd627911f318f29b6cd48196be0c0", + "reference": "37eec0fe47ddd627911f318f29b6cd48196be0c0", "shasum": "" }, "require": { @@ -1579,24 +1579,24 @@ "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", "source": "https://github.com/open-telemetry/opentelemetry-php" }, - "time": "2025-01-09T23:17:14+00:00" + "time": "2025-01-29T21:40:28+00:00" }, { "name": "open-telemetry/sem-conv", - "version": "1.27.1", + "version": "1.30.0", "source": { "type": "git", "url": "https://github.com/opentelemetry-php/sem-conv.git", - "reference": "1dba705fea74bc0718d04be26090e3697e56f4e6" + "reference": "4178c9f390da8e4dbca9b181a9d1efd50cf7ee0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/1dba705fea74bc0718d04be26090e3697e56f4e6", - "reference": "1dba705fea74bc0718d04be26090e3697e56f4e6", + "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/4178c9f390da8e4dbca9b181a9d1efd50cf7ee0a", + "reference": "4178c9f390da8e4dbca9b181a9d1efd50cf7ee0a", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.0" }, "type": "library", "extra": { @@ -1636,7 +1636,7 @@ "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", "source": "https://github.com/open-telemetry/opentelemetry-php" }, - "time": "2024-08-28T09:20:31+00:00" + "time": "2025-02-06T00:21:48+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -2453,16 +2453,16 @@ }, { "name": "symfony/http-client", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "339ba21476eb184290361542f732ad12c97591ec" + "reference": "7ce6078c79a4a7afff931c413d2959d3bffbfb8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/339ba21476eb184290361542f732ad12c97591ec", - "reference": "339ba21476eb184290361542f732ad12c97591ec", + "url": "https://api.github.com/repos/symfony/http-client/zipball/7ce6078c79a4a7afff931c413d2959d3bffbfb8d", + "reference": "7ce6078c79a4a7afff931c413d2959d3bffbfb8d", "shasum": "" }, "require": { @@ -2528,7 +2528,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.2.2" + "source": "https://github.com/symfony/http-client/tree/v7.2.3" }, "funding": [ { @@ -2544,7 +2544,7 @@ "type": "tidelift" } ], - "time": "2024-12-30T18:35:15+00:00" + "time": "2025-01-28T15:51:35+00:00" }, { "name": "symfony/http-client-contracts", @@ -8503,7 +8503,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { From f6c28322c9d391dc90dd1573de90508c23a6f337 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 10 Feb 2025 09:30:24 +0530 Subject: [PATCH 66/99] chore: update dependencies --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 0af2bc4795..fb9dd09359 100644 --- a/composer.lock +++ b/composer.lock @@ -4490,16 +4490,16 @@ }, { "name": "utopia-php/queue", - "version": "0.8.2", + "version": "0.8.6", "source": { "type": "git", "url": "https://github.com/utopia-php/queue.git", - "reference": "a6ec26a787e8292ca2d7b8f5a0ad179b46b2c4d0" + "reference": "b713b997285c29d120bbcbe3d6e93762d850f87c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/queue/zipball/a6ec26a787e8292ca2d7b8f5a0ad179b46b2c4d0", - "reference": "a6ec26a787e8292ca2d7b8f5a0ad179b46b2c4d0", + "url": "https://api.github.com/repos/utopia-php/queue/zipball/b713b997285c29d120bbcbe3d6e93762d850f87c", + "reference": "b713b997285c29d120bbcbe3d6e93762d850f87c", "shasum": "" }, "require": { @@ -4549,9 +4549,9 @@ ], "support": { "issues": "https://github.com/utopia-php/queue/issues", - "source": "https://github.com/utopia-php/queue/tree/0.8.2" + "source": "https://github.com/utopia-php/queue/tree/0.8.6" }, - "time": "2025-02-06T11:01:15+00:00" + "time": "2025-02-10T03:35:00+00:00" }, { "name": "utopia-php/registry", @@ -8747,7 +8747,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { From 5b786e2a688da15bbd840fb80a06621dba42c4a8 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 09:19:56 +0200 Subject: [PATCH 67/99] Catch index exception --- app/controllers/general.php | 3 +++ composer.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 7e691d033f..d9d41a16fd 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -837,6 +837,9 @@ App::error() case 'Utopia\Database\Exception\Dependency': $error = new AppwriteException(AppwriteException::INDEX_DEPENDENCY, null, previous: $error); break; + case 'Utopia\Database\Exception\Index': + $error = new AppwriteException(AppwriteException::INDEX_INVALID, $error->getMessage(), previous: $error); + break; } $code = $error->getCode(); diff --git a/composer.json b/composer.json index 8f5bb54f79..d0b457b6bd 100644 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "utopia-php/cache": "0.11.*", "utopia-php/cli": "0.15.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "0.56.4", + "utopia-php/database": "dev-index-exception as 0.56.4", "utopia-php/domains": "0.5.*", "utopia-php/dsn": "0.2.1", "utopia-php/framework": "0.33.*", From 27709e7683d3505ba442fca537352db24be734da Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 10:04:51 +0200 Subject: [PATCH 68/99] IndexException --- app/controllers/api/databases.php | 8 +++----- composer.json | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 8b2369ee15..c0357ceac1 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -27,6 +27,7 @@ use Utopia\Database\Document; use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Conflict as ConflictException; use Utopia\Database\Exception\Duplicate as DuplicateException; +use Utopia\Database\Exception\Index as IndexException; use Utopia\Database\Exception\Limit as LimitException; use Utopia\Database\Exception\NotFound as NotFoundException; use Utopia\Database\Exception\Query as QueryException; @@ -384,7 +385,7 @@ function updateAttribute( $dbForProject->getAdapter()->getInternalIndexesKeys(), ); - foreach ($collection->getAttribute('indexes', []) as $index){ + foreach ($collection->getAttribute('indexes', []) as $index) { if (!$validator->isValid($index)) { throw new Exception(Exception::INDEX_INVALID, $validator->getDescription()); } @@ -407,10 +408,7 @@ function updateAttribute( } catch (LimitException) { throw new Exception(Exception::ATTRIBUTE_LIMIT_EXCEEDED); } catch (indexException $e) { - /** - * We do not have index indexException thrown from Utopia... - */ - throw new Exception(Exception::INDEX_INVALID, $e->getDescription()); + throw new Exception(Exception::INDEX_INVALID, $e->getMessage()); } } diff --git a/composer.json b/composer.json index d0b457b6bd..8f5bb54f79 100644 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "utopia-php/cache": "0.11.*", "utopia-php/cli": "0.15.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "dev-index-exception as 0.56.4", + "utopia-php/database": "0.56.4", "utopia-php/domains": "0.5.*", "utopia-php/dsn": "0.2.1", "utopia-php/framework": "0.33.*", From a032540b3c5676e83322ff64d9b93ce6b51b3d36 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 10:11:52 +0200 Subject: [PATCH 69/99] IndexException --- app/controllers/api/databases.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index c0357ceac1..4d62c9c384 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -378,19 +378,6 @@ function updateAttribute( $dbForProject->purgeCachedDocument('database_' . $db->getInternalId(), $relatedCollection->getId()); } } else { - - $validator = new IndexValidator( - $collection->getAttribute('attributes', []), - $dbForProject->getAdapter()->getMaxIndexLength(), - $dbForProject->getAdapter()->getInternalIndexesKeys(), - ); - - foreach ($collection->getAttribute('indexes', []) as $index) { - if (!$validator->isValid($index)) { - throw new Exception(Exception::INDEX_INVALID, $validator->getDescription()); - } - } - try { $dbForProject->updateAttribute( collection: $collectionId, From edbe0fb72ff58f721c32f66f53dbcf931cf01490 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 10:40:12 +0200 Subject: [PATCH 70/99] Bump Database version 0.58.5 --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index fe3400cfe5..b7c3711410 100644 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "utopia-php/cache": "0.11.*", "utopia-php/cli": "0.15.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "0.58.4", + "utopia-php/database": "0.58.5", "utopia-php/domains": "0.5.*", "utopia-php/dsn": "0.2.1", "utopia-php/framework": "0.33.*", diff --git a/composer.lock b/composer.lock index 87ee9979ae..e653783ef5 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": "232691925e05350c7a3831a4e43d79d1", + "content-hash": "4a54d0bd5973ed68082970f317664df3", "packages": [ { "name": "adhocore/jwt", @@ -3717,16 +3717,16 @@ }, { "name": "utopia-php/database", - "version": "0.58.4", + "version": "0.58.5", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "ff3fd22e4fe757cc2a78f17169f6dcc45c96d0fe" + "reference": "55308014c697639c6cb270cb5a33cc88fc1ef839" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/ff3fd22e4fe757cc2a78f17169f6dcc45c96d0fe", - "reference": "ff3fd22e4fe757cc2a78f17169f6dcc45c96d0fe", + "url": "https://api.github.com/repos/utopia-php/database/zipball/55308014c697639c6cb270cb5a33cc88fc1ef839", + "reference": "55308014c697639c6cb270cb5a33cc88fc1ef839", "shasum": "" }, "require": { @@ -3767,9 +3767,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.58.4" + "source": "https://github.com/utopia-php/database/tree/0.58.5" }, - "time": "2025-02-05T02:51:02+00:00" + "time": "2025-02-10T08:26:52+00:00" }, { "name": "utopia-php/domains", From 33f55c73a7148dae168af76c8e1184e9491e5e52 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 10:42:29 +0200 Subject: [PATCH 71/99] Revert cast Index --- app/controllers/general.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index d9d41a16fd..7e691d033f 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -837,9 +837,6 @@ App::error() case 'Utopia\Database\Exception\Dependency': $error = new AppwriteException(AppwriteException::INDEX_DEPENDENCY, null, previous: $error); break; - case 'Utopia\Database\Exception\Index': - $error = new AppwriteException(AppwriteException::INDEX_INVALID, $error->getMessage(), previous: $error); - break; } $code = $error->getCode(); From 7caab2f9ff5ae9b56b4c583ea235d13c12b4d7aa Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 10:55:37 +0200 Subject: [PATCH 72/99] IndexException --- app/controllers/api/databases.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 4d62c9c384..1e0fa03d2c 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -394,7 +394,7 @@ function updateAttribute( throw new Exception(Exception::ATTRIBUTE_NOT_FOUND); } catch (LimitException) { throw new Exception(Exception::ATTRIBUTE_LIMIT_EXCEEDED); - } catch (indexException $e) { + } catch (IndexException $e) { throw new Exception(Exception::INDEX_INVALID, $e->getMessage()); } } From 7a8688932c86097de2dc092fea254dae8d976bb1 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 15:40:21 +0200 Subject: [PATCH 73/99] Add test --- .../e2e/Services/Databases/DatabasesBase.php | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index d079cb313c..adc31a391d 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -399,6 +399,73 @@ trait DatabasesBase $this->assertEquals(400, $response['headers']['status-code']); } + /** + * @depends testCreateDatabase + */ + public function testPatchAttribute(array $data): void + { + $databaseId = $data['databaseId']; + + $collection = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'patch', + 'documentSecurity' => true, + 'permissions' => [ + Permission::create(Role::user($this->getUser()['$id'])), + ], + ]); + + $this->assertEquals(201, $collection['headers']['status-code']); + $this->assertEquals($collection['body']['name'], 'patch'); + + $attribute = $this->client->call(Client::METHOD_POST, '/databases/'.$databaseId.'/collections/'.$collection['body']['$id'].'/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'title', + 'required' => true, + 'size' => 100, + ]); + $this->assertEquals(202, $attribute['headers']['status-code']); + $this->assertEquals($attribute['body']['size'], 100); + + sleep(1); + + $index = $this->client->call(Client::METHOD_POST, '/databases/'.$databaseId.'/collections/'.$collection['body']['$id'].'/indexes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'titleIndex', + 'type' => 'key', + 'attributes' => ['title'], + ]); + $this->assertEquals(202, $index['headers']['status-code']); + + sleep(1); + + /** + * Update attribute size to exceed Index maximux length + */ + $attribute = $this->client->call(Client::METHOD_PATCH, '/databases/'.$databaseId.'/collections/'.$collection['body']['$id'].'/attributes/string/'.$attribute['body']['key'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ]), [ + 'size' => 1000, + 'required' => true, + 'default' => null, + ]); + + $this->assertEquals(400, $attribute['headers']['status-code']); + $this->assertEquals('Index length is longer than the maximum: 768', $attribute['body']['message']); + } + public function testUpdateAttributeEnum(): void { $database = $this->client->call(Client::METHOD_POST, '/databases', [ From 8c3a243a5d3365d95653b2ba61cde92fe35e769a Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 10 Feb 2025 15:40:45 +0200 Subject: [PATCH 74/99] Typo --- tests/e2e/Services/Databases/DatabasesBase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index adc31a391d..3321a786a7 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -450,7 +450,7 @@ trait DatabasesBase sleep(1); /** - * Update attribute size to exceed Index maximux length + * Update attribute size to exceed Index maximum length */ $attribute = $this->client->call(Client::METHOD_PATCH, '/databases/'.$databaseId.'/collections/'.$collection['body']['$id'].'/attributes/string/'.$attribute['body']['key'], array_merge([ 'content-type' => 'application/json', From bfc0b531630b721992b8024d71b3da96a9bb639b Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 10 Feb 2025 23:05:34 +0530 Subject: [PATCH 75/99] chore: add simple toggle for dual writing --- src/Appwrite/Platform/Workers/StatsUsageDump.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Appwrite/Platform/Workers/StatsUsageDump.php b/src/Appwrite/Platform/Workers/StatsUsageDump.php index 581bacdc6c..38ebd578a5 100644 --- a/src/Appwrite/Platform/Workers/StatsUsageDump.php +++ b/src/Appwrite/Platform/Workers/StatsUsageDump.php @@ -317,10 +317,8 @@ class StatsUsageDump extends Action protected function writeToLogsDB(Document $project, Document $document) { - $databasesToDualWrite = explode(',', System::getEnv('_APP_STATS_USAGE_DUAL_WRITING_DBS', '')); - - $db = $project->getAttribute('database'); - if (!in_array($db, $databasesToDualWrite)) { + if (!System::getEnv('_APP_STATS_USAGE_DUAL_WRITING', false)) { + Console::log('Dual Writing is disabled. Skipping...'); return; } From abaa5c7f489910d3d8d4df7bb5b0f47e5c02df51 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 11 Feb 2025 22:26:39 +1300 Subject: [PATCH 76/99] Only run shared tables tests if database library version changed compared to base --- .github/workflows/tests.yml | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5b7438de42..e0213ea46e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,6 +11,30 @@ env: on: [pull_request] jobs: + check_database_changes: + name: Check if utopia-php/database changed + runs-on: ubuntu-latest + outputs: + database_changed: ${{ steps.check.outputs.database_changed }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Fetch base branch + run: git fetch origin ${{ github.event.pull_request.base.ref }} + + - name: Check for utopia-php/database changes + id: check + run: | + if git diff origin/${{ github.event.pull_request.base.ref }} HEAD -- composer.lock | grep -q '"name": "utopia-php/database"'; then + echo "Database version changed, going to run all mode tests." + echo "database_changed=true" >> "$GITHUB_ENV" + echo "database_changed=true" >> "$GITHUB_OUTPUT" + else + echo "database_changed=false" >> "$GITHUB_ENV" + echo "database_changed=false" >> "$GITHUB_OUTPUT" + fi + setup: name: Setup & Build Appwrite Image runs-on: ubuntu-latest @@ -102,7 +126,7 @@ jobs: e2e_service_test: name: E2E Service Test runs-on: ubuntu-latest - needs: setup + needs: [setup, check_database_changes] strategy: fail-fast: false matrix: @@ -151,6 +175,8 @@ jobs: sleep 30 - name: Run ${{ matrix.service }} tests with ${{ matrix.tables-mode }} table mode + if: | + matrix.tables-mode == 'Project' || needs.check_database_changes.outputs.database_changed == 'true' run: | if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then echo "Using shared tables V1" @@ -165,7 +191,7 @@ jobs: export _APP_DATABASE_SHARED_TABLES= export _APP_DATABASE_SHARED_TABLES_V1= fi - + docker compose exec -T \ -e _APP_DATABASE_SHARED_TABLES \ -e _APP_DATABASE_SHARED_TABLES_V1 \ @@ -251,4 +277,4 @@ jobs: comment-id: ${{ steps.fc.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} body-path: benchmark.txt - edit-mode: replace \ No newline at end of file + edit-mode: replace From 61e65e1edaa7aba380fad5091f98f2be23eb7f5b Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 11 Feb 2025 22:37:57 +1300 Subject: [PATCH 77/99] Skip shared jobs entirely --- .github/workflows/tests.yml | 67 ++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e0213ea46e..1d35fec3c7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,7 +8,7 @@ env: IMAGE: appwrite-dev CACHE_KEY: appwrite-dev-${{ github.event.pull_request.head.sha }} -on: [pull_request] +on: [ pull_request ] jobs: check_database_changes: @@ -126,7 +126,63 @@ jobs: e2e_service_test: name: E2E Service Test runs-on: ubuntu-latest - needs: [setup, check_database_changes] + needs: setup + strategy: + fail-fast: false + matrix: + service: [ + Account, + Avatars, + Console, + Databases, + Functions, + FunctionsSchedule, + GraphQL, + Health, + Locale, + Projects, + Realtime, + Storage, + Teams, + Users, + Webhooks, + VCS, + Messaging, + Migrations + ] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Load Cache + uses: actions/cache@v4 + with: + key: ${{ env.CACHE_KEY }} + path: /tmp/${{ env.IMAGE }}.tar + fail-on-cache-miss: true + + - name: Load and Start Appwrite + run: | + docker load --input /tmp/${{ env.IMAGE }}.tar + docker compose up -d + sleep 30 + + - name: Run ${{ matrix.service }} tests with Project table mode + run: | + echo "Using project tables" + export _APP_DATABASE_SHARED_TABLES= + export _APP_DATABASE_SHARED_TABLES_V1= + + docker compose exec -T \ + -e _APP_DATABASE_SHARED_TABLES \ + -e _APP_DATABASE_SHARED_TABLES_V1 \ + appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug + + e2e_shared_mode_test: + name: E2E Shared Mode Service Test + runs-on: ubuntu-latest + needs: [ setup, check_database_changes ] + if: needs.check_database_changes.outputs.database_changed == 'true' strategy: fail-fast: false matrix: @@ -152,7 +208,6 @@ jobs: Migrations ] tables-mode: [ - 'Project', 'Shared V1', 'Shared V2', ] @@ -175,8 +230,6 @@ jobs: sleep 30 - name: Run ${{ matrix.service }} tests with ${{ matrix.tables-mode }} table mode - if: | - matrix.tables-mode == 'Project' || needs.check_database_changes.outputs.database_changed == 'true' run: | if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then echo "Using shared tables V1" @@ -186,10 +239,6 @@ jobs: echo "Using shared tables V2" export _APP_DATABASE_SHARED_TABLES=database_db_main export _APP_DATABASE_SHARED_TABLES_V1= - else - echo "Using project tables" - export _APP_DATABASE_SHARED_TABLES= - export _APP_DATABASE_SHARED_TABLES_V1= fi docker compose exec -T \ From f2ae6e07cb795db71bed614ffd3294befa55d7c9 Mon Sep 17 00:00:00 2001 From: Fabian Gruber Date: Mon, 10 Feb 2025 13:12:13 +0100 Subject: [PATCH 78/99] feat(builds): check if function is blocked before building --- src/Appwrite/Platform/Workers/Builds.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index e7cbbd5088..0f81c36b72 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -54,8 +54,10 @@ class Builds extends Action ->inject('cache') ->inject('dbForProject') ->inject('deviceForFunctions') + ->inject('isResourceBlocked') ->inject('log') - ->callback(fn ($message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, StatsUsage $usage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, Log $log) => $this->action($message, $project, $dbForPlatform, $queueForEvents, $queueForFunctions, $usage, $cache, $dbForProject, $deviceForFunctions, $log)); + ->callback(fn ($message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, StatsUsage $usage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, callable $isResourceBlocked, Log $log) => + $this->action($message, $project, $dbForPlatform, $queueForEvents, $queueForFunctions, $usage, $cache, $dbForProject, $deviceForFunctions, $isResourceBlocked, $log)); } /** @@ -72,7 +74,7 @@ class Builds extends Action * @return void * @throws \Utopia\Database\Exception */ - public function action(Message $message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, StatsUsage $queueForStatsUsage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, Log $log): void + public function action(Message $message, Document $project, Database $dbForPlatform, Event $queueForEvents, Func $queueForFunctions, StatsUsage $queueForStatsUsage, Cache $cache, Database $dbForProject, Device $deviceForFunctions, callable $isResourceBlocked, Log $log): void { $payload = $message->getPayload() ?? []; @@ -93,7 +95,7 @@ class Builds extends Action case BUILD_TYPE_RETRY: Console::info('Creating build for deployment: ' . $deployment->getId()); $github = new GitHub($cache); - $this->buildDeployment($deviceForFunctions, $queueForFunctions, $queueForEvents, $queueForStatsUsage, $dbForPlatform, $dbForProject, $github, $project, $resource, $deployment, $template, $log); + $this->buildDeployment($deviceForFunctions, $queueForFunctions, $queueForEvents, $queueForStatsUsage, $dbForPlatform, $dbForProject, $github, $project, $resource, $deployment, $template, $isResourceBlocked, $log); break; default: @@ -118,7 +120,7 @@ class Builds extends Action * @throws \Utopia\Database\Exception * @throws Exception */ - protected function buildDeployment(Device $deviceForFunctions, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Database $dbForPlatform, Database $dbForProject, GitHub $github, Document $project, Document $function, Document $deployment, Document $template, Log $log): void + protected function buildDeployment(Device $deviceForFunctions, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Database $dbForPlatform, Database $dbForProject, GitHub $github, Document $project, Document $function, Document $deployment, Document $template, callable $isResourceBlocked, Log $log): void { $executor = new Executor(System::getEnv('_APP_EXECUTOR_HOST')); @@ -130,6 +132,10 @@ class Builds extends Action throw new \Exception('Function not found', 404); } + if ($isResourceBlocked($project, RESOURCE_TYPE_FUNCTIONS, $functionId)) { + throw new \Exception('Function blocked', 403); + } + $deploymentId = $deployment->getId(); $log->addTag('deploymentId', $deploymentId); From 8324b789c5e533a709c5f6fbe7f0912620dd60f5 Mon Sep 17 00:00:00 2001 From: Fabian Gruber Date: Tue, 11 Feb 2025 11:00:28 +0100 Subject: [PATCH 79/99] chore(review): remove http status codes from exceptions --- src/Appwrite/Platform/Workers/Builds.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index 0f81c36b72..c21c28b517 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -129,11 +129,11 @@ class Builds extends Action $function = $dbForProject->getDocument('functions', $functionId); if ($function->isEmpty()) { - throw new \Exception('Function not found', 404); + throw new \Exception('Function not found'); } if ($isResourceBlocked($project, RESOURCE_TYPE_FUNCTIONS, $functionId)) { - throw new \Exception('Function blocked', 403); + throw new \Exception('Function blocked'); } $deploymentId = $deployment->getId(); @@ -141,11 +141,11 @@ class Builds extends Action $deployment = $dbForProject->getDocument('deployments', $deploymentId); if ($deployment->isEmpty()) { - throw new \Exception('Deployment not found', 404); + throw new \Exception('Deployment not found'); } if (empty($deployment->getAttribute('entrypoint', ''))) { - throw new \Exception('Entrypoint for your Appwrite Function is missing. Please specify it when making deployment or update the entrypoint under your function\'s "Settings" > "Configuration" > "Entrypoint".', 500); + throw new \Exception('Entrypoint for your Appwrite Function is missing. Please specify it when making deployment or update the entrypoint under your function\'s "Settings" > "Configuration" > "Entrypoint".'); } $version = $function->getAttribute('version', 'v2'); @@ -577,7 +577,7 @@ class Builds extends Action $build = $dbForProject->getDocument('builds', $build->getId()); if ($build->isEmpty()) { - throw new \Exception('Build not found', 404); + throw new \Exception('Build not found'); } if ($build->getAttribute('status') === 'canceled') { From f6aff786f122010ffd5542090bb28d501719fb5d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 11 Feb 2025 17:59:48 +0545 Subject: [PATCH 80/99] Fix: missing call for image transformations counting --- src/Appwrite/Platform/Workers/StatsResources.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index e3c76ecb9a..11e33417cc 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -159,6 +159,12 @@ class StatsResources extends Action } catch (Throwable $th) { call_user_func_array($this->logError, [$th, "StatsResources", "count_for_buckets_{$project->getId()}"]); } + + try { + $this->countImageTransformations($dbForProject, $dbForLogs, $region); + } catch (Throwable $th) { + call_user_func_array($this->logError, [$th, "StatsResources", "count_for_buckets_{$project->getId()}"]); + } try { $this->countForDatabase($dbForProject, $dbForLogs, $region); From 2189ca14697b62cfccc9c6b24c768b75e2a54548 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 11 Feb 2025 16:40:17 +0000 Subject: [PATCH 81/99] chore: linter --- composer.lock | 14 +++++++------- src/Appwrite/Platform/Workers/StatsResources.php | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index e653783ef5..2fcea6b3e5 100644 --- a/composer.lock +++ b/composer.lock @@ -4607,16 +4607,16 @@ }, { "name": "utopia-php/storage", - "version": "0.18.8", + "version": "0.18.9", "source": { "type": "git", "url": "https://github.com/utopia-php/storage.git", - "reference": "84737afa634e6a833fc4f8b0c967553234d3f215" + "reference": "1cf455404e8700b3093fd73d74a38d41cdced90c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/storage/zipball/84737afa634e6a833fc4f8b0c967553234d3f215", - "reference": "84737afa634e6a833fc4f8b0c967553234d3f215", + "url": "https://api.github.com/repos/utopia-php/storage/zipball/1cf455404e8700b3093fd73d74a38d41cdced90c", + "reference": "1cf455404e8700b3093fd73d74a38d41cdced90c", "shasum": "" }, "require": { @@ -4656,9 +4656,9 @@ ], "support": { "issues": "https://github.com/utopia-php/storage/issues", - "source": "https://github.com/utopia-php/storage/tree/0.18.8" + "source": "https://github.com/utopia-php/storage/tree/0.18.9" }, - "time": "2024-12-04T08:30:35+00:00" + "time": "2025-02-11T13:10:40+00:00" }, { "name": "utopia-php/swoole", @@ -8747,7 +8747,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 11e33417cc..0ab6485953 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -159,7 +159,7 @@ class StatsResources extends Action } catch (Throwable $th) { call_user_func_array($this->logError, [$th, "StatsResources", "count_for_buckets_{$project->getId()}"]); } - + try { $this->countImageTransformations($dbForProject, $dbForLogs, $region); } catch (Throwable $th) { From e394532bcda0de2e6bb3dafacfc03a26f2cda83d Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 12 Feb 2025 17:03:37 +1300 Subject: [PATCH 82/99] Fix drop abuse on shared table project delete --- src/Appwrite/Platform/Workers/Deletes.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index 46ae480684..08c6fc1b72 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -7,6 +7,7 @@ use Appwrite\Certificates\Adapter as CertificatesAdapter; use Appwrite\Extend\Exception; use Executor\Executor; use Throwable; +use Utopia\Abuse\Adapters\TimeLimit\Database as AbuseDatabase; use Utopia\Audit\Audit; use Utopia\Cache\Adapter\Filesystem; use Utopia\Cache\Cache; @@ -505,7 +506,8 @@ class Deletes extends Action $projectCollectionIds = [ ...\array_keys(Config::getParam('collections', [])['projects']), - Audit::COLLECTION + Audit::COLLECTION, + AbuseDatabase::COLLECTION, ]; $limit = \count($projectCollectionIds) + 25; From 00473d47440f6779f7579ec80ccca15941c7d584 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 10:57:43 +0530 Subject: [PATCH 83/99] feat: batch create abuse logs --- .cursorignore | 7 +++ composer.json | 2 +- composer.lock | 18 +++---- src/Appwrite/Platform/Workers/Audits.php | 60 +++++++++++++++++++----- 4 files changed, 65 insertions(+), 22 deletions(-) create mode 100644 .cursorignore diff --git a/.cursorignore b/.cursorignore new file mode 100644 index 0000000000..95ce4247a6 --- /dev/null +++ b/.cursorignore @@ -0,0 +1,7 @@ +docs/* +public/* +vendor/* +dev/* +.vscode/* +app/assets/* +app/sdks/* \ No newline at end of file diff --git a/composer.json b/composer.json index b7c3711410..6e25f5f912 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,7 @@ "appwrite/php-clamav": "2.0.*", "utopia-php/abuse": "0.49.*", "utopia-php/analytics": "0.10.*", - "utopia-php/audit": "0.49.*", + "utopia-php/audit": "dev-add-batch-logging-method", "utopia-php/cache": "0.11.*", "utopia-php/cli": "0.15.*", "utopia-php/config": "0.2.*", diff --git a/composer.lock b/composer.lock index 2fcea6b3e5..e77db78d2f 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": "4a54d0bd5973ed68082970f317664df3", + "content-hash": "9b7ba7990ac224daffbe50b377bacb0a", "packages": [ { "name": "adhocore/jwt", @@ -3474,16 +3474,16 @@ }, { "name": "utopia-php/audit", - "version": "0.49.0", + "version": "dev-add-batch-logging-method", "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "9d5c5e0cf0f6d9157b911fc3971da4331d71c96d" + "reference": "41d87370f1559656c8695d8376d6ac8406c5bd8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/9d5c5e0cf0f6d9157b911fc3971da4331d71c96d", - "reference": "9d5c5e0cf0f6d9157b911fc3971da4331d71c96d", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/41d87370f1559656c8695d8376d6ac8406c5bd8e", + "reference": "41d87370f1559656c8695d8376d6ac8406c5bd8e", "shasum": "" }, "require": { @@ -3515,9 +3515,9 @@ ], "support": { "issues": "https://github.com/utopia-php/audit/issues", - "source": "https://github.com/utopia-php/audit/tree/0.49.0" + "source": "https://github.com/utopia-php/audit/tree/add-batch-logging-method" }, - "time": "2025-02-04T07:27:18+00:00" + "time": "2025-02-12T05:16:50+00:00" }, { "name": "utopia-php/cache", @@ -8747,7 +8747,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": { + "utopia-php/audit": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index c0bcab1c3a..795900f9da 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -15,6 +15,11 @@ use Utopia\Queue\Message; class Audits extends Action { + private const BATCH_SIZE = 5_000; + private const BATCH_TIME_WINDOW = 60; + + private static array $pendingEvents = []; + public static function getName(): string { return 'audits'; @@ -44,7 +49,6 @@ class Audits extends Action */ public function action(Message $message, Database $dbForProject): void { - $payload = $message->getPayload() ?? []; if (empty($payload)) { @@ -63,23 +67,53 @@ class Audits extends Action $userEmail = $user->getAttribute('email', ''); $userType = $user->getAttribute('type', Auth::ACTIVITY_TYPE_USER); - $audit = new Audit($dbForProject); - $audit->log( - userId: $user->getInternalId(), - // Pass first, most verbose event pattern - event: $event, - resource: $resource, - userAgent: $userAgent, - ip: $ip, - location: '', - data: [ + // Create event data + $eventData = [ + 'userId' => $user->getInternalId(), + 'event' => $event, + 'resource' => $resource, + 'userAgent' => $userAgent, + 'ip' => $ip, + 'location' => '', + 'data' => [ 'userId' => $user->getId(), 'userName' => $userName, 'userEmail' => $userEmail, 'userType' => $userType, 'mode' => $mode, 'data' => $auditPayload, - ] - ); + ], + 'timestamp' => time() + ]; + + self::$pendingEvents[] = $eventData; + + // Check if we should process the batch by checking both for the batch size and the elapsed time + $shouldProcessBatch = count(self::$pendingEvents) >= self::BATCH_SIZE; + if (!$shouldProcessBatch && count(self::$pendingEvents) > 0) { + $oldestEventTime = self::$pendingEvents[0]['timestamp']; + $shouldProcessBatch = (time() - $oldestEventTime) >= self::BATCH_TIME_WINDOW; + } + + if ($shouldProcessBatch) { + $audit = new Audit($dbForProject); + $batchEvents = array_map(function($event) { + return [ + 'userId' => $event['userId'], + 'event' => $event['event'], + 'resource' => $event['resource'], + 'userAgent' => $event['userAgent'], + 'ip' => $event['ip'], + 'location' => $event['location'], + 'data' => $event['data'], + 'timestamp' => $event['timestamp'] + ]; + }, self::$pendingEvents); + + $audit->logByBatch($batchEvents); + + // Clear the pending events after successful batch processing + self::$pendingEvents = []; + } } } From df27e8950bfb43fe379ddfc8a15e649582d4afa1 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 11:02:29 +0530 Subject: [PATCH 84/99] feat: update composer --- .cursorignore | 7 ------- composer.json | 2 +- composer.lock | 18 ++++++++---------- src/Appwrite/Platform/Workers/Audits.php | 2 +- 4 files changed, 10 insertions(+), 19 deletions(-) delete mode 100644 .cursorignore diff --git a/.cursorignore b/.cursorignore deleted file mode 100644 index 95ce4247a6..0000000000 --- a/.cursorignore +++ /dev/null @@ -1,7 +0,0 @@ -docs/* -public/* -vendor/* -dev/* -.vscode/* -app/assets/* -app/sdks/* \ No newline at end of file diff --git a/composer.json b/composer.json index 6e25f5f912..58b74c3fe3 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,7 @@ "appwrite/php-clamav": "2.0.*", "utopia-php/abuse": "0.49.*", "utopia-php/analytics": "0.10.*", - "utopia-php/audit": "dev-add-batch-logging-method", + "utopia-php/audit": "0.50.*", "utopia-php/cache": "0.11.*", "utopia-php/cli": "0.15.*", "utopia-php/config": "0.2.*", diff --git a/composer.lock b/composer.lock index e77db78d2f..fd89ba3ae8 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": "9b7ba7990ac224daffbe50b377bacb0a", + "content-hash": "884381b7cc6c225f83c397eb472ddf11", "packages": [ { "name": "adhocore/jwt", @@ -3474,16 +3474,16 @@ }, { "name": "utopia-php/audit", - "version": "dev-add-batch-logging-method", + "version": "0.50.0", "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "41d87370f1559656c8695d8376d6ac8406c5bd8e" + "reference": "c0da7dcdd35fc7d3f9640ba21cc82607cf7da729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/41d87370f1559656c8695d8376d6ac8406c5bd8e", - "reference": "41d87370f1559656c8695d8376d6ac8406c5bd8e", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/c0da7dcdd35fc7d3f9640ba21cc82607cf7da729", + "reference": "c0da7dcdd35fc7d3f9640ba21cc82607cf7da729", "shasum": "" }, "require": { @@ -3515,9 +3515,9 @@ ], "support": { "issues": "https://github.com/utopia-php/audit/issues", - "source": "https://github.com/utopia-php/audit/tree/add-batch-logging-method" + "source": "https://github.com/utopia-php/audit/tree/0.50.0" }, - "time": "2025-02-12T05:16:50+00:00" + "time": "2025-02-12T05:30:25+00:00" }, { "name": "utopia-php/cache", @@ -8747,9 +8747,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "utopia-php/audit": 20 - }, + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index 795900f9da..d7b446ab5d 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -110,7 +110,7 @@ class Audits extends Action ]; }, self::$pendingEvents); - $audit->logByBatch($batchEvents); + $audit->logBatch($batchEvents); // Clear the pending events after successful batch processing self::$pendingEvents = []; From 7f706fce5dd6f962163ec8252487065c2b30dcc6 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 11:09:24 +0530 Subject: [PATCH 85/99] feat: linter & console logs --- src/Appwrite/Platform/Workers/Audits.php | 25 +++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index d7b446ab5d..8848d03645 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -6,6 +6,7 @@ use Appwrite\Auth\Auth; use Exception; use Throwable; use Utopia\Audit\Audit; +use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Exception\Authorization; @@ -18,7 +19,7 @@ class Audits extends Action private const BATCH_SIZE = 5_000; private const BATCH_TIME_WINDOW = 60; - private static array $pendingEvents = []; + private static array $logs = []; public static function getName(): string { @@ -55,6 +56,8 @@ class Audits extends Action throw new Exception('Missing payload'); } + Console::info('Aggregating audit logs'); + $event = $payload['event'] ?? ''; $auditPayload = $payload['payload'] ?? ''; $mode = $payload['mode'] ?? ''; @@ -86,18 +89,20 @@ class Audits extends Action 'timestamp' => time() ]; - self::$pendingEvents[] = $eventData; + self::$logs[] = $eventData; // Check if we should process the batch by checking both for the batch size and the elapsed time - $shouldProcessBatch = count(self::$pendingEvents) >= self::BATCH_SIZE; - if (!$shouldProcessBatch && count(self::$pendingEvents) > 0) { - $oldestEventTime = self::$pendingEvents[0]['timestamp']; + $shouldProcessBatch = count(self::$logs) >= self::BATCH_SIZE; + if (!$shouldProcessBatch && count(self::$logs) > 0) { + $oldestEventTime = self::$logs[0]['timestamp']; $shouldProcessBatch = (time() - $oldestEventTime) >= self::BATCH_TIME_WINDOW; } if ($shouldProcessBatch) { + Console::log('Processing batch with ' . count(self::$logs) . ' events'); + $audit = new Audit($dbForProject); - $batchEvents = array_map(function($event) { + $batchEvents = array_map(function ($event) { return [ 'userId' => $event['userId'], 'event' => $event['event'], @@ -108,12 +113,14 @@ class Audits extends Action 'data' => $event['data'], 'timestamp' => $event['timestamp'] ]; - }, self::$pendingEvents); + }, self::$logs); $audit->logBatch($batchEvents); - + // Clear the pending events after successful batch processing - self::$pendingEvents = []; + self::$logs = []; + + Console::success('Audit logs processed successfully'); } } } From 978284b36fe6934c62993c9736ba7639fbb49e35 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 11:33:17 +0530 Subject: [PATCH 86/99] feat: use smaller batch size on development environments --- src/Appwrite/Platform/Workers/Audits.php | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index 8848d03645..bdd3f942e1 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -8,19 +8,29 @@ use Throwable; use Utopia\Audit\Audit; use Utopia\CLI\Console; use Utopia\Database\Database; +use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Exception\Authorization; use Utopia\Database\Exception\Structure; use Utopia\Platform\Action; use Utopia\Queue\Message; +use Utopia\System\System; class Audits extends Action { - private const BATCH_SIZE = 5_000; - private const BATCH_TIME_WINDOW = 60; + private const BATCH_SIZE_DEVELOPMENT = 1; // smaller batch size for development + private const BATCH_SIZE_PRODUCTION = 5_000; + private const BATCH_AGGREGATION_INTERVAL = 60; private static array $logs = []; + private function getBatchSize(): int + { + return System::getEnv('_APP_ENV', 'development') === 'development' + ? self::BATCH_SIZE_DEVELOPMENT + : self::BATCH_SIZE_PRODUCTION; + } + public static function getName(): string { return 'audits'; @@ -86,16 +96,17 @@ class Audits extends Action 'mode' => $mode, 'data' => $auditPayload, ], - 'timestamp' => time() + 'timestamp' => DateTime::formatTz(DateTime::now()) ]; self::$logs[] = $eventData; // Check if we should process the batch by checking both for the batch size and the elapsed time - $shouldProcessBatch = count(self::$logs) >= self::BATCH_SIZE; + $batchSize = $this->getBatchSize(); + $shouldProcessBatch = count(self::$logs) >= $batchSize; if (!$shouldProcessBatch && count(self::$logs) > 0) { $oldestEventTime = self::$logs[0]['timestamp']; - $shouldProcessBatch = (time() - $oldestEventTime) >= self::BATCH_TIME_WINDOW; + $shouldProcessBatch = (time() - $oldestEventTime) >= self::BATCH_AGGREGATION_INTERVAL; } if ($shouldProcessBatch) { From 48525ce755996a3814e59fc335cf252e3f4131b0 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 11:34:39 +0530 Subject: [PATCH 87/99] chore: linter --- src/Appwrite/Platform/Workers/Audits.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index bdd3f942e1..6c37e3e35f 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -19,15 +19,15 @@ use Utopia\System\System; class Audits extends Action { private const BATCH_SIZE_DEVELOPMENT = 1; // smaller batch size for development - private const BATCH_SIZE_PRODUCTION = 5_000; + private const BATCH_SIZE_PRODUCTION = 5_000; private const BATCH_AGGREGATION_INTERVAL = 60; private static array $logs = []; private function getBatchSize(): int { - return System::getEnv('_APP_ENV', 'development') === 'development' - ? self::BATCH_SIZE_DEVELOPMENT + return System::getEnv('_APP_ENV', 'development') === 'development' + ? self::BATCH_SIZE_DEVELOPMENT : self::BATCH_SIZE_PRODUCTION; } From 294f6818faeb627c0504c258eea9899787e44fbb Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 12:23:20 +0530 Subject: [PATCH 88/99] chore: review comments --- src/Appwrite/Platform/Workers/Audits.php | 27 ++++++++---------------- 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index 6c37e3e35f..47be7a868b 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -113,25 +113,16 @@ class Audits extends Action Console::log('Processing batch with ' . count(self::$logs) . ' events'); $audit = new Audit($dbForProject); - $batchEvents = array_map(function ($event) { - return [ - 'userId' => $event['userId'], - 'event' => $event['event'], - 'resource' => $event['resource'], - 'userAgent' => $event['userAgent'], - 'ip' => $event['ip'], - 'location' => $event['location'], - 'data' => $event['data'], - 'timestamp' => $event['timestamp'] - ]; - }, self::$logs); - $audit->logBatch($batchEvents); - - // Clear the pending events after successful batch processing - self::$logs = []; - - Console::success('Audit logs processed successfully'); + try { + $audit->logBatch(self::$logs); + Console::success('Audit logs processed successfully'); + } catch (Throwable $e) { + Console::error('Error processing audit logs: ' . $e->getMessage()); + } finally { + // Clear the pending events after successful batch processing + self::$logs = []; + } } } } From 2dffcb29b09dc628716e22c229c525af992564ef Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 13:09:31 +0530 Subject: [PATCH 89/99] chore: add comment about the unit --- src/Appwrite/Platform/Workers/Audits.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index 47be7a868b..01eac10502 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -20,7 +20,7 @@ class Audits extends Action { private const BATCH_SIZE_DEVELOPMENT = 1; // smaller batch size for development private const BATCH_SIZE_PRODUCTION = 5_000; - private const BATCH_AGGREGATION_INTERVAL = 60; + private const BATCH_AGGREGATION_INTERVAL = 60; // in seconds private static array $logs = []; From d2cc5ea932a78a55c86e07c8f3886f94e0b46569 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 12 Feb 2025 10:58:51 +0000 Subject: [PATCH 90/99] Fix: missing periodic metric --- src/Appwrite/Platform/Workers/StatsResources.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 0ab6485953..639e90a867 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -252,6 +252,8 @@ class StatsResources extends Action }); $this->createStatsDocuments($region, METRIC_FILES_IMAGES_TRANSFORMED, $totalImageTransformations, 'inf'); + $this->createStatsDocuments($region, METRIC_FILES_IMAGES_TRANSFORMED, $totalDailyImageTransformations, '1d'); + $this->createStatsDocuments($region, METRIC_FILES_IMAGES_TRANSFORMED, $totalHourlyImageTransformations, '1h'); } From 9989137ed463fe32f9fe49aae2261bf386a055f3 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 22:01:28 +0530 Subject: [PATCH 91/99] chore: use private variables for aggregation --- package.json | 8 -------- src/Appwrite/Platform/Workers/Audits.php | 23 +++++++++++++---------- 2 files changed, 13 insertions(+), 18 deletions(-) delete mode 100644 package.json diff --git a/package.json b/package.json deleted file mode 100644 index 6e32c7d515..0000000000 --- a/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "private": true, - "name": "@appwrite.io/repo", - "repository": { - "type": "git", - "url": "git+https://github.com/appwrite/appwrite.git" - } -} \ No newline at end of file diff --git a/src/Appwrite/Platform/Workers/Audits.php b/src/Appwrite/Platform/Workers/Audits.php index 01eac10502..f1ae46eea7 100644 --- a/src/Appwrite/Platform/Workers/Audits.php +++ b/src/Appwrite/Platform/Workers/Audits.php @@ -22,7 +22,9 @@ class Audits extends Action private const BATCH_SIZE_PRODUCTION = 5_000; private const BATCH_AGGREGATION_INTERVAL = 60; // in seconds - private static array $logs = []; + private int $lastTriggeredTime = 0; + + private array $logs = []; private function getBatchSize(): int { @@ -46,6 +48,8 @@ class Audits extends Action ->inject('message') ->inject('dbForProject') ->callback(fn ($message, $dbForProject) => $this->action($message, $dbForProject)); + + $this->lastTriggeredTime = time(); } @@ -99,29 +103,28 @@ class Audits extends Action 'timestamp' => DateTime::formatTz(DateTime::now()) ]; - self::$logs[] = $eventData; + $this->logs[] = $eventData; // Check if we should process the batch by checking both for the batch size and the elapsed time $batchSize = $this->getBatchSize(); - $shouldProcessBatch = count(self::$logs) >= $batchSize; - if (!$shouldProcessBatch && count(self::$logs) > 0) { - $oldestEventTime = self::$logs[0]['timestamp']; - $shouldProcessBatch = (time() - $oldestEventTime) >= self::BATCH_AGGREGATION_INTERVAL; + $shouldProcessBatch = count($this->logs) >= $batchSize; + if (!$shouldProcessBatch && count($this->logs) > 0) { + $shouldProcessBatch = (time() - $this->lastTriggeredTime) >= self::BATCH_AGGREGATION_INTERVAL; } if ($shouldProcessBatch) { - Console::log('Processing batch with ' . count(self::$logs) . ' events'); - + Console::log('Processing batch with ' . count($this->logs) . ' events'); $audit = new Audit($dbForProject); try { - $audit->logBatch(self::$logs); + $audit->logBatch($this->logs); Console::success('Audit logs processed successfully'); } catch (Throwable $e) { Console::error('Error processing audit logs: ' . $e->getMessage()); } finally { // Clear the pending events after successful batch processing - self::$logs = []; + $this->logs = []; + $this->lastTriggeredTime = time(); } } } From a0482aca7a44d5c0adad03e6d47dbb49e551873e Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Wed, 12 Feb 2025 22:04:46 +0530 Subject: [PATCH 92/99] chore: revert package.json --- package.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000000..6e32c7d515 --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "private": true, + "name": "@appwrite.io/repo", + "repository": { + "type": "git", + "url": "git+https://github.com/appwrite/appwrite.git" + } +} \ No newline at end of file From d4599e68849b08345da2c670ce56ccbfd8081af0 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 13 Feb 2025 06:43:49 +0000 Subject: [PATCH 93/99] Fix, time was not being written to DB --- src/Appwrite/Platform/Workers/StatsResources.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Workers/StatsResources.php b/src/Appwrite/Platform/Workers/StatsResources.php index 639e90a867..f5e3d26b2a 100644 --- a/src/Appwrite/Platform/Workers/StatsResources.php +++ b/src/Appwrite/Platform/Workers/StatsResources.php @@ -354,10 +354,11 @@ class StatsResources extends Action 'period' => $period, 'region' => $region, 'value' => $value, + 'time' => $time, ]); } } else { - $time = 'inf' === $period ? null : \date($this->periods[$period], \time()); + $time = $period === 'inf' ? null : \date($this->periods[$period], \time()); $id = \md5("{$time}_{$period}_{$metric}"); $this->documents[] = new Document([ '$id' => $id, @@ -365,6 +366,7 @@ class StatsResources extends Action 'period' => $period, 'region' => $region, 'value' => $value, + 'time' => $time, ]); } } From 43d8374c5c39ce2ca58b5d6158d4430733b28d3f Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 13 Feb 2025 16:57:32 +0900 Subject: [PATCH 94/99] Update migrations --- composer.json | 6 ++--- composer.lock | 68 +++++++++++++++++++++++++-------------------------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/composer.json b/composer.json index 58b74c3fe3..b28eec6964 100644 --- a/composer.json +++ b/composer.json @@ -45,13 +45,13 @@ "ext-sockets": "*", "appwrite/php-runtimes": "0.16.*", "appwrite/php-clamav": "2.0.*", - "utopia-php/abuse": "0.49.*", + "utopia-php/abuse": "0.50.*", "utopia-php/analytics": "0.10.*", - "utopia-php/audit": "0.50.*", + "utopia-php/audit": "0.51.*", "utopia-php/cache": "0.11.*", "utopia-php/cli": "0.15.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "0.58.5", + "utopia-php/database": "0.59.0", "utopia-php/domains": "0.5.*", "utopia-php/dsn": "0.2.1", "utopia-php/framework": "0.33.*", diff --git a/composer.lock b/composer.lock index fd89ba3ae8..152a7bd0d1 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": "884381b7cc6c225f83c397eb472ddf11", + "content-hash": "ed36bf1392e79d1b1bb07fb2a81f03bf", "packages": [ { "name": "adhocore/jwt", @@ -3377,16 +3377,16 @@ }, { "name": "utopia-php/abuse", - "version": "0.49.0", + "version": "0.50.0", "source": { "type": "git", "url": "https://github.com/utopia-php/abuse.git", - "reference": "76612c274b895aa3d4d1fa27557a6402463eea99" + "reference": "3ff67819e9de61506c5ca070a70552f7ebe99f80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/abuse/zipball/76612c274b895aa3d4d1fa27557a6402463eea99", - "reference": "76612c274b895aa3d4d1fa27557a6402463eea99", + "url": "https://api.github.com/repos/utopia-php/abuse/zipball/3ff67819e9de61506c5ca070a70552f7ebe99f80", + "reference": "3ff67819e9de61506c5ca070a70552f7ebe99f80", "shasum": "" }, "require": { @@ -3394,7 +3394,7 @@ "ext-pdo": "*", "ext-redis": "*", "php": ">=8.0", - "utopia-php/database": "0.58.*" + "utopia-php/database": "0.59.*" }, "require-dev": { "laravel/pint": "1.*", @@ -3422,9 +3422,9 @@ ], "support": { "issues": "https://github.com/utopia-php/abuse/issues", - "source": "https://github.com/utopia-php/abuse/tree/0.49.0" + "source": "https://github.com/utopia-php/abuse/tree/0.50.0" }, - "time": "2025-02-04T07:33:59+00:00" + "time": "2025-02-12T09:13:59+00:00" }, { "name": "utopia-php/analytics", @@ -3474,21 +3474,21 @@ }, { "name": "utopia-php/audit", - "version": "0.50.0", + "version": "0.51.0", "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "c0da7dcdd35fc7d3f9640ba21cc82607cf7da729" + "reference": "a5a4b73a57e27a0fac8025b1d6038e145a1ca04e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/c0da7dcdd35fc7d3f9640ba21cc82607cf7da729", - "reference": "c0da7dcdd35fc7d3f9640ba21cc82607cf7da729", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/a5a4b73a57e27a0fac8025b1d6038e145a1ca04e", + "reference": "a5a4b73a57e27a0fac8025b1d6038e145a1ca04e", "shasum": "" }, "require": { "php": ">=8.0", - "utopia-php/database": "0.58.*" + "utopia-php/database": "0.59.*" }, "require-dev": { "laravel/pint": "1.*", @@ -3515,9 +3515,9 @@ ], "support": { "issues": "https://github.com/utopia-php/audit/issues", - "source": "https://github.com/utopia-php/audit/tree/0.50.0" + "source": "https://github.com/utopia-php/audit/tree/0.51.0" }, - "time": "2025-02-12T05:30:25+00:00" + "time": "2025-02-12T09:12:44+00:00" }, { "name": "utopia-php/cache", @@ -3717,16 +3717,16 @@ }, { "name": "utopia-php/database", - "version": "0.58.5", + "version": "0.59.0", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "55308014c697639c6cb270cb5a33cc88fc1ef839" + "reference": "0eed7f1ad3eb66ff4a7d73b68dd9d3e05089eb18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/55308014c697639c6cb270cb5a33cc88fc1ef839", - "reference": "55308014c697639c6cb270cb5a33cc88fc1ef839", + "url": "https://api.github.com/repos/utopia-php/database/zipball/0eed7f1ad3eb66ff4a7d73b68dd9d3e05089eb18", + "reference": "0eed7f1ad3eb66ff4a7d73b68dd9d3e05089eb18", "shasum": "" }, "require": { @@ -3767,9 +3767,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.58.5" + "source": "https://github.com/utopia-php/database/tree/0.59.0" }, - "time": "2025-02-10T08:26:52+00:00" + "time": "2025-02-12T08:08:29+00:00" }, { "name": "utopia-php/domains", @@ -4170,16 +4170,16 @@ }, { "name": "utopia-php/migration", - "version": "0.6.17", + "version": "0.6.19", "source": { "type": "git", "url": "https://github.com/utopia-php/migration.git", - "reference": "677a5c4688d7f54d1631a91f76a35d51346cf96b" + "reference": "3c9497f7a54ef88b1077c48d8326893133ad78eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/migration/zipball/677a5c4688d7f54d1631a91f76a35d51346cf96b", - "reference": "677a5c4688d7f54d1631a91f76a35d51346cf96b", + "url": "https://api.github.com/repos/utopia-php/migration/zipball/3c9497f7a54ef88b1077c48d8326893133ad78eb", + "reference": "3c9497f7a54ef88b1077c48d8326893133ad78eb", "shasum": "" }, "require": { @@ -4187,7 +4187,7 @@ "ext-curl": "*", "ext-openssl": "*", "php": ">=8.1", - "utopia-php/database": "0.58.*", + "utopia-php/database": "0.59.*", "utopia-php/dsn": "0.2.*", "utopia-php/framework": "0.33.*", "utopia-php/storage": "0.18.*" @@ -4220,9 +4220,9 @@ ], "support": { "issues": "https://github.com/utopia-php/migration/issues", - "source": "https://github.com/utopia-php/migration/tree/0.6.17" + "source": "https://github.com/utopia-php/migration/tree/0.6.19" }, - "time": "2025-02-05T05:27:29+00:00" + "time": "2025-02-13T07:50:21+00:00" }, { "name": "utopia-php/mongo", @@ -5560,16 +5560,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -5608,7 +5608,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -5616,7 +5616,7 @@ "type": "tidelift" } ], - "time": "2024-11-08T17:47:46+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "nikic/php-parser", From 6abf8ce7274a3f40a818deb71b157a5b26f97104 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 13 Feb 2025 10:44:27 +0200 Subject: [PATCH 95/99] Fix index length test --- tests/e2e/Services/Databases/DatabasesBase.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 3321a786a7..c9e0a59b80 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -463,7 +463,16 @@ trait DatabasesBase ]); $this->assertEquals(400, $attribute['headers']['status-code']); - $this->assertEquals('Index length is longer than the maximum: 768', $attribute['body']['message']); + + $this->assertTrue( + in_array( + [ + 'Index length is longer than the maximum: 767', + 'Index length is longer than the maximum: 768' + ], + $attribute['body']['message'] + ) + ); } public function testUpdateAttributeEnum(): void From e8a306253b53cf2db27b65ba8c50da6e9777f6f2 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 13 Feb 2025 11:22:40 +0200 Subject: [PATCH 96/99] Fix test --- tests/e2e/Services/Databases/DatabasesBase.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index c9e0a59b80..9c8d3db9de 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -466,11 +466,11 @@ trait DatabasesBase $this->assertTrue( in_array( + $attribute['body']['message'], [ 'Index length is longer than the maximum: 767', 'Index length is longer than the maximum: 768' - ], - $attribute['body']['message'] + ] ) ); } From 8f212ccd30344078d2daaceb7f5d06011034e501 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 13 Feb 2025 11:24:13 +0200 Subject: [PATCH 97/99] in_array --- tests/e2e/Services/Databases/DatabasesBase.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 9c8d3db9de..82888dc959 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -466,13 +466,11 @@ trait DatabasesBase $this->assertTrue( in_array( - $attribute['body']['message'], - [ + $attribute['body']['message'], [ 'Index length is longer than the maximum: 767', 'Index length is longer than the maximum: 768' ] - ) - ); + )); } public function testUpdateAttributeEnum(): void From 8778e2e6667ecc90edc22b6d3864b2e776299b33 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 13 Feb 2025 11:35:16 +0200 Subject: [PATCH 98/99] lint --- tests/e2e/Services/Databases/DatabasesBase.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 82888dc959..9c8d3db9de 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -466,11 +466,13 @@ trait DatabasesBase $this->assertTrue( in_array( - $attribute['body']['message'], [ + $attribute['body']['message'], + [ 'Index length is longer than the maximum: 767', 'Index length is longer than the maximum: 768' ] - )); + ) + ); } public function testUpdateAttributeEnum(): void From e4ae0d463d3b11ba96a7feb02449bc0488f776b2 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 13 Feb 2025 11:37:12 +0200 Subject: [PATCH 99/99] assertStringContainsString --- tests/e2e/Services/Databases/DatabasesBase.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 9c8d3db9de..0723f4d5bf 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -463,16 +463,7 @@ trait DatabasesBase ]); $this->assertEquals(400, $attribute['headers']['status-code']); - - $this->assertTrue( - in_array( - $attribute['body']['message'], - [ - 'Index length is longer than the maximum: 767', - 'Index length is longer than the maximum: 768' - ] - ) - ); + $this->assertStringContainsString('Index length is longer than the maximum: 76', $attribute['body']['message']); } public function testUpdateAttributeEnum(): void