From 44234da9950daebcad557dffab151332685867e4 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 11 Nov 2024 15:27:26 +0900 Subject: [PATCH 01/11] Implement Bulk Updates API --- app/controllers/api/databases.php | 117 +++++++ composer.json | 2 +- composer.lock | 14 +- docs/references/databases/update-documents.md | 1 + .../e2e/Services/Databases/DatabasesBase.php | 164 ++++++++++ .../Databases/DatabasesCustomClientTest.php | 285 ++++++++++++++++++ 6 files changed, 575 insertions(+), 8 deletions(-) create mode 100644 docs/references/databases/update-documents.md diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 0114fd343c..5c3baf3b63 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3688,6 +3688,123 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum ->setPayload($response->getPayload(), sensitive: $relationships); }); +App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') + ->alias('/v1/database/collections/:collectionId/documents') + ->desc('Update documents') + ->groups(['api', 'database']) + ->label('event', 'databases.[databaseId].collections.[collectionId].documents.update') + ->label('scope', 'documents.write') + ->label('resourceType', RESOURCE_TYPE_DATABASES) + ->label('audits.event', 'documents.update') + ->label('audits.resource', 'database/{request.databaseId}/collection/{request.collectionId}/document/{response.$id}') + ->label('abuse-key', 'ip:{ip},method:{method},url:{url},userId:{userId}') + ->label('abuse-limit', APP_LIMIT_WRITE_RATE_DEFAULT * 2) + ->label('abuse-time', APP_LIMIT_WRITE_RATE_PERIOD_DEFAULT) + ->label('sdk.auth', [APP_AUTH_TYPE_SESSION, APP_AUTH_TYPE_KEY, APP_AUTH_TYPE_JWT]) + ->label('sdk.namespace', 'databases') + ->label('sdk.method', 'updateDocuments') + ->label('sdk.description', '/docs/references/databases/update-documents.md') + ->label('sdk.response.code', Response::STATUS_CODE_OK) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_DOCUMENT_LIST) + ->label('sdk.offline.model', '/databases/{databaseId}/collections/{collectionId}/documents') + ->param('databaseId', '', new UID(), 'Database ID.') + ->param('collectionId', '', new UID(), 'Collection ID.') + ->param('data', [], new JSON(), 'Document data as JSON object. Include only attribute and value pairs to be updated.', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).', true) + ->param('queries', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) + ->inject('requestTimestamp') + ->inject('response') + ->inject('dbForProject') + ->inject('queueForEvents') + ->inject('mode') + ->action(function (string $databaseId, string $collectionId, string|array $data, ?array $permissions, array $queries, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, string $mode) { + $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array + + if (empty($data) && \is_null($permissions)) { + throw new Exception(Exception::DOCUMENT_MISSING_PAYLOAD); + } + + $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); + + $isAPIKey = Auth::isAppUser(Authorization::getRoles()); + $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); + + if ($database->isEmpty() || (!$database->getAttribute('enabled', false) && !$isAPIKey && !$isPrivilegedUser)) { + throw new Exception(Exception::DATABASE_NOT_FOUND); + } + + $collection = Authorization::skip(fn () => $dbForProject->getDocument('database_' . $database->getInternalId(), $collectionId)); + + if ($collection->isEmpty() || (!$collection->getAttribute('enabled', false) && !$isAPIKey && !$isPrivilegedUser)) { + throw new Exception(Exception::COLLECTION_NOT_FOUND); + } + + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + + // Map aggregate permissions into the multiple permissions they represent. + $permissions = Permission::aggregate($permissions, [ + Database::PERMISSION_READ, + Database::PERMISSION_UPDATE, + Database::PERMISSION_DELETE, + ]); + + // Users can only manage their own roles, API keys and Admin users can manage any + $roles = Authorization::getRoles(); + if (!$isAPIKey && !$isPrivilegedUser && !\is_null($permissions)) { + foreach (Database::PERMISSIONS as $type) { + foreach ($permissions as $permission) { + $permission = Permission::parse($permission); + if ($permission->getPermission() != $type) { + continue; + } + $role = (new Role( + $permission->getRole(), + $permission->getIdentifier(), + $permission->getDimension() + ))->toString(); + if (!Authorization::isRole($role)) { + throw new Exception(Exception::USER_UNAUTHORIZED, 'Permissions must be one of: (' . \implode(', ', $roles) . ')'); + } + } + } + } + + $partialDocument = new Document($data); + + try { + $modified = $dbForProject->withRequestTimestamp( + $requestTimestamp, + fn () => $dbForProject->updateDocuments( + 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), + $partialDocument, + $queries + ) + ); + } catch (AuthorizationException) { + throw new Exception(Exception::USER_UNAUTHORIZED); + } catch (StructureException $e) { + throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, $e->getMessage()); + } catch (NotFoundException $e) { + throw new Exception(Exception::COLLECTION_NOT_FOUND); + } + + $response->dynamic(new Document([ + 'modified' => $modified + ]), Response::MODEL_BULK_OPERATION); + + $queueForEvents + ->setParam('databaseId', $databaseId) + ->setParam('collectionId', $collection->getId()) + ->setContext('collection', $collection) + ->setContext('database', $database) + ->setPayload($response->getPayload()); + }); + App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:documentId') ->alias('/v1/database/collections/:collectionId/documents/:documentId', ['databaseId' => 'default']) ->desc('Delete document') diff --git a/composer.json b/composer.json index a04ca51d43..237e2e9562 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.53.16", + "utopia-php/database": "0.53.17", "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 691a7e740e..5a61332b2a 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": "b358198535c1867eabed7c0f99135a57", + "content-hash": "971e88c7387ffd92d755772e0f4e7805", "packages": [ { "name": "adhocore/jwt", @@ -1770,16 +1770,16 @@ }, { "name": "utopia-php/database", - "version": "0.53.16", + "version": "0.53.17", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "6661edffeef05b59e16d102b989a72f7f78cf7de" + "reference": "07e3e5a1f5dbf9b351aab138085bde06611b305a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/6661edffeef05b59e16d102b989a72f7f78cf7de", - "reference": "6661edffeef05b59e16d102b989a72f7f78cf7de", + "url": "https://api.github.com/repos/utopia-php/database/zipball/07e3e5a1f5dbf9b351aab138085bde06611b305a", + "reference": "07e3e5a1f5dbf9b351aab138085bde06611b305a", "shasum": "" }, "require": { @@ -1820,9 +1820,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.53.16" + "source": "https://github.com/utopia-php/database/tree/0.53.17" }, - "time": "2024-11-06T03:07:16+00:00" + "time": "2024-11-06T09:20:59+00:00" }, { "name": "utopia-php/domains", diff --git a/docs/references/databases/update-documents.md b/docs/references/databases/update-documents.md new file mode 100644 index 0000000000..f04ec420f8 --- /dev/null +++ b/docs/references/databases/update-documents.md @@ -0,0 +1 @@ +Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated. \ No newline at end of file diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index d079cb313c..6cb162e8f1 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -4799,4 +4799,168 @@ trait DatabasesBase $this->assertEquals(408, $response['headers']['status-code']); } + + public function testBulkUpdates(): void + { + // Create database + $database = $this->client->call(Client::METHOD_POST, '/databases', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ], [ + 'databaseId' => ID::unique(), + 'name' => 'Bulk Updates' + ]); + + $this->assertNotEmpty($database['body']['$id']); + + $databaseId = $database['body']['$id']; + + $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' => 'Bulk Updates', + 'documentSecurity' => true, + 'permissions' => [ + Permission::create(Role::any()), + Permission::read(Role::any()), + Permission::delete(Role::any()), + Permission::update(Role::any()), + ], + ]); + + $this->assertEquals(201, $collection['headers']['status-code']); + + $data = [ + '$id' => $collection['body']['$id'], + 'databaseId' => $collection['body']['databaseId'] + ]; + + // Await attribute + $numberAttribute = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['$id'] . '/attributes/integer', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'number', + 'required' => true, + ]); + + $this->assertEquals(202, $numberAttribute['headers']['status-code']); + + // wait for database worker to create attributes + sleep(2); + + // Create documents + $createBulkDocuments = function ($amount = 10) use ($data) { + for ($x = 1; $x <= $amount; $x++) { + $doc = $this->client->call(Client::METHOD_POST, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'number' => $x, + ], + ]); + + $this->assertEquals(201, $doc['headers']['status-code']); + } + }; + + $createBulkDocuments(); + + // TEST: Update all documents + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 100 + ], + 'permissions' => [ + Permission::read(Role::user($this->getUser()['$id'])), + Permission::update(Role::user($this->getUser()['$id'])), + Permission::delete(Role::user($this->getUser()['$id'])), + ] + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(10, $response['body']['modified']); + + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + Query::equal('number', [100])->toString(), + ]); + + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertEquals(10, $documents['body']['total']); + + if ($this->getSide() === 'client') { + foreach ($documents['body']['documents'] as $document) { + $this->assertEquals([ + Permission::read(Role::user($this->getUser()['$id'])), + Permission::update(Role::user($this->getUser()['$id'])), + Permission::delete(Role::user($this->getUser()['$id'])), + ], $document['$permissions']); + } + } + + // TEST: Update documents with query + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 200 + ], + 'queries' => [ + Query::limit(5)->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(5, $response['body']['modified']); + + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [Query::equal('number', [200])->toString()] + ]); + + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertEquals(5, $documents['body']['total']); + + // TEST: Update documents with offset + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 200 + ], + 'queries' => [ + Query::offset(5)->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(5, $response['body']['modified']); + + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [Query::equal('number', [200])->toString()] + ]); + + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertEquals(10, $documents['body']['total']); + } } diff --git a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php index 8484996058..934ba92a3e 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php @@ -10,6 +10,7 @@ use Utopia\Database\Database; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Query; class DatabasesCustomClientTest extends Scope { @@ -890,4 +891,288 @@ class DatabasesCustomClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); } + + public function testBulkUpdatesPermissions(): void + { + // Create database + $database = $this->client->call(Client::METHOD_POST, '/databases', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ], [ + 'databaseId' => ID::unique(), + 'name' => 'Bulk Update Perms' + ]); + + $this->assertNotEmpty($database['body']['$id']); + + $databaseId = $database['body']['$id']; + + $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' => 'Bulk Updates Perms', + 'documentSecurity' => false, + 'permissions' => [ + Permission::create(Role::user($this->getUser()['$id'])) + ], + ]); + + $this->assertEquals(201, $collection['headers']['status-code']); + + $data = [ + '$id' => $collection['body']['$id'], + 'databaseId' => $collection['body']['databaseId'] + ]; + + $numberAttribute = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $data['$id'] . '/attributes/integer', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'number', + 'required' => true, + ]); + + $this->assertEquals(202, $numberAttribute['headers']['status-code']); + + sleep(2); + + // TEST: Update all documents with invalid collection level permissions + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 100 + ] + ]); + + $this->assertEquals(401, $response['headers']['status-code']); + + $collection = $this->client->call(Client::METHOD_PUT, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'name' => 'Bulk Updates Perms', + 'documentSecurity' => true + ]); + + $this->assertEquals(200, $collection['headers']['status-code']); + + // TEST: Make sure we can update only documents we have permissions for + for ($i = 0; $i < 6; $i++) { + $doc = $this->client->call(Client::METHOD_POST, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'number' => $i, + ], + 'permissions' => [ + Permission::update(Role::user($this->getUser()['$id'])) + ] + ]); + + $this->assertEquals(201, $doc['headers']['status-code']); + } + + $doc = $this->client->call(Client::METHOD_POST, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ], [ + 'documentId' => ID::unique(), + 'data' => [ + 'number' => 6, + ], + 'permissions' => [ + Permission::update(Role::user('user2')) + ] + ]); + + $this->assertEquals(201, $doc['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 100 + ] + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(6, $response['body']['modified']); + + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'queries' => [Query::notEqual('number', 100)->toString()] + ]); + + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertEquals(1, $documents['body']['total']); + } + + public function testBulkUpdatesRelationship() + { + $database = $this->client->call(Client::METHOD_POST, '/databases', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ], [ + 'databaseId' => ID::unique(), + 'name' => 'Bulk Updates' + ]); + + $this->assertNotEmpty($database['body']['$id']); + + $databaseId = $database['body']['$id']; + + $collection1 = $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' => 'Collection1', + 'documentSecurity' => false, + 'permissions' => [ + Permission::create(Role::any()), + Permission::read(Role::any()), + Permission::delete(Role::any()), + Permission::update(Role::any()), + ], + ]); + + $this->assertEquals(201, $collection1['headers']['status-code']); + + $collection2 = $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' => 'Collection2', + 'documentSecurity' => false, + 'permissions' => [ + Permission::create(Role::any()), + Permission::read(Role::any()), + Permission::delete(Role::any()), + Permission::update(Role::any()), + ], + ]); + + $this->assertEquals(201, $collection1['headers']['status-code']); + + $collection1 = $collection1['body']['$id']; + $collection2 = $collection2['body']['$id']; + + $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collection1 . '/attributes/relationship', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'relatedCollectionId' => $collection2, + 'type' => Database::RELATION_ONE_TO_MANY, + 'key' => 'collection2', + 'onDelete' => Database::RELATION_MUTATE_RESTRICT, + 'twoWay' => true, + 'twoWayKey' => 'collection1', + ]); + + $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collection1 . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'name', + 'size' => 256, + 'required' => true, + ]); + + $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collection2 . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'name', + 'size' => 256, + 'required' => true, + ]); + + sleep(3); + + $document1 = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collection1 . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'] + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'name' => 'Document 1', + 'collection2' => [ + [ + 'name' => 'Document 2', + ], + ], + ], + ]); + + $this->assertEquals(201, $document1['headers']['status-code']); + $document1 = $document1['body']['$id']; + + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $databaseId . '/collections/' . $collection1 . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'] + ], $this->getHeaders()), [ + 'data' => [ + 'name' => 'Document 1 Updated', + ] + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(1, $response['body']['modified']); + + $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collection2 . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'] + ], $this->getHeaders())); + + $this->assertEquals(200, $response['headers']['status-code']); + + $document2 = $response['body']['documents'][0]; + + $this->assertEquals('Document 2', $document2['name']); + $this->assertEquals('Document 1 Updated', $document2['collection1']['name']); + + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $databaseId . '/collections/' . $collection2 . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'] + ], $this->getHeaders()), [ + 'data' => [ + 'name' => 'Document 2 Updated', + ] + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + + $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collection1 . '/documents/' . $document1, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'] + ], $this->getHeaders())); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals('Document 1 Updated', $response['body']['name']); + + $document2 = $response['body']['collection2'][0]; + $this->assertEquals('Document 2 Updated', $document2['name']); + } } From 07738bdcf9010c0ce33df888bbe02fb95b7a2e51 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 11 Nov 2024 15:29:59 +0900 Subject: [PATCH 02/11] Update Specs --- app/config/specs/open-api3-latest-client.json | 180 ++++- .../specs/open-api3-latest-console.json | 656 ++++++++++-------- app/config/specs/open-api3-latest-server.json | 452 +++++++----- app/config/specs/swagger2-latest-client.json | 179 ++++- app/config/specs/swagger2-latest-console.json | 655 +++++++++-------- app/config/specs/swagger2-latest-server.json | 451 +++++++----- 6 files changed, 1605 insertions(+), 968 deletions(-) diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index e3cd909b4e..aaf713b5c5 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -4637,6 +4637,112 @@ } } } + }, + "patch": { + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", + "tags": [ + "databases" + ], + "description": "Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated.", + "responses": { + "200": { + "description": "Documents List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/documentList" + } + } + } + } + }, + "x-appwrite": { + "method": "updateDocuments", + "weight": 113, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "databases\/update-documents.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "server" + ], + "packaging": false, + "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", + "offline-key": "", + "offline-response-key": "$id", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "x-example": "{}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + } + } } }, "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { @@ -4859,7 +4965,7 @@ }, "x-appwrite": { "method": "deleteDocument", - "weight": 113, + "weight": 114, "cookies": false, "type": "", "deprecated": false, @@ -4945,7 +5051,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5033,7 +5139,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5150,7 +5256,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -5226,7 +5332,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 332, "cookies": false, "type": "graphql", "deprecated": false, @@ -5280,7 +5386,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5334,7 +5440,7 @@ }, "x-appwrite": { "method": "get", - "weight": 117, + "weight": 118, "cookies": false, "type": "", "deprecated": false, @@ -5388,7 +5494,7 @@ }, "x-appwrite": { "method": "listCodes", - "weight": 118, + "weight": 119, "cookies": false, "type": "", "deprecated": false, @@ -5442,7 +5548,7 @@ }, "x-appwrite": { "method": "listContinents", - "weight": 122, + "weight": 123, "cookies": false, "type": "", "deprecated": false, @@ -5496,7 +5602,7 @@ }, "x-appwrite": { "method": "listCountries", - "weight": 119, + "weight": 120, "cookies": false, "type": "", "deprecated": false, @@ -5550,7 +5656,7 @@ }, "x-appwrite": { "method": "listCountriesEU", - "weight": 120, + "weight": 121, "cookies": false, "type": "", "deprecated": false, @@ -5604,7 +5710,7 @@ }, "x-appwrite": { "method": "listCountriesPhones", - "weight": 121, + "weight": 122, "cookies": false, "type": "", "deprecated": false, @@ -5658,7 +5764,7 @@ }, "x-appwrite": { "method": "listCurrencies", - "weight": 123, + "weight": 124, "cookies": false, "type": "", "deprecated": false, @@ -5712,7 +5818,7 @@ }, "x-appwrite": { "method": "listLanguages", - "weight": 124, + "weight": 125, "cookies": false, "type": "", "deprecated": false, @@ -5766,7 +5872,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -5851,7 +5957,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -5928,7 +6034,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -6016,7 +6122,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 208, "cookies": false, "type": "upload", "deprecated": false, @@ -6116,7 +6222,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 210, "cookies": false, "type": "", "deprecated": false, @@ -6190,7 +6296,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6281,7 +6387,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -6350,7 +6456,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6419,7 +6525,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6637,7 +6743,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 213, "cookies": false, "type": "location", "deprecated": false, @@ -6713,7 +6819,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6791,7 +6897,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -6878,7 +6984,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -6942,7 +7048,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -7018,7 +7124,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7084,7 +7190,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7172,7 +7278,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7285,7 +7391,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7359,7 +7465,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7448,7 +7554,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -7524,7 +7630,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7624,7 +7730,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -7687,7 +7793,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 224, "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 4e97fecc30..87a9b7ac7f 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -4465,7 +4465,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -4534,7 +4534,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4740,7 +4740,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 114, + "weight": 115, "cookies": false, "type": "", "deprecated": false, @@ -8206,6 +8206,112 @@ } } } + }, + "patch": { + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", + "tags": [ + "databases" + ], + "description": "Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated.", + "responses": { + "200": { + "description": "Documents List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/documentList" + } + } + } + } + }, + "x-appwrite": { + "method": "updateDocuments", + "weight": 113, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "databases\/update-documents.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "server" + ], + "packaging": false, + "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", + "offline-key": "", + "offline-response-key": "$id", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "x-example": "{}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + } + } } }, "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { @@ -8428,7 +8534,7 @@ }, "x-appwrite": { "method": "deleteDocument", - "weight": 113, + "weight": 114, "cookies": false, "type": "", "deprecated": false, @@ -9055,7 +9161,7 @@ }, "x-appwrite": { "method": "getCollectionUsage", - "weight": 116, + "weight": 117, "cookies": false, "type": "", "deprecated": false, @@ -9224,7 +9330,7 @@ }, "x-appwrite": { "method": "getDatabaseUsage", - "weight": 115, + "weight": 116, "cookies": false, "type": "", "deprecated": false, @@ -9308,7 +9414,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9383,7 +9489,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9631,7 +9737,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9682,7 +9788,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9734,7 +9840,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9836,7 +9942,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -9898,7 +10004,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -9972,7 +10078,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -10033,7 +10139,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -10258,7 +10364,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -10321,7 +10427,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10406,7 +10512,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 300, "cookies": false, "type": "upload", "deprecated": false, @@ -10504,7 +10610,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10575,7 +10681,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -10639,7 +10745,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10705,7 +10811,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10792,7 +10898,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -10858,7 +10964,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 297, "cookies": false, "type": "location", "deprecated": false, @@ -10933,7 +11039,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11021,7 +11127,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -11138,7 +11244,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11205,7 +11311,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11278,7 +11384,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -11362,7 +11468,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11423,7 +11529,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11511,7 +11617,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11582,7 +11688,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11670,7 +11776,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -11743,7 +11849,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 332, "cookies": false, "type": "graphql", "deprecated": false, @@ -11797,7 +11903,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -11851,7 +11957,7 @@ }, "x-appwrite": { "method": "get", - "weight": 125, + "weight": 126, "cookies": false, "type": "", "deprecated": false, @@ -11902,7 +12008,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -11953,7 +12059,7 @@ }, "x-appwrite": { "method": "getCache", - "weight": 128, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -12004,7 +12110,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12066,7 +12172,7 @@ }, "x-appwrite": { "method": "getDB", - "weight": 127, + "weight": 128, "cookies": false, "type": "", "deprecated": false, @@ -12117,7 +12223,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12168,7 +12274,7 @@ }, "x-appwrite": { "method": "getQueue", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -12219,7 +12325,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12283,7 +12389,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12347,7 +12453,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12422,7 +12528,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12486,7 +12592,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -12576,7 +12682,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12640,7 +12746,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -12704,7 +12810,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12768,7 +12874,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -12832,7 +12938,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -12896,7 +13002,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -12960,7 +13066,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -13024,7 +13130,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -13088,7 +13194,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -13139,7 +13245,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -13190,7 +13296,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -13241,7 +13347,7 @@ }, "x-appwrite": { "method": "get", - "weight": 117, + "weight": 118, "cookies": false, "type": "", "deprecated": false, @@ -13295,7 +13401,7 @@ }, "x-appwrite": { "method": "listCodes", - "weight": 118, + "weight": 119, "cookies": false, "type": "", "deprecated": false, @@ -13349,7 +13455,7 @@ }, "x-appwrite": { "method": "listContinents", - "weight": 122, + "weight": 123, "cookies": false, "type": "", "deprecated": false, @@ -13403,7 +13509,7 @@ }, "x-appwrite": { "method": "listCountries", - "weight": 119, + "weight": 120, "cookies": false, "type": "", "deprecated": false, @@ -13457,7 +13563,7 @@ }, "x-appwrite": { "method": "listCountriesEU", - "weight": 120, + "weight": 121, "cookies": false, "type": "", "deprecated": false, @@ -13511,7 +13617,7 @@ }, "x-appwrite": { "method": "listCountriesPhones", - "weight": 121, + "weight": 122, "cookies": false, "type": "", "deprecated": false, @@ -13565,7 +13671,7 @@ }, "x-appwrite": { "method": "listCurrencies", - "weight": 123, + "weight": 124, "cookies": false, "type": "", "deprecated": false, @@ -13619,7 +13725,7 @@ }, "x-appwrite": { "method": "listLanguages", - "weight": 124, + "weight": 125, "cookies": false, "type": "", "deprecated": false, @@ -13673,7 +13779,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13751,7 +13857,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -13897,7 +14003,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 394, + "weight": 395, "cookies": false, "type": "", "deprecated": false, @@ -14045,7 +14151,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14202,7 +14308,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "deprecated": false, @@ -14361,7 +14467,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14472,7 +14578,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 395, + "weight": 396, "cookies": false, "type": "", "deprecated": false, @@ -14586,7 +14692,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "deprecated": false, @@ -14641,7 +14747,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "deprecated": false, @@ -14705,7 +14811,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "deprecated": false, @@ -14782,7 +14888,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "deprecated": false, @@ -14859,7 +14965,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -14937,7 +15043,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15044,7 +15150,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -15154,7 +15260,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15241,7 +15347,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -15331,7 +15437,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15448,7 +15554,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15568,7 +15674,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -15665,7 +15771,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -15765,7 +15871,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -15872,7 +15978,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -15982,7 +16088,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -16127,7 +16233,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -16274,7 +16380,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16371,7 +16477,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16471,7 +16577,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16568,7 +16674,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -16668,7 +16774,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -16765,7 +16871,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16865,7 +16971,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -16962,7 +17068,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17062,7 +17168,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -17117,7 +17223,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17181,7 +17287,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -17258,7 +17364,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -17335,7 +17441,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17411,7 +17517,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17496,7 +17602,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17558,7 +17664,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -17637,7 +17743,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -17701,7 +17807,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17778,7 +17884,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -17864,7 +17970,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -17956,7 +18062,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -18021,7 +18127,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -18098,7 +18204,7 @@ }, "x-appwrite": { "method": "list", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18174,7 +18280,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18264,7 +18370,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18359,7 +18465,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18430,7 +18536,7 @@ }, "x-appwrite": { "method": "deleteFirebaseAuth", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -18480,7 +18586,7 @@ }, "x-appwrite": { "method": "createFirebaseOAuthMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -18558,7 +18664,7 @@ }, "x-appwrite": { "method": "listFirebaseProjects", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -18608,7 +18714,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -18682,7 +18788,7 @@ }, "x-appwrite": { "method": "getFirebaseReportOAuth", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -18756,7 +18862,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -18869,7 +18975,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -19004,7 +19110,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -19111,7 +19217,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -19237,7 +19343,7 @@ }, "x-appwrite": { "method": "get", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -19297,7 +19403,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -19350,7 +19456,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -19412,7 +19518,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19502,7 +19608,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19550,7 +19656,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -19625,7 +19731,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -19685,7 +19791,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -19762,7 +19868,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -19824,7 +19930,7 @@ }, "x-appwrite": { "method": "list", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -19898,7 +20004,7 @@ }, "x-appwrite": { "method": "create", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -20035,7 +20141,7 @@ }, "x-appwrite": { "method": "get", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -20095,7 +20201,7 @@ }, "x-appwrite": { "method": "update", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -20212,7 +20318,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -20274,7 +20380,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -20368,7 +20474,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20449,7 +20555,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -20530,7 +20636,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -20611,7 +20717,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -20672,7 +20778,7 @@ }, "\/projects\/{projectId}\/auth\/memberships-privacy": { "patch": { - "summary": "Update project team sensitive attributes", + "summary": "Update project memberships privacy attributes", "operationId": "projectsUpdateMembershipsPrivacy", "tags": [ "projects" @@ -20692,7 +20798,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -20785,7 +20891,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -20869,7 +20975,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -20950,7 +21056,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -21031,7 +21137,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -21112,7 +21218,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -21193,7 +21299,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -21295,7 +21401,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21384,7 +21490,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21444,7 +21550,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -21539,7 +21645,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -21609,7 +21715,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -21705,7 +21811,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -21777,7 +21883,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -21916,7 +22022,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -21976,7 +22082,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -22097,7 +22203,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -22167,7 +22273,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -22264,7 +22370,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22336,7 +22442,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -22438,7 +22544,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -22519,7 +22625,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -22639,7 +22745,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -22772,7 +22878,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -22853,7 +22959,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -23079,7 +23185,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23345,7 +23451,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -23573,7 +23679,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -23796,7 +23902,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -24038,7 +24144,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -24263,7 +24369,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -24323,7 +24429,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -24440,7 +24546,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24510,7 +24616,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -24628,7 +24734,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -24700,7 +24806,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -24772,7 +24878,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -24846,7 +24952,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -24932,7 +25038,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -24985,7 +25091,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -25047,7 +25153,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 320, + "weight": 321, "cookies": false, "type": "", "deprecated": false, @@ -25109,7 +25215,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -25184,7 +25290,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -25313,7 +25419,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -25374,7 +25480,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -25500,7 +25606,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -25563,7 +25669,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -25651,7 +25757,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 208, "cookies": false, "type": "upload", "deprecated": false, @@ -25751,7 +25857,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 210, "cookies": false, "type": "", "deprecated": false, @@ -25825,7 +25931,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -25916,7 +26022,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -25985,7 +26091,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -26054,7 +26160,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -26272,7 +26378,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 213, "cookies": false, "type": "location", "deprecated": false, @@ -26348,7 +26454,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -26422,7 +26528,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -26506,7 +26612,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -26584,7 +26690,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -26671,7 +26777,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -26735,7 +26841,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -26811,7 +26917,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -26877,7 +26983,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -26952,7 +27058,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -27040,7 +27146,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -27153,7 +27259,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -27227,7 +27333,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -27316,7 +27422,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -27392,7 +27498,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -27491,7 +27597,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -27553,7 +27659,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -27636,7 +27742,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -27711,7 +27817,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -27801,7 +27907,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -27888,7 +27994,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -27975,7 +28081,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -28045,7 +28151,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28108,7 +28214,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -28195,7 +28301,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -28282,7 +28388,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -28399,7 +28505,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -28504,7 +28610,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -28611,7 +28717,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 274, + "weight": 275, "cookies": false, "type": "", "deprecated": false, @@ -28685,7 +28791,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -28739,7 +28845,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -28802,7 +28908,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -28884,7 +28990,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -28968,7 +29074,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -29053,7 +29159,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29129,7 +29235,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -29192,7 +29298,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -29274,7 +29380,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29352,7 +29458,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -29415,7 +29521,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -29476,7 +29582,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -29537,7 +29643,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -29600,7 +29706,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -29682,7 +29788,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -29764,7 +29870,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -29846,7 +29952,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -29907,7 +30013,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -29989,7 +30095,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -30050,7 +30156,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -30104,7 +30210,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -30160,7 +30266,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -30233,7 +30339,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -30315,7 +30421,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -30390,7 +30496,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -30502,7 +30608,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -30574,7 +30680,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -30665,7 +30771,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -30739,7 +30845,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -30823,7 +30929,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -30905,7 +31011,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -30987,7 +31093,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -31058,7 +31164,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -31145,7 +31251,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -31217,7 +31323,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 282, + "weight": 283, "cookies": false, "type": "", "deprecated": false, @@ -31289,7 +31395,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -31372,7 +31478,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -31453,7 +31559,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -31544,7 +31650,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -31620,7 +31726,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -31673,7 +31779,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -36077,17 +36183,17 @@ "description": "Whether or not to send session alert emails to users.", "x-example": true }, - "membershipsUserName": { + "authMembershipsUserName": { "type": "boolean", "description": "Whether or not to show user names in the teams membership response.", "x-example": true }, - "membershipsUserEmail": { + "authMembershipsUserEmail": { "type": "boolean", "description": "Whether or not to show user emails in the teams membership response.", "x-example": true }, - "membershipsMfa": { + "authMembershipsMfa": { "type": "boolean", "description": "Whether or not to show user MFA status in the teams membership response.", "x-example": true @@ -36297,9 +36403,9 @@ "authPersonalDataCheck", "authMockNumbers", "authSessionAlerts", - "membershipsUserName", - "membershipsUserEmail", - "membershipsMfa", + "authMembershipsUserName", + "authMembershipsUserEmail", + "authMembershipsMfa", "oAuthProviders", "platforms", "webhooks", diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index e84b751743..08d58bc9b9 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -7735,6 +7735,114 @@ } } } + }, + "patch": { + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", + "tags": [ + "databases" + ], + "description": "Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated.", + "responses": { + "200": { + "description": "Documents List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/documentList" + } + } + } + } + }, + "x-appwrite": { + "method": "updateDocuments", + "weight": 113, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "databases\/update-documents.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "server" + ], + "packaging": false, + "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", + "offline-key": "", + "offline-response-key": "$id", + "auth": { + "Project": [], + "Session": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "x-example": "{}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + } + } } }, "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { @@ -7961,7 +8069,7 @@ }, "x-appwrite": { "method": "deleteDocument", - "weight": 113, + "weight": 114, "cookies": false, "type": "", "deprecated": false, @@ -8414,7 +8522,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8490,7 +8598,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8739,7 +8847,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8791,7 +8899,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8844,7 +8952,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -8906,7 +9014,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -9132,7 +9240,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -9196,7 +9304,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9282,7 +9390,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 300, "cookies": false, "type": "upload", "deprecated": false, @@ -9381,7 +9489,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9453,7 +9561,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9518,7 +9626,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9585,7 +9693,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9673,7 +9781,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9740,7 +9848,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 297, "cookies": false, "type": "location", "deprecated": false, @@ -9816,7 +9924,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -9906,7 +10014,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10025,7 +10133,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10094,7 +10202,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10168,7 +10276,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10230,7 +10338,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10319,7 +10427,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10391,7 +10499,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10480,7 +10588,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -10554,7 +10662,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 332, "cookies": false, "type": "graphql", "deprecated": false, @@ -10610,7 +10718,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10666,7 +10774,7 @@ }, "x-appwrite": { "method": "get", - "weight": 125, + "weight": 126, "cookies": false, "type": "", "deprecated": false, @@ -10718,7 +10826,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -10770,7 +10878,7 @@ }, "x-appwrite": { "method": "getCache", - "weight": 128, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -10822,7 +10930,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -10885,7 +10993,7 @@ }, "x-appwrite": { "method": "getDB", - "weight": 127, + "weight": 128, "cookies": false, "type": "", "deprecated": false, @@ -10937,7 +11045,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -10989,7 +11097,7 @@ }, "x-appwrite": { "method": "getQueue", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11041,7 +11149,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11106,7 +11214,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11171,7 +11279,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11247,7 +11355,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11312,7 +11420,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -11403,7 +11511,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11468,7 +11576,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11533,7 +11641,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11598,7 +11706,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11663,7 +11771,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11728,7 +11836,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11793,7 +11901,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -11858,7 +11966,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -11923,7 +12031,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -11975,7 +12083,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12027,7 +12135,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12079,7 +12187,7 @@ }, "x-appwrite": { "method": "get", - "weight": 117, + "weight": 118, "cookies": false, "type": "", "deprecated": false, @@ -12135,7 +12243,7 @@ }, "x-appwrite": { "method": "listCodes", - "weight": 118, + "weight": 119, "cookies": false, "type": "", "deprecated": false, @@ -12191,7 +12299,7 @@ }, "x-appwrite": { "method": "listContinents", - "weight": 122, + "weight": 123, "cookies": false, "type": "", "deprecated": false, @@ -12247,7 +12355,7 @@ }, "x-appwrite": { "method": "listCountries", - "weight": 119, + "weight": 120, "cookies": false, "type": "", "deprecated": false, @@ -12303,7 +12411,7 @@ }, "x-appwrite": { "method": "listCountriesEU", - "weight": 120, + "weight": 121, "cookies": false, "type": "", "deprecated": false, @@ -12359,7 +12467,7 @@ }, "x-appwrite": { "method": "listCountriesPhones", - "weight": 121, + "weight": 122, "cookies": false, "type": "", "deprecated": false, @@ -12415,7 +12523,7 @@ }, "x-appwrite": { "method": "listCurrencies", - "weight": 123, + "weight": 124, "cookies": false, "type": "", "deprecated": false, @@ -12471,7 +12579,7 @@ }, "x-appwrite": { "method": "listLanguages", - "weight": 124, + "weight": 125, "cookies": false, "type": "", "deprecated": false, @@ -12527,7 +12635,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -12606,7 +12714,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12753,7 +12861,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 394, + "weight": 395, "cookies": false, "type": "", "deprecated": false, @@ -12902,7 +13010,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13060,7 +13168,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "deprecated": false, @@ -13220,7 +13328,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13332,7 +13440,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 395, + "weight": 396, "cookies": false, "type": "", "deprecated": false, @@ -13447,7 +13555,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "deprecated": false, @@ -13503,7 +13611,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "deprecated": false, @@ -13568,7 +13676,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "deprecated": false, @@ -13646,7 +13754,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "deprecated": false, @@ -13724,7 +13832,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -13803,7 +13911,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -13911,7 +14019,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -14022,7 +14130,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14110,7 +14218,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -14201,7 +14309,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -14319,7 +14427,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -14440,7 +14548,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14538,7 +14646,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -14639,7 +14747,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -14747,7 +14855,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -14858,7 +14966,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -15004,7 +15112,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -15152,7 +15260,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15250,7 +15358,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15351,7 +15459,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15449,7 +15557,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -15550,7 +15658,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -15648,7 +15756,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -15749,7 +15857,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -15847,7 +15955,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -15948,7 +16056,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16004,7 +16112,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16069,7 +16177,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16147,7 +16255,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -16225,7 +16333,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16302,7 +16410,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16388,7 +16496,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16451,7 +16559,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -16531,7 +16639,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -16596,7 +16704,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -16674,7 +16782,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -16761,7 +16869,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -16855,7 +16963,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -16921,7 +17029,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -17000,7 +17108,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17076,7 +17184,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -17206,7 +17314,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17268,7 +17376,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -17395,7 +17503,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -17459,7 +17567,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -17549,7 +17657,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 208, "cookies": false, "type": "upload", "deprecated": false, @@ -17651,7 +17759,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 210, "cookies": false, "type": "", "deprecated": false, @@ -17727,7 +17835,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -17820,7 +17928,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -17891,7 +17999,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -17962,7 +18070,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -18182,7 +18290,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 213, "cookies": false, "type": "location", "deprecated": false, @@ -18260,7 +18368,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18340,7 +18448,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18429,7 +18537,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18495,7 +18603,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -18573,7 +18681,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -18641,7 +18749,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -18731,7 +18839,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -18846,7 +18954,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -18922,7 +19030,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -19013,7 +19121,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -19091,7 +19199,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -19192,7 +19300,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -19256,7 +19364,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -19341,7 +19449,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -19417,7 +19525,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19508,7 +19616,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -19596,7 +19704,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -19684,7 +19792,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -19755,7 +19863,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -19819,7 +19927,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -19907,7 +20015,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -19995,7 +20103,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -20113,7 +20221,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -20219,7 +20327,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -20327,7 +20435,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -20382,7 +20490,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -20446,7 +20554,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -20529,7 +20637,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -20614,7 +20722,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -20700,7 +20808,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -20777,7 +20885,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -20841,7 +20949,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -20924,7 +21032,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21003,7 +21111,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -21067,7 +21175,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21129,7 +21237,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -21191,7 +21299,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -21255,7 +21363,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -21338,7 +21446,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -21421,7 +21529,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21504,7 +21612,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -21566,7 +21674,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -21649,7 +21757,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -21711,7 +21819,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -21766,7 +21874,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -21823,7 +21931,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -21897,7 +22005,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -21980,7 +22088,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -22056,7 +22164,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -22169,7 +22277,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -22242,7 +22350,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -22334,7 +22442,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -22409,7 +22517,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -22494,7 +22602,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -22577,7 +22685,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index b1b9ce8dca..4ebd7afd3e 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -4802,6 +4802,111 @@ } } ] + }, + "patch": { + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "databases" + ], + "description": "Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated.", + "responses": { + "200": { + "description": "Documents List", + "schema": { + "$ref": "#\/definitions\/documentList" + } + } + }, + "x-appwrite": { + "method": "updateDocuments", + "weight": 113, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "databases\/update-documents.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "server" + ], + "packaging": false, + "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", + "offline-key": "", + "offline-response-key": "$id", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "type": "string", + "x-example": "", + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "type": "string", + "x-example": "", + "in": "path" + }, + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "default": [], + "x-example": "{}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": null, + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + ] } }, "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { @@ -5019,7 +5124,7 @@ }, "x-appwrite": { "method": "deleteDocument", - "weight": 113, + "weight": 114, "cookies": false, "type": "", "deprecated": false, @@ -5101,7 +5206,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -5186,7 +5291,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -5307,7 +5412,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -5381,7 +5486,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 332, "cookies": false, "type": "graphql", "deprecated": false, @@ -5457,7 +5562,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -5533,7 +5638,7 @@ }, "x-appwrite": { "method": "get", - "weight": 117, + "weight": 118, "cookies": false, "type": "", "deprecated": false, @@ -5589,7 +5694,7 @@ }, "x-appwrite": { "method": "listCodes", - "weight": 118, + "weight": 119, "cookies": false, "type": "", "deprecated": false, @@ -5645,7 +5750,7 @@ }, "x-appwrite": { "method": "listContinents", - "weight": 122, + "weight": 123, "cookies": false, "type": "", "deprecated": false, @@ -5701,7 +5806,7 @@ }, "x-appwrite": { "method": "listCountries", - "weight": 119, + "weight": 120, "cookies": false, "type": "", "deprecated": false, @@ -5757,7 +5862,7 @@ }, "x-appwrite": { "method": "listCountriesEU", - "weight": 120, + "weight": 121, "cookies": false, "type": "", "deprecated": false, @@ -5813,7 +5918,7 @@ }, "x-appwrite": { "method": "listCountriesPhones", - "weight": 121, + "weight": 122, "cookies": false, "type": "", "deprecated": false, @@ -5869,7 +5974,7 @@ }, "x-appwrite": { "method": "listCurrencies", - "weight": 123, + "weight": 124, "cookies": false, "type": "", "deprecated": false, @@ -5925,7 +6030,7 @@ }, "x-appwrite": { "method": "listLanguages", - "weight": 124, + "weight": 125, "cookies": false, "type": "", "deprecated": false, @@ -5981,7 +6086,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -6070,7 +6175,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -6145,7 +6250,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -6230,7 +6335,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 208, "cookies": false, "type": "upload", "deprecated": false, @@ -6324,7 +6429,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 210, "cookies": false, "type": "", "deprecated": false, @@ -6396,7 +6501,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -6487,7 +6592,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -6561,7 +6666,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -6635,7 +6740,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -6836,7 +6941,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 213, "cookies": false, "type": "location", "deprecated": false, @@ -6910,7 +7015,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -6987,7 +7092,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -7081,7 +7186,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -7145,7 +7250,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -7222,7 +7327,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -7288,7 +7393,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -7373,7 +7478,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -7490,7 +7595,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -7562,7 +7667,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -7650,7 +7755,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -7724,7 +7829,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -7822,7 +7927,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -7885,7 +7990,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index c7b6bac2d4..bfcf354c83 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -4659,7 +4659,7 @@ }, "x-appwrite": { "method": "chat", - "weight": 333, + "weight": 334, "cookies": false, "type": "", "deprecated": false, @@ -4731,7 +4731,7 @@ }, "x-appwrite": { "method": "variables", - "weight": 332, + "weight": 333, "cookies": false, "type": "", "deprecated": false, @@ -4943,7 +4943,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 114, + "weight": 115, "cookies": false, "type": "", "deprecated": false, @@ -8358,6 +8358,111 @@ } } ] + }, + "patch": { + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "databases" + ], + "description": "Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated.", + "responses": { + "200": { + "description": "Documents List", + "schema": { + "$ref": "#\/definitions\/documentList" + } + } + }, + "x-appwrite": { + "method": "updateDocuments", + "weight": 113, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "databases\/update-documents.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "server" + ], + "packaging": false, + "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", + "offline-key": "", + "offline-response-key": "$id", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "type": "string", + "x-example": "", + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "type": "string", + "x-example": "", + "in": "path" + }, + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "default": [], + "x-example": "{}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": null, + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + ] } }, "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { @@ -8575,7 +8680,7 @@ }, "x-appwrite": { "method": "deleteDocument", - "weight": 113, + "weight": 114, "cookies": false, "type": "", "deprecated": false, @@ -9181,7 +9286,7 @@ }, "x-appwrite": { "method": "getCollectionUsage", - "weight": 116, + "weight": 117, "cookies": false, "type": "", "deprecated": false, @@ -9345,7 +9450,7 @@ }, "x-appwrite": { "method": "getDatabaseUsage", - "weight": 115, + "weight": 116, "cookies": false, "type": "", "deprecated": false, @@ -9427,7 +9532,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -9501,7 +9606,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -9773,7 +9878,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -9826,7 +9931,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -9880,7 +9985,7 @@ }, "x-appwrite": { "method": "listTemplates", - "weight": 314, + "weight": 315, "cookies": false, "type": "", "deprecated": false, @@ -9978,7 +10083,7 @@ }, "x-appwrite": { "method": "getTemplate", - "weight": 315, + "weight": 316, "cookies": false, "type": "", "deprecated": false, @@ -10040,7 +10145,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 294, + "weight": 295, "cookies": false, "type": "", "deprecated": false, @@ -10114,7 +10219,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -10175,7 +10280,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -10417,7 +10522,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -10480,7 +10585,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -10562,7 +10667,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 300, "cookies": false, "type": "upload", "deprecated": false, @@ -10656,7 +10761,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -10725,7 +10830,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -10789,7 +10894,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -10855,7 +10960,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -10939,7 +11044,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -11010,7 +11115,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 297, "cookies": false, "type": "location", "deprecated": false, @@ -11083,7 +11188,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -11168,7 +11273,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -11289,7 +11394,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -11356,7 +11461,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -11427,7 +11532,7 @@ }, "x-appwrite": { "method": "getFunctionUsage", - "weight": 293, + "weight": 294, "cookies": false, "type": "", "deprecated": false, @@ -11509,7 +11614,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -11570,7 +11675,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -11658,7 +11763,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -11727,7 +11832,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -11815,7 +11920,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -11886,7 +11991,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 332, "cookies": false, "type": "graphql", "deprecated": false, @@ -11962,7 +12067,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -12038,7 +12143,7 @@ }, "x-appwrite": { "method": "get", - "weight": 125, + "weight": 126, "cookies": false, "type": "", "deprecated": false, @@ -12091,7 +12196,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -12144,7 +12249,7 @@ }, "x-appwrite": { "method": "getCache", - "weight": 128, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -12197,7 +12302,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -12259,7 +12364,7 @@ }, "x-appwrite": { "method": "getDB", - "weight": 127, + "weight": 128, "cookies": false, "type": "", "deprecated": false, @@ -12312,7 +12417,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -12365,7 +12470,7 @@ }, "x-appwrite": { "method": "getQueue", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -12418,7 +12523,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -12482,7 +12587,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -12546,7 +12651,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -12619,7 +12724,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -12683,7 +12788,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -12771,7 +12876,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -12835,7 +12940,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -12899,7 +13004,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -12963,7 +13068,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -13027,7 +13132,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -13091,7 +13196,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -13155,7 +13260,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -13219,7 +13324,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -13283,7 +13388,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -13336,7 +13441,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -13389,7 +13494,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -13442,7 +13547,7 @@ }, "x-appwrite": { "method": "get", - "weight": 117, + "weight": 118, "cookies": false, "type": "", "deprecated": false, @@ -13498,7 +13603,7 @@ }, "x-appwrite": { "method": "listCodes", - "weight": 118, + "weight": 119, "cookies": false, "type": "", "deprecated": false, @@ -13554,7 +13659,7 @@ }, "x-appwrite": { "method": "listContinents", - "weight": 122, + "weight": 123, "cookies": false, "type": "", "deprecated": false, @@ -13610,7 +13715,7 @@ }, "x-appwrite": { "method": "listCountries", - "weight": 119, + "weight": 120, "cookies": false, "type": "", "deprecated": false, @@ -13666,7 +13771,7 @@ }, "x-appwrite": { "method": "listCountriesEU", - "weight": 120, + "weight": 121, "cookies": false, "type": "", "deprecated": false, @@ -13722,7 +13827,7 @@ }, "x-appwrite": { "method": "listCountriesPhones", - "weight": 121, + "weight": 122, "cookies": false, "type": "", "deprecated": false, @@ -13778,7 +13883,7 @@ }, "x-appwrite": { "method": "listCurrencies", - "weight": 123, + "weight": 124, "cookies": false, "type": "", "deprecated": false, @@ -13834,7 +13939,7 @@ }, "x-appwrite": { "method": "listLanguages", - "weight": 124, + "weight": 125, "cookies": false, "type": "", "deprecated": false, @@ -13890,7 +13995,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -13967,7 +14072,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -14127,7 +14232,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 394, + "weight": 395, "cookies": false, "type": "", "deprecated": false, @@ -14284,7 +14389,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -14459,7 +14564,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "deprecated": false, @@ -14631,7 +14736,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -14751,7 +14856,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 395, + "weight": 396, "cookies": false, "type": "", "deprecated": false, @@ -14869,7 +14974,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "deprecated": false, @@ -14928,7 +15033,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "deprecated": false, @@ -14992,7 +15097,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "deprecated": false, @@ -15068,7 +15173,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "deprecated": false, @@ -15144,7 +15249,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -15221,7 +15326,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -15338,7 +15443,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -15453,7 +15558,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -15546,7 +15651,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -15637,7 +15742,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -15766,7 +15871,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -15893,7 +15998,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -15998,7 +16103,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -16101,7 +16206,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -16218,7 +16323,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -16333,7 +16438,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -16494,7 +16599,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -16652,7 +16757,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -16757,7 +16862,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -16860,7 +16965,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -16965,7 +17070,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -17068,7 +17173,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -17173,7 +17278,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -17276,7 +17381,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -17381,7 +17486,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -17484,7 +17589,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -17543,7 +17648,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -17607,7 +17712,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -17683,7 +17788,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -17759,7 +17864,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -17834,7 +17939,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -17926,7 +18031,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -17988,7 +18093,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -18071,7 +18176,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -18135,7 +18240,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -18211,7 +18316,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -18294,7 +18399,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -18386,7 +18491,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -18453,7 +18558,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -18528,7 +18633,7 @@ }, "x-appwrite": { "method": "list", - "weight": 339, + "weight": 340, "cookies": false, "type": "", "deprecated": false, @@ -18603,7 +18708,7 @@ }, "x-appwrite": { "method": "createAppwriteMigration", - "weight": 334, + "weight": 335, "cookies": false, "type": "", "deprecated": false, @@ -18699,7 +18804,7 @@ }, "x-appwrite": { "method": "getAppwriteReport", - "weight": 341, + "weight": 342, "cookies": false, "type": "", "deprecated": false, @@ -18789,7 +18894,7 @@ }, "x-appwrite": { "method": "createFirebaseMigration", - "weight": 336, + "weight": 337, "cookies": false, "type": "", "deprecated": false, @@ -18871,7 +18976,7 @@ }, "x-appwrite": { "method": "deleteFirebaseAuth", - "weight": 347, + "weight": 348, "cookies": false, "type": "", "deprecated": false, @@ -18923,7 +19028,7 @@ }, "x-appwrite": { "method": "createFirebaseOAuthMigration", - "weight": 335, + "weight": 336, "cookies": false, "type": "", "deprecated": false, @@ -19005,7 +19110,7 @@ }, "x-appwrite": { "method": "listFirebaseProjects", - "weight": 346, + "weight": 347, "cookies": false, "type": "", "deprecated": false, @@ -19057,7 +19162,7 @@ }, "x-appwrite": { "method": "getFirebaseReport", - "weight": 342, + "weight": 343, "cookies": false, "type": "", "deprecated": false, @@ -19130,7 +19235,7 @@ }, "x-appwrite": { "method": "getFirebaseReportOAuth", - "weight": 343, + "weight": 344, "cookies": false, "type": "", "deprecated": false, @@ -19203,7 +19308,7 @@ }, "x-appwrite": { "method": "createNHostMigration", - "weight": 338, + "weight": 339, "cookies": false, "type": "", "deprecated": false, @@ -19326,7 +19431,7 @@ }, "x-appwrite": { "method": "getNHostReport", - "weight": 349, + "weight": 350, "cookies": false, "type": "", "deprecated": false, @@ -19448,7 +19553,7 @@ }, "x-appwrite": { "method": "createSupabaseMigration", - "weight": 337, + "weight": 338, "cookies": false, "type": "", "deprecated": false, @@ -19564,7 +19669,7 @@ }, "x-appwrite": { "method": "getSupabaseReport", - "weight": 348, + "weight": 349, "cookies": false, "type": "", "deprecated": false, @@ -19679,7 +19784,7 @@ }, "x-appwrite": { "method": "get", - "weight": 340, + "weight": 341, "cookies": false, "type": "", "deprecated": false, @@ -19739,7 +19844,7 @@ }, "x-appwrite": { "method": "retry", - "weight": 350, + "weight": 351, "cookies": false, "type": "", "deprecated": false, @@ -19794,7 +19899,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 351, + "weight": 352, "cookies": false, "type": "", "deprecated": false, @@ -19856,7 +19961,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 196, + "weight": 197, "cookies": false, "type": "", "deprecated": false, @@ -19942,7 +20047,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 198, + "weight": 199, "cookies": false, "type": "", "deprecated": false, @@ -19992,7 +20097,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 197, + "weight": 198, "cookies": false, "type": "", "deprecated": false, @@ -20071,7 +20176,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 199, + "weight": 200, "cookies": false, "type": "", "deprecated": false, @@ -20131,7 +20236,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 200, + "weight": 201, "cookies": false, "type": "", "deprecated": false, @@ -20210,7 +20315,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 201, + "weight": 202, "cookies": false, "type": "", "deprecated": false, @@ -20272,7 +20377,7 @@ }, "x-appwrite": { "method": "list", - "weight": 151, + "weight": 152, "cookies": false, "type": "", "deprecated": false, @@ -20345,7 +20450,7 @@ }, "x-appwrite": { "method": "create", - "weight": 150, + "weight": 151, "cookies": false, "type": "", "deprecated": false, @@ -20497,7 +20602,7 @@ }, "x-appwrite": { "method": "get", - "weight": 152, + "weight": 153, "cookies": false, "type": "", "deprecated": false, @@ -20557,7 +20662,7 @@ }, "x-appwrite": { "method": "update", - "weight": 153, + "weight": 154, "cookies": false, "type": "", "deprecated": false, @@ -20684,7 +20789,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 170, + "weight": 171, "cookies": false, "type": "", "deprecated": false, @@ -20746,7 +20851,7 @@ }, "x-appwrite": { "method": "updateApiStatus", - "weight": 157, + "weight": 158, "cookies": false, "type": "", "deprecated": false, @@ -20840,7 +20945,7 @@ }, "x-appwrite": { "method": "updateApiStatusAll", - "weight": 158, + "weight": 159, "cookies": false, "type": "", "deprecated": false, @@ -20920,7 +21025,7 @@ }, "x-appwrite": { "method": "updateAuthDuration", - "weight": 163, + "weight": 164, "cookies": false, "type": "", "deprecated": false, @@ -21000,7 +21105,7 @@ }, "x-appwrite": { "method": "updateAuthLimit", - "weight": 162, + "weight": 163, "cookies": false, "type": "", "deprecated": false, @@ -21080,7 +21185,7 @@ }, "x-appwrite": { "method": "updateAuthSessionsLimit", - "weight": 168, + "weight": 169, "cookies": false, "type": "", "deprecated": false, @@ -21138,7 +21243,7 @@ }, "\/projects\/{projectId}\/auth\/memberships-privacy": { "patch": { - "summary": "Update project team sensitive attributes", + "summary": "Update project memberships privacy attributes", "operationId": "projectsUpdateMembershipsPrivacy", "consumes": [ "application\/json" @@ -21160,7 +21265,7 @@ }, "x-appwrite": { "method": "updateMembershipsPrivacy", - "weight": 161, + "weight": 162, "cookies": false, "type": "", "deprecated": false, @@ -21254,7 +21359,7 @@ }, "x-appwrite": { "method": "updateMockNumbers", - "weight": 169, + "weight": 170, "cookies": false, "type": "", "deprecated": false, @@ -21337,7 +21442,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordDictionary", - "weight": 166, + "weight": 167, "cookies": false, "type": "", "deprecated": false, @@ -21417,7 +21522,7 @@ }, "x-appwrite": { "method": "updateAuthPasswordHistory", - "weight": 165, + "weight": 166, "cookies": false, "type": "", "deprecated": false, @@ -21497,7 +21602,7 @@ }, "x-appwrite": { "method": "updatePersonalDataCheck", - "weight": 167, + "weight": 168, "cookies": false, "type": "", "deprecated": false, @@ -21577,7 +21682,7 @@ }, "x-appwrite": { "method": "updateSessionAlerts", - "weight": 160, + "weight": 161, "cookies": false, "type": "", "deprecated": false, @@ -21657,7 +21762,7 @@ }, "x-appwrite": { "method": "updateAuthStatus", - "weight": 164, + "weight": 165, "cookies": false, "type": "", "deprecated": false, @@ -21756,7 +21861,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 182, + "weight": 183, "cookies": false, "type": "", "deprecated": false, @@ -21845,7 +21950,7 @@ }, "x-appwrite": { "method": "listKeys", - "weight": 178, + "weight": 179, "cookies": false, "type": "", "deprecated": false, @@ -21905,7 +22010,7 @@ }, "x-appwrite": { "method": "createKey", - "weight": 177, + "weight": 178, "cookies": false, "type": "", "deprecated": false, @@ -22001,7 +22106,7 @@ }, "x-appwrite": { "method": "getKey", - "weight": 179, + "weight": 180, "cookies": false, "type": "", "deprecated": false, @@ -22069,7 +22174,7 @@ }, "x-appwrite": { "method": "updateKey", - "weight": 180, + "weight": 181, "cookies": false, "type": "", "deprecated": false, @@ -22166,7 +22271,7 @@ }, "x-appwrite": { "method": "deleteKey", - "weight": 181, + "weight": 182, "cookies": false, "type": "", "deprecated": false, @@ -22236,7 +22341,7 @@ }, "x-appwrite": { "method": "updateOAuth2", - "weight": 159, + "weight": 160, "cookies": false, "type": "", "deprecated": false, @@ -22377,7 +22482,7 @@ }, "x-appwrite": { "method": "listPlatforms", - "weight": 184, + "weight": 185, "cookies": false, "type": "", "deprecated": false, @@ -22437,7 +22542,7 @@ }, "x-appwrite": { "method": "createPlatform", - "weight": 183, + "weight": 184, "cookies": false, "type": "", "deprecated": false, @@ -22561,7 +22666,7 @@ }, "x-appwrite": { "method": "getPlatform", - "weight": 185, + "weight": 186, "cookies": false, "type": "", "deprecated": false, @@ -22629,7 +22734,7 @@ }, "x-appwrite": { "method": "updatePlatform", - "weight": 186, + "weight": 187, "cookies": false, "type": "", "deprecated": false, @@ -22728,7 +22833,7 @@ }, "x-appwrite": { "method": "deletePlatform", - "weight": 187, + "weight": 188, "cookies": false, "type": "", "deprecated": false, @@ -22798,7 +22903,7 @@ }, "x-appwrite": { "method": "updateServiceStatus", - "weight": 155, + "weight": 156, "cookies": false, "type": "", "deprecated": false, @@ -22900,7 +23005,7 @@ }, "x-appwrite": { "method": "updateServiceStatusAll", - "weight": 156, + "weight": 157, "cookies": false, "type": "", "deprecated": false, @@ -22980,7 +23085,7 @@ }, "x-appwrite": { "method": "updateSmtp", - "weight": 188, + "weight": 189, "cookies": false, "type": "", "deprecated": false, @@ -23109,7 +23214,7 @@ }, "x-appwrite": { "method": "createSmtpTest", - "weight": 189, + "weight": 190, "cookies": false, "type": "", "deprecated": false, @@ -23249,7 +23354,7 @@ }, "x-appwrite": { "method": "updateTeam", - "weight": 154, + "weight": 155, "cookies": false, "type": "", "deprecated": false, @@ -23329,7 +23434,7 @@ }, "x-appwrite": { "method": "getEmailTemplate", - "weight": 191, + "weight": 192, "cookies": false, "type": "", "deprecated": false, @@ -23551,7 +23656,7 @@ }, "x-appwrite": { "method": "updateEmailTemplate", - "weight": 193, + "weight": 194, "cookies": false, "type": "", "deprecated": false, @@ -23816,7 +23921,7 @@ }, "x-appwrite": { "method": "deleteEmailTemplate", - "weight": 195, + "weight": 196, "cookies": false, "type": "", "deprecated": false, @@ -24040,7 +24145,7 @@ }, "x-appwrite": { "method": "getSmsTemplate", - "weight": 190, + "weight": 191, "cookies": false, "type": "", "deprecated": false, @@ -24259,7 +24364,7 @@ }, "x-appwrite": { "method": "updateSmsTemplate", - "weight": 192, + "weight": 193, "cookies": false, "type": "", "deprecated": false, @@ -24496,7 +24601,7 @@ }, "x-appwrite": { "method": "deleteSmsTemplate", - "weight": 194, + "weight": 195, "cookies": false, "type": "", "deprecated": false, @@ -24717,7 +24822,7 @@ }, "x-appwrite": { "method": "listWebhooks", - "weight": 172, + "weight": 173, "cookies": false, "type": "", "deprecated": false, @@ -24777,7 +24882,7 @@ }, "x-appwrite": { "method": "createWebhook", - "weight": 171, + "weight": 172, "cookies": false, "type": "", "deprecated": false, @@ -24899,7 +25004,7 @@ }, "x-appwrite": { "method": "getWebhook", - "weight": 173, + "weight": 174, "cookies": false, "type": "", "deprecated": false, @@ -24967,7 +25072,7 @@ }, "x-appwrite": { "method": "updateWebhook", - "weight": 174, + "weight": 175, "cookies": false, "type": "", "deprecated": false, @@ -25090,7 +25195,7 @@ }, "x-appwrite": { "method": "deleteWebhook", - "weight": 176, + "weight": 177, "cookies": false, "type": "", "deprecated": false, @@ -25160,7 +25265,7 @@ }, "x-appwrite": { "method": "updateWebhookSignature", - "weight": 175, + "weight": 176, "cookies": false, "type": "", "deprecated": false, @@ -25230,7 +25335,7 @@ }, "x-appwrite": { "method": "listRules", - "weight": 317, + "weight": 318, "cookies": false, "type": "", "deprecated": false, @@ -25303,7 +25408,7 @@ }, "x-appwrite": { "method": "createRule", - "weight": 316, + "weight": 317, "cookies": false, "type": "", "deprecated": false, @@ -25394,7 +25499,7 @@ }, "x-appwrite": { "method": "getRule", - "weight": 318, + "weight": 319, "cookies": false, "type": "", "deprecated": false, @@ -25449,7 +25554,7 @@ }, "x-appwrite": { "method": "deleteRule", - "weight": 319, + "weight": 320, "cookies": false, "type": "", "deprecated": false, @@ -25511,7 +25616,7 @@ }, "x-appwrite": { "method": "updateRuleVerification", - "weight": 320, + "weight": 321, "cookies": false, "type": "", "deprecated": false, @@ -25573,7 +25678,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -25647,7 +25752,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -25788,7 +25893,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -25849,7 +25954,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -25984,7 +26089,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -26047,7 +26152,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -26132,7 +26237,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 208, "cookies": false, "type": "upload", "deprecated": false, @@ -26226,7 +26331,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 210, "cookies": false, "type": "", "deprecated": false, @@ -26298,7 +26403,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -26389,7 +26494,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -26463,7 +26568,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -26537,7 +26642,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -26738,7 +26843,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 213, "cookies": false, "type": "location", "deprecated": false, @@ -26812,7 +26917,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 216, + "weight": 217, "cookies": false, "type": "", "deprecated": false, @@ -26886,7 +26991,7 @@ }, "x-appwrite": { "method": "getBucketUsage", - "weight": 217, + "weight": 218, "cookies": false, "type": "", "deprecated": false, @@ -26968,7 +27073,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -27045,7 +27150,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -27139,7 +27244,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -27203,7 +27308,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -27280,7 +27385,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -27346,7 +27451,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 231, + "weight": 232, "cookies": false, "type": "", "deprecated": false, @@ -27420,7 +27525,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -27505,7 +27610,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -27622,7 +27727,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -27694,7 +27799,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -27782,7 +27887,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -27856,7 +27961,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -27953,7 +28058,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -28015,7 +28120,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -28097,7 +28202,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -28171,7 +28276,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -28268,7 +28373,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -28361,7 +28466,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -28454,7 +28559,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -28525,7 +28630,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -28588,7 +28693,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -28681,7 +28786,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -28774,7 +28879,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -28902,7 +29007,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -29016,7 +29121,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -29130,7 +29235,7 @@ }, "x-appwrite": { "method": "getUsage", - "weight": 274, + "weight": 275, "cookies": false, "type": "", "deprecated": false, @@ -29204,7 +29309,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -29260,7 +29365,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -29323,7 +29428,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -29404,7 +29509,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -29488,7 +29593,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -29572,7 +29677,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -29647,7 +29752,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -29710,7 +29815,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -29791,7 +29896,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -29867,7 +29972,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -29930,7 +30035,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -29991,7 +30096,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -30052,7 +30157,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -30115,7 +30220,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -30196,7 +30301,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -30277,7 +30382,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -30358,7 +30463,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -30419,7 +30524,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -30500,7 +30605,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -30561,7 +30666,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -30617,7 +30722,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -30675,7 +30780,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -30746,7 +30851,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -30827,7 +30932,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -30901,7 +31006,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -31016,7 +31121,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -31086,7 +31191,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -31180,7 +31285,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -31252,7 +31357,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -31336,7 +31441,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -31417,7 +31522,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, @@ -31498,7 +31603,7 @@ }, "x-appwrite": { "method": "listRepositories", - "weight": 279, + "weight": 280, "cookies": false, "type": "", "deprecated": false, @@ -31567,7 +31672,7 @@ }, "x-appwrite": { "method": "createRepository", - "weight": 280, + "weight": 281, "cookies": false, "type": "", "deprecated": false, @@ -31654,7 +31759,7 @@ }, "x-appwrite": { "method": "getRepository", - "weight": 281, + "weight": 282, "cookies": false, "type": "", "deprecated": false, @@ -31724,7 +31829,7 @@ }, "x-appwrite": { "method": "listRepositoryBranches", - "weight": 282, + "weight": 283, "cookies": false, "type": "", "deprecated": false, @@ -31794,7 +31899,7 @@ }, "x-appwrite": { "method": "getRepositoryContents", - "weight": 277, + "weight": 278, "cookies": false, "type": "", "deprecated": false, @@ -31873,7 +31978,7 @@ }, "x-appwrite": { "method": "createRepositoryDetection", - "weight": 278, + "weight": 279, "cookies": false, "type": "", "deprecated": false, @@ -31953,7 +32058,7 @@ }, "x-appwrite": { "method": "updateExternalDeployments", - "weight": 287, + "weight": 288, "cookies": false, "type": "", "deprecated": false, @@ -32041,7 +32146,7 @@ }, "x-appwrite": { "method": "listInstallations", - "weight": 284, + "weight": 285, "cookies": false, "type": "", "deprecated": false, @@ -32116,7 +32221,7 @@ }, "x-appwrite": { "method": "getInstallation", - "weight": 285, + "weight": 286, "cookies": false, "type": "", "deprecated": false, @@ -32171,7 +32276,7 @@ }, "x-appwrite": { "method": "deleteInstallation", - "weight": 286, + "weight": 287, "cookies": false, "type": "", "deprecated": false, @@ -36591,17 +36696,17 @@ "description": "Whether or not to send session alert emails to users.", "x-example": true }, - "membershipsUserName": { + "authMembershipsUserName": { "type": "boolean", "description": "Whether or not to show user names in the teams membership response.", "x-example": true }, - "membershipsUserEmail": { + "authMembershipsUserEmail": { "type": "boolean", "description": "Whether or not to show user emails in the teams membership response.", "x-example": true }, - "membershipsMfa": { + "authMembershipsMfa": { "type": "boolean", "description": "Whether or not to show user MFA status in the teams membership response.", "x-example": true @@ -36815,9 +36920,9 @@ "authPersonalDataCheck", "authMockNumbers", "authSessionAlerts", - "membershipsUserName", - "membershipsUserEmail", - "membershipsMfa", + "authMembershipsUserName", + "authMembershipsUserEmail", + "authMembershipsMfa", "oAuthProviders", "platforms", "webhooks", diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index 2c8e80c65e..9e931ad04f 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -7874,6 +7874,113 @@ } } ] + }, + "patch": { + "summary": "Update documents", + "operationId": "databasesUpdateDocuments", + "consumes": [ + "application\/json" + ], + "produces": [ + "application\/json" + ], + "tags": [ + "databases" + ], + "description": "Update all documents that match your queries, If none are submitted then all documents are updated. Using the patch method you can pass only specific fields that will get updated.", + "responses": { + "200": { + "description": "Documents List", + "schema": { + "$ref": "#\/definitions\/documentList" + } + } + }, + "x-appwrite": { + "method": "updateDocuments", + "weight": 113, + "cookies": false, + "type": "", + "deprecated": false, + "demo": "databases\/update-documents.md", + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-documents.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},method:{method},url:{url},userId:{userId}", + "scope": "documents.write", + "platforms": [ + "client", + "server", + "server" + ], + "packaging": false, + "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", + "offline-key": "", + "offline-response-key": "$id", + "auth": { + "Project": [], + "Session": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "type": "string", + "x-example": "", + "in": "path" + }, + { + "name": "collectionId", + "description": "Collection ID.", + "required": true, + "type": "string", + "x-example": "", + "in": "path" + }, + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Document data as JSON object. Include only attribute and value pairs to be updated.", + "default": [], + "x-example": "{}" + }, + "permissions": { + "type": "array", + "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https:\/\/appwrite.io\/docs\/permissions).", + "default": null, + "x-example": "[\"read(\"any\")\"]", + "items": { + "type": "string" + } + }, + "queries": { + "type": "array", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "default": [], + "x-example": null, + "items": { + "type": "string" + } + } + } + } + } + ] } }, "\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}": { @@ -8095,7 +8202,7 @@ }, "x-appwrite": { "method": "deleteDocument", - "weight": 113, + "weight": 114, "cookies": false, "type": "", "deprecated": false, @@ -8535,7 +8642,7 @@ }, "x-appwrite": { "method": "list", - "weight": 289, + "weight": 290, "cookies": false, "type": "", "deprecated": false, @@ -8610,7 +8717,7 @@ }, "x-appwrite": { "method": "create", - "weight": 288, + "weight": 289, "cookies": false, "type": "", "deprecated": false, @@ -8883,7 +8990,7 @@ }, "x-appwrite": { "method": "listRuntimes", - "weight": 290, + "weight": 291, "cookies": false, "type": "", "deprecated": false, @@ -8937,7 +9044,7 @@ }, "x-appwrite": { "method": "listSpecifications", - "weight": 291, + "weight": 292, "cookies": false, "type": "", "deprecated": false, @@ -8992,7 +9099,7 @@ }, "x-appwrite": { "method": "get", - "weight": 292, + "weight": 293, "cookies": false, "type": "", "deprecated": false, @@ -9054,7 +9161,7 @@ }, "x-appwrite": { "method": "update", - "weight": 295, + "weight": 296, "cookies": false, "type": "", "deprecated": false, @@ -9297,7 +9404,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 298, + "weight": 299, "cookies": false, "type": "", "deprecated": false, @@ -9361,7 +9468,7 @@ }, "x-appwrite": { "method": "listDeployments", - "weight": 300, + "weight": 301, "cookies": false, "type": "", "deprecated": false, @@ -9444,7 +9551,7 @@ }, "x-appwrite": { "method": "createDeployment", - "weight": 299, + "weight": 300, "cookies": false, "type": "upload", "deprecated": false, @@ -9539,7 +9646,7 @@ }, "x-appwrite": { "method": "getDeployment", - "weight": 301, + "weight": 302, "cookies": false, "type": "", "deprecated": false, @@ -9609,7 +9716,7 @@ }, "x-appwrite": { "method": "updateDeployment", - "weight": 297, + "weight": 298, "cookies": false, "type": "", "deprecated": false, @@ -9674,7 +9781,7 @@ }, "x-appwrite": { "method": "deleteDeployment", - "weight": 302, + "weight": 303, "cookies": false, "type": "", "deprecated": false, @@ -9741,7 +9848,7 @@ }, "x-appwrite": { "method": "createBuild", - "weight": 303, + "weight": 304, "cookies": false, "type": "", "deprecated": false, @@ -9826,7 +9933,7 @@ }, "x-appwrite": { "method": "updateDeploymentBuild", - "weight": 304, + "weight": 305, "cookies": false, "type": "", "deprecated": false, @@ -9898,7 +10005,7 @@ }, "x-appwrite": { "method": "getDeploymentDownload", - "weight": 296, + "weight": 297, "cookies": false, "type": "location", "deprecated": false, @@ -9972,7 +10079,7 @@ }, "x-appwrite": { "method": "listExecutions", - "weight": 306, + "weight": 307, "cookies": false, "type": "", "deprecated": false, @@ -10059,7 +10166,7 @@ }, "x-appwrite": { "method": "createExecution", - "weight": 305, + "weight": 306, "cookies": false, "type": "", "deprecated": false, @@ -10182,7 +10289,7 @@ }, "x-appwrite": { "method": "getExecution", - "weight": 307, + "weight": 308, "cookies": false, "type": "", "deprecated": false, @@ -10251,7 +10358,7 @@ }, "x-appwrite": { "method": "deleteExecution", - "weight": 308, + "weight": 309, "cookies": false, "type": "", "deprecated": false, @@ -10323,7 +10430,7 @@ }, "x-appwrite": { "method": "listVariables", - "weight": 310, + "weight": 311, "cookies": false, "type": "", "deprecated": false, @@ -10385,7 +10492,7 @@ }, "x-appwrite": { "method": "createVariable", - "weight": 309, + "weight": 310, "cookies": false, "type": "", "deprecated": false, @@ -10474,7 +10581,7 @@ }, "x-appwrite": { "method": "getVariable", - "weight": 311, + "weight": 312, "cookies": false, "type": "", "deprecated": false, @@ -10544,7 +10651,7 @@ }, "x-appwrite": { "method": "updateVariable", - "weight": 312, + "weight": 313, "cookies": false, "type": "", "deprecated": false, @@ -10633,7 +10740,7 @@ }, "x-appwrite": { "method": "deleteVariable", - "weight": 313, + "weight": 314, "cookies": false, "type": "", "deprecated": false, @@ -10705,7 +10812,7 @@ }, "x-appwrite": { "method": "query", - "weight": 331, + "weight": 332, "cookies": false, "type": "graphql", "deprecated": false, @@ -10783,7 +10890,7 @@ }, "x-appwrite": { "method": "mutation", - "weight": 330, + "weight": 331, "cookies": false, "type": "graphql", "deprecated": false, @@ -10861,7 +10968,7 @@ }, "x-appwrite": { "method": "get", - "weight": 125, + "weight": 126, "cookies": false, "type": "", "deprecated": false, @@ -10915,7 +11022,7 @@ }, "x-appwrite": { "method": "getAntivirus", - "weight": 147, + "weight": 148, "cookies": false, "type": "", "deprecated": false, @@ -10969,7 +11076,7 @@ }, "x-appwrite": { "method": "getCache", - "weight": 128, + "weight": 129, "cookies": false, "type": "", "deprecated": false, @@ -11023,7 +11130,7 @@ }, "x-appwrite": { "method": "getCertificate", - "weight": 134, + "weight": 135, "cookies": false, "type": "", "deprecated": false, @@ -11086,7 +11193,7 @@ }, "x-appwrite": { "method": "getDB", - "weight": 127, + "weight": 128, "cookies": false, "type": "", "deprecated": false, @@ -11140,7 +11247,7 @@ }, "x-appwrite": { "method": "getPubSub", - "weight": 130, + "weight": 131, "cookies": false, "type": "", "deprecated": false, @@ -11194,7 +11301,7 @@ }, "x-appwrite": { "method": "getQueue", - "weight": 129, + "weight": 130, "cookies": false, "type": "", "deprecated": false, @@ -11248,7 +11355,7 @@ }, "x-appwrite": { "method": "getQueueBuilds", - "weight": 136, + "weight": 137, "cookies": false, "type": "", "deprecated": false, @@ -11313,7 +11420,7 @@ }, "x-appwrite": { "method": "getQueueCertificates", - "weight": 135, + "weight": 136, "cookies": false, "type": "", "deprecated": false, @@ -11378,7 +11485,7 @@ }, "x-appwrite": { "method": "getQueueDatabases", - "weight": 137, + "weight": 138, "cookies": false, "type": "", "deprecated": false, @@ -11452,7 +11559,7 @@ }, "x-appwrite": { "method": "getQueueDeletes", - "weight": 138, + "weight": 139, "cookies": false, "type": "", "deprecated": false, @@ -11517,7 +11624,7 @@ }, "x-appwrite": { "method": "getFailedJobs", - "weight": 148, + "weight": 149, "cookies": false, "type": "", "deprecated": false, @@ -11606,7 +11713,7 @@ }, "x-appwrite": { "method": "getQueueFunctions", - "weight": 142, + "weight": 143, "cookies": false, "type": "", "deprecated": false, @@ -11671,7 +11778,7 @@ }, "x-appwrite": { "method": "getQueueLogs", - "weight": 133, + "weight": 134, "cookies": false, "type": "", "deprecated": false, @@ -11736,7 +11843,7 @@ }, "x-appwrite": { "method": "getQueueMails", - "weight": 139, + "weight": 140, "cookies": false, "type": "", "deprecated": false, @@ -11801,7 +11908,7 @@ }, "x-appwrite": { "method": "getQueueMessaging", - "weight": 140, + "weight": 141, "cookies": false, "type": "", "deprecated": false, @@ -11866,7 +11973,7 @@ }, "x-appwrite": { "method": "getQueueMigrations", - "weight": 141, + "weight": 142, "cookies": false, "type": "", "deprecated": false, @@ -11931,7 +12038,7 @@ }, "x-appwrite": { "method": "getQueueUsage", - "weight": 143, + "weight": 144, "cookies": false, "type": "", "deprecated": false, @@ -11996,7 +12103,7 @@ }, "x-appwrite": { "method": "getQueueUsageDump", - "weight": 144, + "weight": 145, "cookies": false, "type": "", "deprecated": false, @@ -12061,7 +12168,7 @@ }, "x-appwrite": { "method": "getQueueWebhooks", - "weight": 132, + "weight": 133, "cookies": false, "type": "", "deprecated": false, @@ -12126,7 +12233,7 @@ }, "x-appwrite": { "method": "getStorage", - "weight": 146, + "weight": 147, "cookies": false, "type": "", "deprecated": false, @@ -12180,7 +12287,7 @@ }, "x-appwrite": { "method": "getStorageLocal", - "weight": 145, + "weight": 146, "cookies": false, "type": "", "deprecated": false, @@ -12234,7 +12341,7 @@ }, "x-appwrite": { "method": "getTime", - "weight": 131, + "weight": 132, "cookies": false, "type": "", "deprecated": false, @@ -12288,7 +12395,7 @@ }, "x-appwrite": { "method": "get", - "weight": 117, + "weight": 118, "cookies": false, "type": "", "deprecated": false, @@ -12346,7 +12453,7 @@ }, "x-appwrite": { "method": "listCodes", - "weight": 118, + "weight": 119, "cookies": false, "type": "", "deprecated": false, @@ -12404,7 +12511,7 @@ }, "x-appwrite": { "method": "listContinents", - "weight": 122, + "weight": 123, "cookies": false, "type": "", "deprecated": false, @@ -12462,7 +12569,7 @@ }, "x-appwrite": { "method": "listCountries", - "weight": 119, + "weight": 120, "cookies": false, "type": "", "deprecated": false, @@ -12520,7 +12627,7 @@ }, "x-appwrite": { "method": "listCountriesEU", - "weight": 120, + "weight": 121, "cookies": false, "type": "", "deprecated": false, @@ -12578,7 +12685,7 @@ }, "x-appwrite": { "method": "listCountriesPhones", - "weight": 121, + "weight": 122, "cookies": false, "type": "", "deprecated": false, @@ -12636,7 +12743,7 @@ }, "x-appwrite": { "method": "listCurrencies", - "weight": 123, + "weight": 124, "cookies": false, "type": "", "deprecated": false, @@ -12694,7 +12801,7 @@ }, "x-appwrite": { "method": "listLanguages", - "weight": 124, + "weight": 125, "cookies": false, "type": "", "deprecated": false, @@ -12752,7 +12859,7 @@ }, "x-appwrite": { "method": "listMessages", - "weight": 390, + "weight": 391, "cookies": false, "type": "", "deprecated": false, @@ -12830,7 +12937,7 @@ }, "x-appwrite": { "method": "createEmail", - "weight": 387, + "weight": 388, "cookies": false, "type": "", "deprecated": false, @@ -12991,7 +13098,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 394, + "weight": 395, "cookies": false, "type": "", "deprecated": false, @@ -13149,7 +13256,7 @@ }, "x-appwrite": { "method": "createPush", - "weight": 389, + "weight": 390, "cookies": false, "type": "", "deprecated": false, @@ -13325,7 +13432,7 @@ }, "x-appwrite": { "method": "updatePush", - "weight": 396, + "weight": 397, "cookies": false, "type": "", "deprecated": false, @@ -13498,7 +13605,7 @@ }, "x-appwrite": { "method": "createSms", - "weight": 388, + "weight": 389, "cookies": false, "type": "", "deprecated": false, @@ -13619,7 +13726,7 @@ }, "x-appwrite": { "method": "updateSms", - "weight": 395, + "weight": 396, "cookies": false, "type": "", "deprecated": false, @@ -13738,7 +13845,7 @@ }, "x-appwrite": { "method": "getMessage", - "weight": 393, + "weight": 394, "cookies": false, "type": "", "deprecated": false, @@ -13798,7 +13905,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 397, + "weight": 398, "cookies": false, "type": "", "deprecated": false, @@ -13863,7 +13970,7 @@ }, "x-appwrite": { "method": "listMessageLogs", - "weight": 391, + "weight": 392, "cookies": false, "type": "", "deprecated": false, @@ -13940,7 +14047,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 392, + "weight": 393, "cookies": false, "type": "", "deprecated": false, @@ -14017,7 +14124,7 @@ }, "x-appwrite": { "method": "listProviders", - "weight": 362, + "weight": 363, "cookies": false, "type": "", "deprecated": false, @@ -14095,7 +14202,7 @@ }, "x-appwrite": { "method": "createApnsProvider", - "weight": 361, + "weight": 362, "cookies": false, "type": "", "deprecated": false, @@ -14213,7 +14320,7 @@ }, "x-appwrite": { "method": "updateApnsProvider", - "weight": 374, + "weight": 375, "cookies": false, "type": "", "deprecated": false, @@ -14329,7 +14436,7 @@ }, "x-appwrite": { "method": "createFcmProvider", - "weight": 360, + "weight": 361, "cookies": false, "type": "", "deprecated": false, @@ -14423,7 +14530,7 @@ }, "x-appwrite": { "method": "updateFcmProvider", - "weight": 373, + "weight": 374, "cookies": false, "type": "", "deprecated": false, @@ -14515,7 +14622,7 @@ }, "x-appwrite": { "method": "createMailgunProvider", - "weight": 352, + "weight": 353, "cookies": false, "type": "", "deprecated": false, @@ -14645,7 +14752,7 @@ }, "x-appwrite": { "method": "updateMailgunProvider", - "weight": 365, + "weight": 366, "cookies": false, "type": "", "deprecated": false, @@ -14773,7 +14880,7 @@ }, "x-appwrite": { "method": "createMsg91Provider", - "weight": 355, + "weight": 356, "cookies": false, "type": "", "deprecated": false, @@ -14879,7 +14986,7 @@ }, "x-appwrite": { "method": "updateMsg91Provider", - "weight": 368, + "weight": 369, "cookies": false, "type": "", "deprecated": false, @@ -14983,7 +15090,7 @@ }, "x-appwrite": { "method": "createSendgridProvider", - "weight": 353, + "weight": 354, "cookies": false, "type": "", "deprecated": false, @@ -15101,7 +15208,7 @@ }, "x-appwrite": { "method": "updateSendgridProvider", - "weight": 366, + "weight": 367, "cookies": false, "type": "", "deprecated": false, @@ -15217,7 +15324,7 @@ }, "x-appwrite": { "method": "createSmtpProvider", - "weight": 354, + "weight": 355, "cookies": false, "type": "", "deprecated": false, @@ -15379,7 +15486,7 @@ }, "x-appwrite": { "method": "updateSmtpProvider", - "weight": 367, + "weight": 368, "cookies": false, "type": "", "deprecated": false, @@ -15538,7 +15645,7 @@ }, "x-appwrite": { "method": "createTelesignProvider", - "weight": 356, + "weight": 357, "cookies": false, "type": "", "deprecated": false, @@ -15644,7 +15751,7 @@ }, "x-appwrite": { "method": "updateTelesignProvider", - "weight": 369, + "weight": 370, "cookies": false, "type": "", "deprecated": false, @@ -15748,7 +15855,7 @@ }, "x-appwrite": { "method": "createTextmagicProvider", - "weight": 357, + "weight": 358, "cookies": false, "type": "", "deprecated": false, @@ -15854,7 +15961,7 @@ }, "x-appwrite": { "method": "updateTextmagicProvider", - "weight": 370, + "weight": 371, "cookies": false, "type": "", "deprecated": false, @@ -15958,7 +16065,7 @@ }, "x-appwrite": { "method": "createTwilioProvider", - "weight": 358, + "weight": 359, "cookies": false, "type": "", "deprecated": false, @@ -16064,7 +16171,7 @@ }, "x-appwrite": { "method": "updateTwilioProvider", - "weight": 371, + "weight": 372, "cookies": false, "type": "", "deprecated": false, @@ -16168,7 +16275,7 @@ }, "x-appwrite": { "method": "createVonageProvider", - "weight": 359, + "weight": 360, "cookies": false, "type": "", "deprecated": false, @@ -16274,7 +16381,7 @@ }, "x-appwrite": { "method": "updateVonageProvider", - "weight": 372, + "weight": 373, "cookies": false, "type": "", "deprecated": false, @@ -16378,7 +16485,7 @@ }, "x-appwrite": { "method": "getProvider", - "weight": 364, + "weight": 365, "cookies": false, "type": "", "deprecated": false, @@ -16438,7 +16545,7 @@ }, "x-appwrite": { "method": "deleteProvider", - "weight": 375, + "weight": 376, "cookies": false, "type": "", "deprecated": false, @@ -16503,7 +16610,7 @@ }, "x-appwrite": { "method": "listProviderLogs", - "weight": 363, + "weight": 364, "cookies": false, "type": "", "deprecated": false, @@ -16580,7 +16687,7 @@ }, "x-appwrite": { "method": "listSubscriberLogs", - "weight": 384, + "weight": 385, "cookies": false, "type": "", "deprecated": false, @@ -16657,7 +16764,7 @@ }, "x-appwrite": { "method": "listTopics", - "weight": 377, + "weight": 378, "cookies": false, "type": "", "deprecated": false, @@ -16733,7 +16840,7 @@ }, "x-appwrite": { "method": "createTopic", - "weight": 376, + "weight": 377, "cookies": false, "type": "", "deprecated": false, @@ -16826,7 +16933,7 @@ }, "x-appwrite": { "method": "getTopic", - "weight": 379, + "weight": 380, "cookies": false, "type": "", "deprecated": false, @@ -16889,7 +16996,7 @@ }, "x-appwrite": { "method": "updateTopic", - "weight": 380, + "weight": 381, "cookies": false, "type": "", "deprecated": false, @@ -16973,7 +17080,7 @@ }, "x-appwrite": { "method": "deleteTopic", - "weight": 381, + "weight": 382, "cookies": false, "type": "", "deprecated": false, @@ -17038,7 +17145,7 @@ }, "x-appwrite": { "method": "listTopicLogs", - "weight": 378, + "weight": 379, "cookies": false, "type": "", "deprecated": false, @@ -17115,7 +17222,7 @@ }, "x-appwrite": { "method": "listSubscribers", - "weight": 383, + "weight": 384, "cookies": false, "type": "", "deprecated": false, @@ -17199,7 +17306,7 @@ }, "x-appwrite": { "method": "createSubscriber", - "weight": 382, + "weight": 383, "cookies": false, "type": "", "deprecated": false, @@ -17293,7 +17400,7 @@ }, "x-appwrite": { "method": "getSubscriber", - "weight": 385, + "weight": 386, "cookies": false, "type": "", "deprecated": false, @@ -17361,7 +17468,7 @@ }, "x-appwrite": { "method": "deleteSubscriber", - "weight": 386, + "weight": 387, "cookies": false, "type": "", "deprecated": false, @@ -17438,7 +17545,7 @@ }, "x-appwrite": { "method": "listBuckets", - "weight": 203, + "weight": 204, "cookies": false, "type": "", "deprecated": false, @@ -17513,7 +17620,7 @@ }, "x-appwrite": { "method": "createBucket", - "weight": 202, + "weight": 203, "cookies": false, "type": "", "deprecated": false, @@ -17655,7 +17762,7 @@ }, "x-appwrite": { "method": "getBucket", - "weight": 204, + "weight": 205, "cookies": false, "type": "", "deprecated": false, @@ -17717,7 +17824,7 @@ }, "x-appwrite": { "method": "updateBucket", - "weight": 205, + "weight": 206, "cookies": false, "type": "", "deprecated": false, @@ -17853,7 +17960,7 @@ }, "x-appwrite": { "method": "deleteBucket", - "weight": 206, + "weight": 207, "cookies": false, "type": "", "deprecated": false, @@ -17917,7 +18024,7 @@ }, "x-appwrite": { "method": "listFiles", - "weight": 208, + "weight": 209, "cookies": false, "type": "", "deprecated": false, @@ -18004,7 +18111,7 @@ }, "x-appwrite": { "method": "createFile", - "weight": 207, + "weight": 208, "cookies": false, "type": "upload", "deprecated": false, @@ -18100,7 +18207,7 @@ }, "x-appwrite": { "method": "getFile", - "weight": 209, + "weight": 210, "cookies": false, "type": "", "deprecated": false, @@ -18174,7 +18281,7 @@ }, "x-appwrite": { "method": "updateFile", - "weight": 214, + "weight": 215, "cookies": false, "type": "", "deprecated": false, @@ -18267,7 +18374,7 @@ }, "x-appwrite": { "method": "deleteFile", - "weight": 215, + "weight": 216, "cookies": false, "type": "", "deprecated": false, @@ -18343,7 +18450,7 @@ }, "x-appwrite": { "method": "getFileDownload", - "weight": 211, + "weight": 212, "cookies": false, "type": "location", "deprecated": false, @@ -18419,7 +18526,7 @@ }, "x-appwrite": { "method": "getFilePreview", - "weight": 210, + "weight": 211, "cookies": false, "type": "location", "deprecated": false, @@ -18622,7 +18729,7 @@ }, "x-appwrite": { "method": "getFileView", - "weight": 212, + "weight": 213, "cookies": false, "type": "location", "deprecated": false, @@ -18698,7 +18805,7 @@ }, "x-appwrite": { "method": "list", - "weight": 219, + "weight": 220, "cookies": false, "type": "", "deprecated": false, @@ -18777,7 +18884,7 @@ }, "x-appwrite": { "method": "create", - "weight": 218, + "weight": 219, "cookies": false, "type": "", "deprecated": false, @@ -18873,7 +18980,7 @@ }, "x-appwrite": { "method": "get", - "weight": 220, + "weight": 221, "cookies": false, "type": "", "deprecated": false, @@ -18939,7 +19046,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 222, + "weight": 223, "cookies": false, "type": "", "deprecated": false, @@ -19018,7 +19125,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 224, + "weight": 225, "cookies": false, "type": "", "deprecated": false, @@ -19086,7 +19193,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 226, + "weight": 227, "cookies": false, "type": "", "deprecated": false, @@ -19173,7 +19280,7 @@ }, "x-appwrite": { "method": "createMembership", - "weight": 225, + "weight": 226, "cookies": false, "type": "", "deprecated": false, @@ -19292,7 +19399,7 @@ }, "x-appwrite": { "method": "getMembership", - "weight": 227, + "weight": 228, "cookies": false, "type": "", "deprecated": false, @@ -19366,7 +19473,7 @@ }, "x-appwrite": { "method": "updateMembership", - "weight": 228, + "weight": 229, "cookies": false, "type": "", "deprecated": false, @@ -19456,7 +19563,7 @@ }, "x-appwrite": { "method": "deleteMembership", - "weight": 230, + "weight": 231, "cookies": false, "type": "", "deprecated": false, @@ -19532,7 +19639,7 @@ }, "x-appwrite": { "method": "updateMembershipStatus", - "weight": 229, + "weight": 230, "cookies": false, "type": "", "deprecated": false, @@ -19631,7 +19738,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 221, + "weight": 222, "cookies": false, "type": "", "deprecated": false, @@ -19695,7 +19802,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 223, + "weight": 224, "cookies": false, "type": "", "deprecated": false, @@ -19779,7 +19886,7 @@ }, "x-appwrite": { "method": "list", - "weight": 241, + "weight": 242, "cookies": false, "type": "", "deprecated": false, @@ -19854,7 +19961,7 @@ }, "x-appwrite": { "method": "create", - "weight": 232, + "weight": 233, "cookies": false, "type": "", "deprecated": false, @@ -19952,7 +20059,7 @@ }, "x-appwrite": { "method": "createArgon2User", - "weight": 235, + "weight": 236, "cookies": false, "type": "", "deprecated": false, @@ -20046,7 +20153,7 @@ }, "x-appwrite": { "method": "createBcryptUser", - "weight": 233, + "weight": 234, "cookies": false, "type": "", "deprecated": false, @@ -20140,7 +20247,7 @@ }, "x-appwrite": { "method": "listIdentities", - "weight": 249, + "weight": 250, "cookies": false, "type": "", "deprecated": false, @@ -20212,7 +20319,7 @@ }, "x-appwrite": { "method": "deleteIdentity", - "weight": 272, + "weight": 273, "cookies": false, "type": "", "deprecated": false, @@ -20276,7 +20383,7 @@ }, "x-appwrite": { "method": "createMD5User", - "weight": 234, + "weight": 235, "cookies": false, "type": "", "deprecated": false, @@ -20370,7 +20477,7 @@ }, "x-appwrite": { "method": "createPHPassUser", - "weight": 237, + "weight": 238, "cookies": false, "type": "", "deprecated": false, @@ -20464,7 +20571,7 @@ }, "x-appwrite": { "method": "createScryptUser", - "weight": 238, + "weight": 239, "cookies": false, "type": "", "deprecated": false, @@ -20593,7 +20700,7 @@ }, "x-appwrite": { "method": "createScryptModifiedUser", - "weight": 239, + "weight": 240, "cookies": false, "type": "", "deprecated": false, @@ -20708,7 +20815,7 @@ }, "x-appwrite": { "method": "createSHAUser", - "weight": 236, + "weight": 237, "cookies": false, "type": "", "deprecated": false, @@ -20823,7 +20930,7 @@ }, "x-appwrite": { "method": "get", - "weight": 242, + "weight": 243, "cookies": false, "type": "", "deprecated": false, @@ -20880,7 +20987,7 @@ }, "x-appwrite": { "method": "delete", - "weight": 270, + "weight": 271, "cookies": false, "type": "", "deprecated": false, @@ -20944,7 +21051,7 @@ }, "x-appwrite": { "method": "updateEmail", - "weight": 255, + "weight": 256, "cookies": false, "type": "", "deprecated": false, @@ -21026,7 +21133,7 @@ }, "x-appwrite": { "method": "createJWT", - "weight": 273, + "weight": 274, "cookies": false, "type": "", "deprecated": false, @@ -21111,7 +21218,7 @@ }, "x-appwrite": { "method": "updateLabels", - "weight": 251, + "weight": 252, "cookies": false, "type": "", "deprecated": false, @@ -21196,7 +21303,7 @@ }, "x-appwrite": { "method": "listLogs", - "weight": 247, + "weight": 248, "cookies": false, "type": "", "deprecated": false, @@ -21272,7 +21379,7 @@ }, "x-appwrite": { "method": "listMemberships", - "weight": 246, + "weight": 247, "cookies": false, "type": "", "deprecated": false, @@ -21336,7 +21443,7 @@ }, "x-appwrite": { "method": "updateMfa", - "weight": 260, + "weight": 261, "cookies": false, "type": "", "deprecated": false, @@ -21418,7 +21525,7 @@ }, "x-appwrite": { "method": "deleteMfaAuthenticator", - "weight": 265, + "weight": 266, "cookies": false, "type": "", "deprecated": false, @@ -21495,7 +21602,7 @@ }, "x-appwrite": { "method": "listMfaFactors", - "weight": 261, + "weight": 262, "cookies": false, "type": "", "deprecated": false, @@ -21559,7 +21666,7 @@ }, "x-appwrite": { "method": "getMfaRecoveryCodes", - "weight": 262, + "weight": 263, "cookies": false, "type": "", "deprecated": false, @@ -21621,7 +21728,7 @@ }, "x-appwrite": { "method": "updateMfaRecoveryCodes", - "weight": 264, + "weight": 265, "cookies": false, "type": "", "deprecated": false, @@ -21683,7 +21790,7 @@ }, "x-appwrite": { "method": "createMfaRecoveryCodes", - "weight": 263, + "weight": 264, "cookies": false, "type": "", "deprecated": false, @@ -21747,7 +21854,7 @@ }, "x-appwrite": { "method": "updateName", - "weight": 253, + "weight": 254, "cookies": false, "type": "", "deprecated": false, @@ -21829,7 +21936,7 @@ }, "x-appwrite": { "method": "updatePassword", - "weight": 254, + "weight": 255, "cookies": false, "type": "", "deprecated": false, @@ -21911,7 +22018,7 @@ }, "x-appwrite": { "method": "updatePhone", - "weight": 256, + "weight": 257, "cookies": false, "type": "", "deprecated": false, @@ -21993,7 +22100,7 @@ }, "x-appwrite": { "method": "getPrefs", - "weight": 243, + "weight": 244, "cookies": false, "type": "", "deprecated": false, @@ -22055,7 +22162,7 @@ }, "x-appwrite": { "method": "updatePrefs", - "weight": 258, + "weight": 259, "cookies": false, "type": "", "deprecated": false, @@ -22137,7 +22244,7 @@ }, "x-appwrite": { "method": "listSessions", - "weight": 245, + "weight": 246, "cookies": false, "type": "", "deprecated": false, @@ -22199,7 +22306,7 @@ }, "x-appwrite": { "method": "createSession", - "weight": 266, + "weight": 267, "cookies": false, "type": "", "deprecated": false, @@ -22256,7 +22363,7 @@ }, "x-appwrite": { "method": "deleteSessions", - "weight": 269, + "weight": 270, "cookies": false, "type": "", "deprecated": false, @@ -22315,7 +22422,7 @@ }, "x-appwrite": { "method": "deleteSession", - "weight": 268, + "weight": 269, "cookies": false, "type": "", "deprecated": false, @@ -22387,7 +22494,7 @@ }, "x-appwrite": { "method": "updateStatus", - "weight": 250, + "weight": 251, "cookies": false, "type": "", "deprecated": false, @@ -22469,7 +22576,7 @@ }, "x-appwrite": { "method": "listTargets", - "weight": 248, + "weight": 249, "cookies": false, "type": "", "deprecated": false, @@ -22544,7 +22651,7 @@ }, "x-appwrite": { "method": "createTarget", - "weight": 240, + "weight": 241, "cookies": false, "type": "", "deprecated": false, @@ -22660,7 +22767,7 @@ }, "x-appwrite": { "method": "getTarget", - "weight": 244, + "weight": 245, "cookies": false, "type": "", "deprecated": false, @@ -22731,7 +22838,7 @@ }, "x-appwrite": { "method": "updateTarget", - "weight": 259, + "weight": 260, "cookies": false, "type": "", "deprecated": false, @@ -22826,7 +22933,7 @@ }, "x-appwrite": { "method": "deleteTarget", - "weight": 271, + "weight": 272, "cookies": false, "type": "", "deprecated": false, @@ -22899,7 +23006,7 @@ }, "x-appwrite": { "method": "createToken", - "weight": 267, + "weight": 268, "cookies": false, "type": "", "deprecated": false, @@ -22984,7 +23091,7 @@ }, "x-appwrite": { "method": "updateEmailVerification", - "weight": 257, + "weight": 258, "cookies": false, "type": "", "deprecated": false, @@ -23066,7 +23173,7 @@ }, "x-appwrite": { "method": "updatePhoneVerification", - "weight": 252, + "weight": 253, "cookies": false, "type": "", "deprecated": false, From 92c93357cf376fdea1bcec5d91273bc70f814d17 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 12 Nov 2024 11:41:08 +0900 Subject: [PATCH 03/11] Address Jake's Comments --- app/controllers/api/databases.php | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 5c3baf3b63..9e458fb877 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3689,14 +3689,13 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum }); App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') - ->alias('/v1/database/collections/:collectionId/documents') ->desc('Update documents') ->groups(['api', 'database']) ->label('event', 'databases.[databaseId].collections.[collectionId].documents.update') ->label('scope', 'documents.write') ->label('resourceType', RESOURCE_TYPE_DATABASES) ->label('audits.event', 'documents.update') - ->label('audits.resource', 'database/{request.databaseId}/collection/{request.collectionId}/document/{response.$id}') + ->label('audits.resource', 'database/{request.databaseId}/collection/{request.collectionId}') ->label('abuse-key', 'ip:{ip},method:{method},url:{url},userId:{userId}') ->label('abuse-limit', APP_LIMIT_WRITE_RATE_DEFAULT * 2) ->label('abuse-time', APP_LIMIT_WRITE_RATE_PERIOD_DEFAULT) @@ -3706,7 +3705,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->label('sdk.description', '/docs/references/databases/update-documents.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_DOCUMENT_LIST) + ->label('sdk.response.model', Response::MODEL_BULK_OPERATION) ->label('sdk.offline.model', '/databases/{databaseId}/collections/{collectionId}/documents') ->param('databaseId', '', new UID(), 'Database ID.') ->param('collectionId', '', new UID(), 'Collection ID.') @@ -3740,11 +3739,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') throw new Exception(Exception::COLLECTION_NOT_FOUND); } - try { - $queries = Query::parseQueries($queries); - } catch (QueryException $e) { - throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); - } + $queries = Query::parseQueries($queries); // Map aggregate permissions into the multiple permissions they represent. $permissions = Permission::aggregate($permissions, [ @@ -3793,16 +3788,15 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') throw new Exception(Exception::COLLECTION_NOT_FOUND); } - $response->dynamic(new Document([ - 'modified' => $modified - ]), Response::MODEL_BULK_OPERATION); - $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setContext('collection', $collection) - ->setContext('database', $database) - ->setPayload($response->getPayload()); + ->setContext('database', $database); + + $response->dynamic(new Document([ + 'modified' => $modified + ]), Response::MODEL_BULK_OPERATION); }); App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:documentId') From dd6bd745dfb54e5e12422618ad306496d18cec8a Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Wed, 13 Nov 2024 13:41:18 +0900 Subject: [PATCH 04/11] Address Comments, fix permission bug --- app/controllers/api/databases.php | 3 + composer.lock | 86 +++++++++---------- .../e2e/Services/Databases/DatabasesBase.php | 77 ++++++++++++++--- .../Databases/DatabasesCustomClientTest.php | 8 +- 4 files changed, 116 insertions(+), 58 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 9e458fb877..4e991574c4 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3769,6 +3769,9 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') } } + if (!\is_null($permissions)) { + $data['$permissions'] = $permissions; + } $partialDocument = new Document($data); try { diff --git a/composer.lock b/composer.lock index 5a61332b2a..8f9d71ea59 100644 --- a/composer.lock +++ b/composer.lock @@ -2222,16 +2222,16 @@ }, { "name": "utopia-php/migration", - "version": "0.6.11", + "version": "0.6.12", "source": { "type": "git", "url": "https://github.com/utopia-php/migration.git", - "reference": "4d167914d3f7fa1fe816b2b2c6f221e70166bfd7" + "reference": "9a8c905af4cece5c5ec9542a5b534befce067260" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/migration/zipball/4d167914d3f7fa1fe816b2b2c6f221e70166bfd7", - "reference": "4d167914d3f7fa1fe816b2b2c6f221e70166bfd7", + "url": "https://api.github.com/repos/utopia-php/migration/zipball/9a8c905af4cece5c5ec9542a5b534befce067260", + "reference": "9a8c905af4cece5c5ec9542a5b534befce067260", "shasum": "" }, "require": { @@ -2272,9 +2272,9 @@ ], "support": { "issues": "https://github.com/utopia-php/migration/issues", - "source": "https://github.com/utopia-php/migration/tree/0.6.11" + "source": "https://github.com/utopia-php/migration/tree/0.6.12" }, - "time": "2024-10-31T06:19:57+00:00" + "time": "2024-11-12T00:31:53+00:00" }, { "name": "utopia-php/mongo", @@ -2542,16 +2542,16 @@ }, { "name": "utopia-php/queue", - "version": "0.7.1", + "version": "0.7.2", "source": { "type": "git", "url": "https://github.com/utopia-php/queue.git", - "reference": "94c240d9f6383829807ce7b2d737f04b159fd3e8" + "reference": "40fdd9799d0a11dd33fca06f8223032a47dce2f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/queue/zipball/94c240d9f6383829807ce7b2d737f04b159fd3e8", - "reference": "94c240d9f6383829807ce7b2d737f04b159fd3e8", + "url": "https://api.github.com/repos/utopia-php/queue/zipball/40fdd9799d0a11dd33fca06f8223032a47dce2f6", + "reference": "40fdd9799d0a11dd33fca06f8223032a47dce2f6", "shasum": "" }, "require": { @@ -2597,9 +2597,9 @@ ], "support": { "issues": "https://github.com/utopia-php/queue/issues", - "source": "https://github.com/utopia-php/queue/tree/0.7.1" + "source": "https://github.com/utopia-php/queue/tree/0.7.2" }, - "time": "2024-11-05T17:00:38+00:00" + "time": "2024-11-11T10:04:02+00:00" }, { "name": "utopia-php/registry", @@ -2817,16 +2817,16 @@ }, { "name": "utopia-php/vcs", - "version": "0.8.3", + "version": "0.8.5", "source": { "type": "git", "url": "https://github.com/utopia-php/vcs.git", - "reference": "a032ed0611a8f4467aeaa9484f73223074457337" + "reference": "7622330628d53844a3873ca873338150756bab82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/vcs/zipball/a032ed0611a8f4467aeaa9484f73223074457337", - "reference": "a032ed0611a8f4467aeaa9484f73223074457337", + "url": "https://api.github.com/repos/utopia-php/vcs/zipball/7622330628d53844a3873ca873338150756bab82", + "reference": "7622330628d53844a3873ca873338150756bab82", "shasum": "" }, "require": { @@ -2860,9 +2860,9 @@ ], "support": { "issues": "https://github.com/utopia-php/vcs/issues", - "source": "https://github.com/utopia-php/vcs/tree/0.8.3" + "source": "https://github.com/utopia-php/vcs/tree/0.8.5" }, - "time": "2024-11-05T17:10:09+00:00" + "time": "2024-11-11T18:33:10+00:00" }, { "name": "utopia-php/websocket", @@ -4051,16 +4051,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.5.1", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "0c70d2c566e899666f367ab7b80986beb3581e6f" + "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/0c70d2c566e899666f367ab7b80986beb3581e6f", - "reference": "0c70d2c566e899666f367ab7b80986beb3581e6f", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c", + "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c", "shasum": "" }, "require": { @@ -4069,7 +4069,7 @@ "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", "webmozart/assert": "^1.9.1" }, "require-dev": { @@ -4109,9 +4109,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.5.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0" }, - "time": "2024-11-06T11:58:54+00:00" + "time": "2024-11-12T11:25:25+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -4242,30 +4242,30 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.33.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" + "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", - "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299", + "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^5.3.0", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", "symfony/process": "^5.2" }, "type": "library", @@ -4283,9 +4283,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0" }, - "time": "2024-10-13T11:25:22+00:00" + "time": "2024-10-13T11:29:49+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6923,16 +6923,16 @@ }, { "name": "twig/twig", - "version": "v3.14.1", + "version": "v3.14.2", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "f405356d20fb43603bcadc8b09bfb676cb04a379" + "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/f405356d20fb43603bcadc8b09bfb676cb04a379", - "reference": "f405356d20fb43603bcadc8b09bfb676cb04a379", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", + "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", "shasum": "" }, "require": { @@ -6986,7 +6986,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.1" + "source": "https://github.com/twigphp/Twig/tree/v3.14.2" }, "funding": [ { @@ -6998,7 +6998,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T18:17:38+00:00" + "time": "2024-11-07T12:36:22+00:00" }, { "name": "webmozart/glob", diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 6cb162e8f1..ea62ad2efc 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -4901,17 +4901,15 @@ trait DatabasesBase $this->assertEquals(200, $documents['headers']['status-code']); $this->assertEquals(10, $documents['body']['total']); - if ($this->getSide() === 'client') { - foreach ($documents['body']['documents'] as $document) { - $this->assertEquals([ - Permission::read(Role::user($this->getUser()['$id'])), - Permission::update(Role::user($this->getUser()['$id'])), - Permission::delete(Role::user($this->getUser()['$id'])), - ], $document['$permissions']); - } + foreach ($documents['body']['documents'] as $document) { + $this->assertEquals([ + Permission::read(Role::user($this->getUser()['$id'])), + Permission::update(Role::user($this->getUser()['$id'])), + Permission::delete(Role::user($this->getUser()['$id'])), + ], $document['$permissions']); } - // TEST: Update documents with query + // TEST: Check permissions persist $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -4919,6 +4917,37 @@ trait DatabasesBase 'data' => [ 'number' => 200 ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(10, $response['body']['modified']); + + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + Query::equal('number', [200])->toString(), + ]); + + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertEquals(10, $documents['body']['total']); + + foreach ($documents['body']['documents'] as $document) { + $this->assertEquals([ + Permission::read(Role::user($this->getUser()['$id'])), + Permission::update(Role::user($this->getUser()['$id'])), + Permission::delete(Role::user($this->getUser()['$id'])), + ], $document['$permissions']); + } + + // TEST: Update documents with limit + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 300 + ], 'queries' => [ Query::limit(5)->toString(), ], @@ -4943,7 +4972,7 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'data' => [ - 'number' => 200 + 'number' => 300 ], 'queries' => [ Query::offset(5)->toString(), @@ -4957,7 +4986,33 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [Query::equal('number', [200])->toString()] + 'queries' => [Query::equal('number', [300])->toString()] + ]); + + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertEquals(10, $documents['body']['total']); + + // TEST: Update documents with equals filter + $response = $this->client->call(Client::METHOD_PATCH, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'number' => 400 + ], + 'queries' => [ + Query::equal('number', [300])->toString(), + ], + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertEquals(10, $response['body']['modified']); + + $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [Query::equal('number', [400])->toString()] ]); $this->assertEquals(200, $documents['headers']['status-code']); diff --git a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php index 934ba92a3e..745a97caf3 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php @@ -992,7 +992,8 @@ class DatabasesCustomClientTest extends Scope 'number' => 6, ], 'permissions' => [ - Permission::update(Role::user('user2')) + Permission::update(Role::user('user2')), + Permission::read(Role::user($this->getUser()['$id'])), ] ]); @@ -1012,9 +1013,8 @@ class DatabasesCustomClientTest extends Scope $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ + 'x-appwrite-project' => $this->getProject()['$id'] + ], $this->getHeaders()), [ 'queries' => [Query::notEqual('number', 100)->toString()] ]); From c210b2b8741a53ab309948c565f71b48af9a3522 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 14 Nov 2024 17:16:39 +0900 Subject: [PATCH 05/11] Address Comments --- app/controllers/api/databases.php | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 4e991574c4..4514943745 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3774,22 +3774,14 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') } $partialDocument = new Document($data); - try { - $modified = $dbForProject->withRequestTimestamp( - $requestTimestamp, - fn () => $dbForProject->updateDocuments( - 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), - $partialDocument, - $queries - ) - ); - } catch (AuthorizationException) { - throw new Exception(Exception::USER_UNAUTHORIZED); - } catch (StructureException $e) { - throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, $e->getMessage()); - } catch (NotFoundException $e) { - throw new Exception(Exception::COLLECTION_NOT_FOUND); - } + $modified = $dbForProject->withRequestTimestamp( + $requestTimestamp, + fn () => $dbForProject->updateDocuments( + 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), + $partialDocument, + $queries + ) + ); $queueForEvents ->setParam('databaseId', $databaseId) From 67b95c4b39c892c51fec1a3b770ebabdf11e496c Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 22 Nov 2024 11:07:05 +0900 Subject: [PATCH 06/11] Update API Signature to DB Lib and get realtime/events working --- app/controllers/api/databases.php | 34 +- composer.json | 2 +- composer.lock | 2155 ++++++++++++++--- .../e2e/Services/Databases/DatabasesBase.php | 10 +- .../Databases/DatabasesCustomClientTest.php | 4 +- .../Realtime/RealtimeCustomClientTest.php | 73 + 6 files changed, 1939 insertions(+), 339 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 4514943745..1da2bd276d 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -4,6 +4,7 @@ use Appwrite\Auth\Auth; use Appwrite\Detector\Detector; use Appwrite\Event\Database as EventDatabase; use Appwrite\Event\Event; +use Appwrite\Event\Realtime; use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; @@ -3705,7 +3706,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->label('sdk.description', '/docs/references/databases/update-documents.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_BULK_OPERATION) + ->label('sdk.response.model', Response::MODEL_DOCUMENT_LIST) ->label('sdk.offline.model', '/databases/{databaseId}/collections/{collectionId}/documents') ->param('databaseId', '', new UID(), 'Database ID.') ->param('collectionId', '', new UID(), 'Collection ID.') @@ -3716,8 +3717,9 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('response') ->inject('dbForProject') ->inject('queueForEvents') - ->inject('mode') - ->action(function (string $databaseId, string $collectionId, string|array $data, ?array $permissions, array $queries, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, string $mode) { + ->inject('queueForRealtime') + ->inject('project') + ->action(function (string $databaseId, string $collectionId, string|array $data, ?array $permissions, array $queries, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, Realtime $queueForRealtime, Document $project) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array if (empty($data) && \is_null($permissions)) { @@ -3774,7 +3776,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') } $partialDocument = new Document($data); - $modified = $dbForProject->withRequestTimestamp( + $documents = $dbForProject->withRequestTimestamp( $requestTimestamp, fn () => $dbForProject->updateDocuments( 'database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), @@ -3789,9 +3791,29 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->setContext('collection', $collection) ->setContext('database', $database); + // Trigger all events, we do this manually since we have to trigger multiple. + foreach ($documents as $document) { + $document->setAttribute('$databaseId', $database->getId()); + $document->setAttribute('$collectionId', $collection->getId()); + + $queueForEvents + ->setProject($project) + ->setEvent('databases.[databaseId].collections.[collectionId].documents.[documentId].update') + ->setParam('documentId', $document->getId()) + ->setPayload($response->output($document, Response::MODEL_DOCUMENT)) + ->trigger(); + + if ($project->getId() !== 'console') { + $queueForRealtime + ->from($queueForEvents) + ->trigger(); + } + } + $response->dynamic(new Document([ - 'modified' => $modified - ]), Response::MODEL_BULK_OPERATION); + 'total' => \count($documents), + 'documents' => $documents + ]), Response::MODEL_DOCUMENT_LIST); }); App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:documentId') diff --git a/composer.json b/composer.json index 237e2e9562..b9cd44d1c4 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.53.17", + "utopia-php/database": "0.53.23", "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 8f9d71ea59..c68ab68db0 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": "971e88c7387ffd92d755772e0f4e7805", + "content-hash": "28e6c599d5da0991d373aba9f3988309", "packages": [ { "name": "adhocore/jwt", @@ -277,6 +277,66 @@ }, "time": "2024-07-15T13:18:35+00:00" }, + { + "name": "brick/math", + "version": "0.12.1", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "5.16.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.12.1" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-11-29T23:19:16+00:00" + }, { "name": "chillerlan/php-qrcode", "version": "4.3.4", @@ -422,6 +482,87 @@ ], "time": "2024-07-17T01:04:28+00:00" }, + { + "name": "composer/semver", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-09-19T14:15:21+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.3.2", @@ -567,29 +708,73 @@ "time": "2024-05-03T06:31:11+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.6", + "name": "google/protobuf", + "version": "v4.28.3", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + "url": "https://github.com/protocolbuffers/protobuf-php.git", + "reference": "c5c311e0f3d89928251ac5a2f0e3db283612c100" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/c5c311e0f3d89928251ac5a2f0e3db283612c100", + "reference": "c5c311e0f3d89928251ac5a2f0e3db283612c100", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": ">=5.0.0" + }, + "suggest": { + "ext-bcmath": "Need to support JSON deserialization" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Protobuf\\": "src/Google/Protobuf", + "GPBMetadata\\Google\\Protobuf\\": "src/GPBMetadata/Google/Protobuf" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "proto library for PHP", + "homepage": "https://developers.google.com/protocol-buffers/", + "keywords": [ + "proto" + ], + "support": { + "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.28.3" + }, + "time": "2024-10-22T22:27:17+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", "extra": { @@ -621,9 +806,9 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" }, - "time": "2024-03-08T09:58:59+00:00" + "time": "2024-11-18T16:19:46+00:00" }, { "name": "league/csv", @@ -906,6 +1091,553 @@ }, "time": "2019-09-10T13:16:29+00:00" }, + { + "name": "nyholm/psr7", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.2" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2024-09-09T07:06:30+00:00" + }, + { + "name": "nyholm/psr7-server", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7-server.git", + "reference": "4335801d851f554ca43fa6e7d2602141538854dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7-server/zipball/4335801d851f554ca43fa6e7d2602141538854dc", + "reference": "4335801d851f554ca43fa6e7d2602141538854dc", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "nyholm/nsa": "^1.1", + "nyholm/psr7": "^1.3", + "phpunit/phpunit": "^7.0 || ^8.5 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Nyholm\\Psr7Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "Helper classes to handle PSR-7 server requests", + "homepage": "http://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7-server/issues", + "source": "https://github.com/Nyholm/psr7-server/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2023-11-08T09:30:43+00:00" + }, + { + "name": "open-telemetry/api", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/opentelemetry-php/api.git", + "reference": "542064815d38a6df55af7957cd6f1d7d967c99c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opentelemetry-php/api/zipball/542064815d38a6df55af7957cd6f1d7d967c99c6", + "reference": "542064815d38a6df55af7957cd6f1d7d967c99c6", + "shasum": "" + }, + "require": { + "open-telemetry/context": "^1.0", + "php": "^8.1", + "psr/log": "^1.1|^2.0|^3.0", + "symfony/polyfill-php82": "^1.26" + }, + "conflict": { + "open-telemetry/sdk": "<=1.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1.x-dev" + }, + "spi": { + "OpenTelemetry\\API\\Instrumentation\\AutoInstrumentation\\HookManagerInterface": [ + "OpenTelemetry\\API\\Instrumentation\\AutoInstrumentation\\ExtensionHookManager" + ] + } + }, + "autoload": { + "files": [ + "Trace/functions.php" + ], + "psr-4": { + "OpenTelemetry\\API\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "description": "API for OpenTelemetry PHP.", + "keywords": [ + "Metrics", + "api", + "apm", + "logging", + "opentelemetry", + "otel", + "tracing" + ], + "support": { + "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", + "docs": "https://opentelemetry.io/docs/php", + "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", + "source": "https://github.com/open-telemetry/opentelemetry-php" + }, + "time": "2024-10-15T22:42:37+00:00" + }, + { + "name": "open-telemetry/context", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/opentelemetry-php/context.git", + "reference": "0cba875ea1953435f78aec7f1d75afa87bdbf7f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opentelemetry-php/context/zipball/0cba875ea1953435f78aec7f1d75afa87bdbf7f3", + "reference": "0cba875ea1953435f78aec7f1d75afa87bdbf7f3", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/polyfill-php82": "^1.26" + }, + "suggest": { + "ext-ffi": "To allow context switching in Fibers" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.0.x-dev" + } + }, + "autoload": { + "files": [ + "fiber/initialize_fiber_handler.php" + ], + "psr-4": { + "OpenTelemetry\\Context\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "description": "Context implementation for OpenTelemetry PHP.", + "keywords": [ + "Context", + "opentelemetry", + "otel" + ], + "support": { + "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", + "docs": "https://opentelemetry.io/docs/php", + "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", + "source": "https://github.com/open-telemetry/opentelemetry-php" + }, + "time": "2024-08-21T00:29:20+00:00" + }, + { + "name": "open-telemetry/exporter-otlp", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/opentelemetry-php/exporter-otlp.git", + "reference": "9b6de12204f25f8ab9540b46d6e7b5151897ce18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opentelemetry-php/exporter-otlp/zipball/9b6de12204f25f8ab9540b46d6e7b5151897ce18", + "reference": "9b6de12204f25f8ab9540b46d6e7b5151897ce18", + "shasum": "" + }, + "require": { + "open-telemetry/api": "^1.0", + "open-telemetry/gen-otlp-protobuf": "^1.1", + "open-telemetry/sdk": "^1.0", + "php": "^8.1", + "php-http/discovery": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.0.x-dev" + } + }, + "autoload": { + "files": [ + "_register.php" + ], + "psr-4": { + "OpenTelemetry\\Contrib\\Otlp\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "description": "OTLP exporter for OpenTelemetry.", + "keywords": [ + "Metrics", + "exporter", + "gRPC", + "http", + "opentelemetry", + "otel", + "otlp", + "tracing" + ], + "support": { + "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", + "docs": "https://opentelemetry.io/docs/php", + "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", + "source": "https://github.com/open-telemetry/opentelemetry-php" + }, + "time": "2024-04-30T18:28:30+00:00" + }, + { + "name": "open-telemetry/gen-otlp-protobuf", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/opentelemetry-php/gen-otlp-protobuf.git", + "reference": "66c3b98e998a726691c92e6405a82e6e7b8b169d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opentelemetry-php/gen-otlp-protobuf/zipball/66c3b98e998a726691c92e6405a82e6e7b8b169d", + "reference": "66c3b98e998a726691c92e6405a82e6e7b8b169d", + "shasum": "" + }, + "require": { + "google/protobuf": "^3.22 || ^4.0", + "php": "^8.0" + }, + "suggest": { + "ext-protobuf": "For better performance, when dealing with the protobuf format" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Opentelemetry\\Proto\\": "Opentelemetry/Proto/", + "GPBMetadata\\Opentelemetry\\": "GPBMetadata/Opentelemetry/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "description": "PHP protobuf files for communication with OpenTelemetry OTLP collectors/servers.", + "keywords": [ + "Metrics", + "apm", + "gRPC", + "logging", + "opentelemetry", + "otel", + "otlp", + "protobuf", + "tracing" + ], + "support": { + "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", + "docs": "https://opentelemetry.io/docs/php", + "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", + "source": "https://github.com/open-telemetry/opentelemetry-php" + }, + "time": "2024-10-30T11:49:49+00:00" + }, + { + "name": "open-telemetry/sdk", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/opentelemetry-php/sdk.git", + "reference": "fb0ff8d8279a3776bd604791e2531dd0cc147e8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opentelemetry-php/sdk/zipball/fb0ff8d8279a3776bd604791e2531dd0cc147e8b", + "reference": "fb0ff8d8279a3776bd604791e2531dd0cc147e8b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "nyholm/psr7-server": "^1.1", + "open-telemetry/api": "~1.0 || ~1.1", + "open-telemetry/context": "^1.0", + "open-telemetry/sem-conv": "^1.0", + "php": "^8.1", + "php-http/discovery": "^1.14", + "psr/http-client": "^1.0", + "psr/http-client-implementation": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/http-message": "^1.0.1|^2.0", + "psr/log": "^1.1|^2.0|^3.0", + "ramsey/uuid": "^3.0 || ^4.0", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php82": "^1.26", + "tbachert/spi": "^1.0.1" + }, + "suggest": { + "ext-gmp": "To support unlimited number of synchronous metric readers", + "ext-mbstring": "To increase performance of string operations", + "open-telemetry/sdk-configuration": "File-based OpenTelemetry SDK configuration" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.0.x-dev" + }, + "spi": { + "OpenTelemetry\\API\\Instrumentation\\AutoInstrumentation\\HookManagerInterface": [ + "OpenTelemetry\\API\\Instrumentation\\AutoInstrumentation\\ExtensionHookManager" + ] + } + }, + "autoload": { + "files": [ + "Common/Util/functions.php", + "Logs/Exporter/_register.php", + "Metrics/MetricExporter/_register.php", + "Propagation/_register.php", + "Trace/SpanExporter/_register.php", + "Common/Dev/Compatibility/_load.php", + "_autoload.php" + ], + "psr-4": { + "OpenTelemetry\\SDK\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "description": "SDK for OpenTelemetry PHP.", + "keywords": [ + "Metrics", + "apm", + "logging", + "opentelemetry", + "otel", + "sdk", + "tracing" + ], + "support": { + "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", + "docs": "https://opentelemetry.io/docs/php", + "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", + "source": "https://github.com/open-telemetry/opentelemetry-php" + }, + "time": "2024-10-18T21:01:35+00:00" + }, + { + "name": "open-telemetry/sem-conv", + "version": "1.27.1", + "source": { + "type": "git", + "url": "https://github.com/opentelemetry-php/sem-conv.git", + "reference": "1dba705fea74bc0718d04be26090e3697e56f4e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/1dba705fea74bc0718d04be26090e3697e56f4e6", + "reference": "1dba705fea74bc0718d04be26090e3697e56f4e6", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenTelemetry\\SemConv\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "description": "Semantic conventions for OpenTelemetry PHP.", + "keywords": [ + "Metrics", + "apm", + "logging", + "opentelemetry", + "otel", + "semantic conventions", + "semconv", + "tracing" + ], + "support": { + "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", + "docs": "https://opentelemetry.io/docs/php", + "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" + }, { "name": "paragonie/constant_time_encoding", "version": "v2.7.0", @@ -973,6 +1705,85 @@ }, "time": "2024-05-08T12:18:48+00:00" }, + { + "name": "php-http/discovery", + "version": "1.20.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "sebastian/comparator": "^3.0.5 || ^4.0.8", + "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.20.0" + }, + "time": "2024-10-02T11:20:13+00:00" + }, { "name": "phpmailer/phpmailer", "version": "v6.9.1", @@ -1054,6 +1865,450 @@ ], "time": "2023-11-25T22:23:28+00:00" }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.6", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, { "name": "spomky-labs/otphp", "version": "v10.0.3", @@ -1129,6 +2384,245 @@ }, "time": "2022-03-17T08:00:35+00:00" }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/http-client", + "version": "v7.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", + "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^3.4.1", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.1.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-13T13:40:27+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "20414d96f391677bf80078aa55baece78b82647d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", + "reference": "20414d96f391677bf80078aa55baece78b82647d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.31.0", @@ -1289,6 +2783,217 @@ ], "time": "2024-09-09T11:45:10+00:00" }, + { + "name": "symfony/polyfill-php82", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php82.git", + "reference": "5d2ed36f7734637dacc025f179698031951b1692" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/5d2ed36f7734637dacc025f179698031951b1692", + "reference": "5d2ed36f7734637dacc025f179698031951b1692", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php82\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php82/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "tbachert/spi", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/Nevay/spi.git", + "reference": "2ddfaf815dafb45791a61b08170de8d583c16062" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nevay/spi/zipball/2ddfaf815dafb45791a61b08170de8d583c16062", + "reference": "2ddfaf815dafb45791a61b08170de8d583c16062", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "composer/semver": "^1.0 || ^2.0 || ^3.0", + "php": "^8.1" + }, + "require-dev": { + "composer/composer": "^2.0", + "infection/infection": "^0.27.9", + "phpunit/phpunit": "^10.5", + "psalm/phar": "^5.18" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-main": "0.2.x-dev" + }, + "class": "Nevay\\SPI\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Nevay\\SPI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Service provider loading facility", + "keywords": [ + "service provider" + ], + "support": { + "issues": "https://github.com/Nevay/spi/issues", + "source": "https://github.com/Nevay/spi/tree/v1.0.2" + }, + "time": "2024-10-04T16:36:12+00:00" + }, { "name": "thecodingmachine/safe", "version": "v2.5.0", @@ -1770,16 +3475,16 @@ }, { "name": "utopia-php/database", - "version": "0.53.17", + "version": "0.53.23", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "07e3e5a1f5dbf9b351aab138085bde06611b305a" + "reference": "b5bd17ef34f37018dca06cb764387e1e40bfe63a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/07e3e5a1f5dbf9b351aab138085bde06611b305a", - "reference": "07e3e5a1f5dbf9b351aab138085bde06611b305a", + "url": "https://api.github.com/repos/utopia-php/database/zipball/b5bd17ef34f37018dca06cb764387e1e40bfe63a", + "reference": "b5bd17ef34f37018dca06cb764387e1e40bfe63a", "shasum": "" }, "require": { @@ -1820,9 +3525,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.53.17" + "source": "https://github.com/utopia-php/database/tree/0.53.23" }, - "time": "2024-11-06T09:20:59+00:00" + "time": "2024-11-21T05:07:44+00:00" }, { "name": "utopia-php/domains", @@ -1972,21 +3677,22 @@ }, { "name": "utopia-php/framework", - "version": "0.33.11", + "version": "0.33.14", "source": { "type": "git", "url": "https://github.com/utopia-php/http.git", - "reference": "354ff0d23bfc6e82bea0fe8e89e115cff1af8466" + "reference": "45a5a2db3602fa054096f378482c7da9936f5850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/http/zipball/354ff0d23bfc6e82bea0fe8e89e115cff1af8466", - "reference": "354ff0d23bfc6e82bea0fe8e89e115cff1af8466", + "url": "https://api.github.com/repos/utopia-php/http/zipball/45a5a2db3602fa054096f378482c7da9936f5850", + "reference": "45a5a2db3602fa054096f378482c7da9936f5850", "shasum": "" }, "require": { - "php": ">=8.0", - "utopia-php/compression": "0.1.*" + "php": ">=8.1", + "utopia-php/compression": "0.1.*", + "utopia-php/telemetry": "0.1.*" }, "require-dev": { "laravel/pint": "^1.2", @@ -2012,9 +3718,9 @@ ], "support": { "issues": "https://github.com/utopia-php/http/issues", - "source": "https://github.com/utopia-php/http/tree/0.33.11" + "source": "https://github.com/utopia-php/http/tree/0.33.14" }, - "time": "2024-11-08T18:47:43+00:00" + "time": "2024-11-20T12:39:10+00:00" }, { "name": "utopia-php/image", @@ -2542,22 +4248,23 @@ }, { "name": "utopia-php/queue", - "version": "0.7.2", + "version": "0.7.3", "source": { "type": "git", "url": "https://github.com/utopia-php/queue.git", - "reference": "40fdd9799d0a11dd33fca06f8223032a47dce2f6" + "reference": "16074a98ee7d6212bc1228de200e13db470c098a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/queue/zipball/40fdd9799d0a11dd33fca06f8223032a47dce2f6", - "reference": "40fdd9799d0a11dd33fca06f8223032a47dce2f6", + "url": "https://api.github.com/repos/utopia-php/queue/zipball/16074a98ee7d6212bc1228de200e13db470c098a", + "reference": "16074a98ee7d6212bc1228de200e13db470c098a", "shasum": "" }, "require": { - "php": ">=8.0", + "php": ">=8.1", "utopia-php/cli": "0.15.*", - "utopia-php/framework": "0.*.*" + "utopia-php/framework": "0.*.*", + "utopia-php/telemetry": "0.1.*" }, "require-dev": { "laravel/pint": "^0.2.3", @@ -2597,9 +4304,9 @@ ], "support": { "issues": "https://github.com/utopia-php/queue/issues", - "source": "https://github.com/utopia-php/queue/tree/0.7.2" + "source": "https://github.com/utopia-php/queue/tree/0.7.3" }, - "time": "2024-11-11T10:04:02+00:00" + "time": "2024-11-13T12:47:48+00:00" }, { "name": "utopia-php/registry", @@ -2815,6 +4522,56 @@ }, "time": "2024-10-09T14:44:01+00:00" }, + { + "name": "utopia-php/telemetry", + "version": "0.1.0", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/telemetry.git", + "reference": "d35f2f0632f4ee0be63fb7ace6a94a6adda71a80" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/telemetry/zipball/d35f2f0632f4ee0be63fb7ace6a94a6adda71a80", + "reference": "d35f2f0632f4ee0be63fb7ace6a94a6adda71a80", + "shasum": "" + }, + "require": { + "ext-opentelemetry": "*", + "ext-protobuf": "*", + "nyholm/psr7": "^1.8", + "open-telemetry/exporter-otlp": "^1.1", + "open-telemetry/sdk": "^1.1", + "php": ">=8.0", + "symfony/http-client": "^7.1" + }, + "require-dev": { + "laravel/pint": "^1.2", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.25" + }, + "type": "library", + "autoload": { + "psr-4": { + "Utopia\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "keywords": [ + "framework", + "php", + "upf" + ], + "support": { + "issues": "https://github.com/utopia-php/telemetry/issues", + "source": "https://github.com/utopia-php/telemetry/tree/0.1.0" + }, + "time": "2024-11-13T10:29:53+00:00" + }, { "name": "utopia-php/vcs", "version": "0.8.5", @@ -3049,16 +4806,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "0.39.24", + "version": "0.39.25", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "412451c87f6ef17e24e9a5cf41721043d74c60c8" + "reference": "5b5323636a8d75a1c4faaae9728098dd6a6a47d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/412451c87f6ef17e24e9a5cf41721043d74c60c8", - "reference": "412451c87f6ef17e24e9a5cf41721043d74c60c8", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/5b5323636a8d75a1c4faaae9728098dd6a6a47d1", + "reference": "5b5323636a8d75a1c4faaae9728098dd6a6a47d1", "shasum": "" }, "require": { @@ -3066,7 +4823,7 @@ "ext-json": "*", "ext-mbstring": "*", "matthiasmullie/minify": "1.3.*", - "php": ">=8.0", + "php": ">=8.3", "twig/twig": "3.14.*" }, "require-dev": { @@ -3094,9 +4851,9 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/0.39.24" + "source": "https://github.com/appwrite/sdk-generator/tree/0.39.25" }, - "time": "2024-10-09T19:13:27+00:00" + "time": "2024-11-08T10:16:34+00:00" }, { "name": "doctrine/annotations", @@ -3370,16 +5127,16 @@ }, { "name": "laravel/pint", - "version": "v1.18.1", + "version": "v1.18.2", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9" + "reference": "f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9", - "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "url": "https://api.github.com/repos/laravel/pint/zipball/f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64", + "reference": "f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64", "shasum": "" }, "require": { @@ -3432,7 +5189,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-09-24T17:22:50+00:00" + "time": "2024-11-20T09:33:46+00:00" }, { "name": "matthiasmullie/minify", @@ -4173,26 +5930,27 @@ }, { "name": "phpspec/prophecy", - "version": "v1.19.0", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87" + "reference": "a0165c648cab6a80311c74ffc708a07bb53ecc93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/67a759e7d8746d501c41536ba40cd9c0a07d6a87", - "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/a0165c648cab6a80311c74ffc708a07bb53ecc93", + "reference": "a0165c648cab6a80311c74ffc708a07bb53ecc93", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2 || ^2.0", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.*", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.* || 8.4.*", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0", "sebastian/recursion-context": "^3.0 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { + "friendsofphp/php-cs-fixer": "^3.40", "phpspec/phpspec": "^6.0 || ^7.0", "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" @@ -4236,9 +5994,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.19.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.20.0" }, - "time": "2024-02-29T11:52:51+00:00" + "time": "2024-11-19T13:12:41+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -4758,109 +6516,6 @@ }, "time": "2021-02-03T23:26:27+00:00" }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/log", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.2" - }, - "time": "2024-09-11T13:17:53+00:00" - }, { "name": "sebastian/cli-parser", "version": "1.0.2", @@ -5922,16 +7577,16 @@ }, { "name": "symfony/console", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a" + "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3284aafcac338b6e86fd955ee4d794cbe434151a", - "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a", + "url": "https://api.github.com/repos/symfony/console/zipball/ff04e5b5ba043d2badfb308197b9e6b42883fcd5", + "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5", "shasum": "" }, "require": { @@ -5995,7 +7650,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.7" + "source": "https://github.com/symfony/console/tree/v7.1.8" }, "funding": [ { @@ -6011,74 +7666,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:55+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-11-06T14:23:19+00:00" }, { "name": "symfony/filesystem", @@ -6593,16 +8181,16 @@ }, { "name": "symfony/process", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "9b8a40b7289767aa7117e957573c2a535efe6585" + "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9b8a40b7289767aa7117e957573c2a535efe6585", - "reference": "9b8a40b7289767aa7117e957573c2a535efe6585", + "url": "https://api.github.com/repos/symfony/process/zipball/42783370fda6e538771f7c7a36e9fa2ee3a84892", + "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892", "shasum": "" }, "require": { @@ -6634,7 +8222,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.1.7" + "source": "https://github.com/symfony/process/tree/v7.1.8" }, "funding": [ { @@ -6650,103 +8238,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:25:12+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-11-06T14:23:19+00:00" }, { "name": "symfony/string", - "version": "v7.1.6", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626" + "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/61b72d66bf96c360a727ae6232df5ac83c71f626", - "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626", + "url": "https://api.github.com/repos/symfony/string/zipball/591ebd41565f356fcd8b090fe64dbb5878f50281", + "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281", "shasum": "" }, "require": { @@ -6804,7 +8309,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.6" + "source": "https://github.com/symfony/string/tree/v7.1.8" }, "funding": [ { @@ -6820,7 +8325,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-13T13:31:21+00:00" }, { "name": "textalk/websocket", diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index ea62ad2efc..e6923ca1af 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -4889,7 +4889,7 @@ trait DatabasesBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(10, $response['body']['modified']); + $this->assertCount(10, $response['body']['documents']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -4920,7 +4920,7 @@ trait DatabasesBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(10, $response['body']['modified']); + $this->assertCount(10, $response['body']['documents']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -4954,7 +4954,7 @@ trait DatabasesBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(5, $response['body']['modified']); + $this->assertCount(5, $response['body']['documents']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -4980,7 +4980,7 @@ trait DatabasesBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(5, $response['body']['modified']); + $this->assertCount(5, $response['body']['documents']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -5006,7 +5006,7 @@ trait DatabasesBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(10, $response['body']['modified']); + $this->assertCount(10, $response['body']['documents']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', diff --git a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php index 745a97caf3..e106253cfb 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php @@ -1009,7 +1009,7 @@ class DatabasesCustomClientTest extends Scope ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(6, $response['body']['modified']); + $this->assertCount(6, $response['body']['documents']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $data['databaseId'] . '/collections/' . $data['$id'] . '/documents', array_merge([ 'content-type' => 'application/json', @@ -1139,7 +1139,7 @@ class DatabasesCustomClientTest extends Scope ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['modified']); + $this->assertCount(1, $response['body']['documents']); $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collection2 . '/documents', array_merge([ 'content-type' => 'application/json', diff --git a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php index 616f309fd2..316999b9b9 100644 --- a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php @@ -650,6 +650,7 @@ class RealtimeCustomClientTest extends Scope $user = $this->getUser(); $session = $user['session'] ?? ''; $projectId = $this->getProject()['$id']; + $documentIds = []; $client = $this->getWebsocket(['documents', 'collections'], [ 'origin' => 'http://localhost', @@ -739,6 +740,7 @@ class RealtimeCustomClientTest extends Scope $response = json_decode($client->receive(), true); $documentId = $document['body']['$id']; + $documentIds[] = $documentId; $this->assertArrayHasKey('type', $response); $this->assertArrayHasKey('data', $response); @@ -862,6 +864,77 @@ class RealtimeCustomClientTest extends Scope $this->assertNotEmpty($response['data']['payload']); $this->assertEquals($response['data']['payload']['name'], 'Bradley Cooper'); + /** + * Test Documents Update + */ + $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'name' => 'Bradley Cooper' + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $client->receive(); + $documentIds[] = $document['body']['$id']; + + $this->client->call(Client::METHOD_PATCH, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'name' => 'Bradley Cooper 2' + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $updateDocumentIds = $documentIds; + while (!empty($updateDocumentIds)) { + $response = json_decode($client->receive(), true); + + $this->assertArrayHasKey('type', $response); + $this->assertArrayHasKey('data', $response); + $this->assertEquals('event', $response['type']); + $this->assertNotEmpty($response['data']); + $this->assertArrayHasKey('timestamp', $response['data']); + $this->assertCount(3, $response['data']['channels']); + $this->assertNotEmpty($response['data']['payload']); + + if (!in_array($response['data']['payload']['$id'], $updateDocumentIds)) { + $this->fail('Document ID not found in the payload'); + } + $documentId = $response['data']['payload']['$id']; + + $this->assertContains('documents', $response['data']['channels']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $response['data']['channels']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents", $response['data']['channels']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.update", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.*.update", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.*", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.{$actorsId}", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.*.documents.{$documentId}.update", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.*.documents.{$documentId}", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.*.documents.*.update", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.*.documents.*", $response['data']['events']); + $this->assertContains("databases.{$databaseId}.collections.*", $response['data']['events']); + $this->assertContains("databases.{$databaseId}", $response['data']['events']); + $this->assertContains("databases.*", $response['data']['events']); + + unset($updateDocumentIds[array_search($documentId, $updateDocumentIds)]); + } + $client->close(); } From 2850879428d9211287a86f93256490e3341eb20b Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 2 Dec 2024 16:07:32 +0900 Subject: [PATCH 07/11] Remove Events for bulk updates --- app/controllers/api/databases.php | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 1da2bd276d..5dd7069341 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3692,7 +3692,6 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->desc('Update documents') ->groups(['api', 'database']) - ->label('event', 'databases.[databaseId].collections.[collectionId].documents.update') ->label('scope', 'documents.write') ->label('resourceType', RESOURCE_TYPE_DATABASES) ->label('audits.event', 'documents.update') @@ -3719,7 +3718,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('queueForEvents') ->inject('queueForRealtime') ->inject('project') - ->action(function (string $databaseId, string $collectionId, string|array $data, ?array $permissions, array $queries, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, Realtime $queueForRealtime, Document $project) { + ->action(function (string $databaseId, string $collectionId, string|array $data, ?array $permissions, array $queries, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Document $project) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array if (empty($data) && \is_null($permissions)) { @@ -3785,31 +3784,6 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ) ); - $queueForEvents - ->setParam('databaseId', $databaseId) - ->setParam('collectionId', $collection->getId()) - ->setContext('collection', $collection) - ->setContext('database', $database); - - // Trigger all events, we do this manually since we have to trigger multiple. - foreach ($documents as $document) { - $document->setAttribute('$databaseId', $database->getId()); - $document->setAttribute('$collectionId', $collection->getId()); - - $queueForEvents - ->setProject($project) - ->setEvent('databases.[databaseId].collections.[collectionId].documents.[documentId].update') - ->setParam('documentId', $document->getId()) - ->setPayload($response->output($document, Response::MODEL_DOCUMENT)) - ->trigger(); - - if ($project->getId() !== 'console') { - $queueForRealtime - ->from($queueForEvents) - ->trigger(); - } - } - $response->dynamic(new Document([ 'total' => \count($documents), 'documents' => $documents From 116ba6bc7b26590fdf77aaf1a0bd23f950f6e42e Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 3 Dec 2024 04:38:59 +0000 Subject: [PATCH 08/11] Fix Problems with tests and params --- app/controllers/api/databases.php | 2 - composer.json | 4 + composer.lock | 203 +++++++++--------- package-lock.json | 10 + .../Realtime/RealtimeCustomClientTest.php | 71 ------ 5 files changed, 116 insertions(+), 174 deletions(-) create mode 100644 package-lock.json diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 5dd7069341..f3064b1627 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3715,8 +3715,6 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('requestTimestamp') ->inject('response') ->inject('dbForProject') - ->inject('queueForEvents') - ->inject('queueForRealtime') ->inject('project') ->action(function (string $databaseId, string $collectionId, string|array $data, ?array $permissions, array $queries, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Document $project) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array diff --git a/composer.json b/composer.json index b9cd44d1c4..ca18bed28a 100644 --- a/composer.json +++ b/composer.json @@ -96,6 +96,10 @@ "config": { "platform": { "php": "8.3" + }, + "allow-plugins": { + "php-http/discovery": false, + "tbachert/spi": false } } } diff --git a/composer.lock b/composer.lock index c68ab68db0..08c97122b6 100644 --- a/composer.lock +++ b/composer.lock @@ -157,16 +157,16 @@ }, { "name": "appwrite/php-runtimes", - "version": "0.16.4", + "version": "0.16.5", "source": { "type": "git", "url": "https://github.com/appwrite/runtimes.git", - "reference": "7e4741337b9373f77210396e68eca539018cabd1" + "reference": "1e430646fdf847a7caf3c611dcf3d6d5a28c3fd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/runtimes/zipball/7e4741337b9373f77210396e68eca539018cabd1", - "reference": "7e4741337b9373f77210396e68eca539018cabd1", + "url": "https://api.github.com/repos/appwrite/runtimes/zipball/1e430646fdf847a7caf3c611dcf3d6d5a28c3fd9", + "reference": "1e430646fdf847a7caf3c611dcf3d6d5a28c3fd9", "shasum": "" }, "require": { @@ -206,9 +206,9 @@ ], "support": { "issues": "https://github.com/appwrite/runtimes/issues", - "source": "https://github.com/appwrite/runtimes/tree/0.16.4" + "source": "https://github.com/appwrite/runtimes/tree/0.16.5" }, - "time": "2024-10-26T10:39:59+00:00" + "time": "2024-11-25T15:17:06+00:00" }, { "name": "beberlei/assert", @@ -709,16 +709,16 @@ }, { "name": "google/protobuf", - "version": "v4.28.3", + "version": "v4.29.0", "source": { "type": "git", "url": "https://github.com/protocolbuffers/protobuf-php.git", - "reference": "c5c311e0f3d89928251ac5a2f0e3db283612c100" + "reference": "0ef6b2eb74b782f3f9023276c324d22e440f7587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/c5c311e0f3d89928251ac5a2f0e3db283612c100", - "reference": "c5c311e0f3d89928251ac5a2f0e3db283612c100", + "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/0ef6b2eb74b782f3f9023276c324d22e440f7587", + "reference": "0ef6b2eb74b782f3f9023276c324d22e440f7587", "shasum": "" }, "require": { @@ -747,9 +747,9 @@ "proto" ], "support": { - "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.28.3" + "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.29.0" }, - "time": "2024-10-22T22:27:17+00:00" + "time": "2024-11-27T18:37:40+00:00" }, { "name": "jean85/pretty-package-versions", @@ -2343,9 +2343,9 @@ "type": "library", "extra": { "branch-alias": { - "v10.0": "10.0.x-dev", + "v8.3": "8.3.x-dev", "v9.0": "9.0.x-dev", - "v8.3": "8.3.x-dev" + "v10.0": "10.0.x-dev" } }, "autoload": { @@ -2386,16 +2386,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -2433,7 +2433,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -2449,30 +2449,31 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/http-client", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a" + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", - "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", + "url": "https://api.github.com/repos/symfony/http-client/zipball/955e43336aff03df1e8a8e17daefabb0127a313b", + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/http-client-contracts": "~3.4.3|^3.5.1", "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "amphp/amp": "<2.5", "php-http/discovery": "<1.15", "symfony/http-foundation": "<6.4" }, @@ -2483,14 +2484,14 @@ "symfony/http-client-implementation": "3.0" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", "amphp/socket": "^1.1", "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/messenger": "^6.4|^7.0", @@ -2527,7 +2528,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.1.8" + "source": "https://github.com/symfony/http-client/tree/v7.2.0" }, "funding": [ { @@ -2543,20 +2544,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:40:27+00:00" + "time": "2024-11-29T08:22:02+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "20414d96f391677bf80078aa55baece78b82647d" + "reference": "c2f3ad828596624ca39ea40f83617ef51ca8bbf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", - "reference": "20414d96f391677bf80078aa55baece78b82647d", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/c2f3ad828596624ca39ea40f83617ef51ca8bbf9", + "reference": "c2f3ad828596624ca39ea40f83617ef51ca8bbf9", "shasum": "" }, "require": { @@ -2605,7 +2606,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.1" }, "funding": [ { @@ -2621,7 +2622,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-11-25T12:02:18+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -2861,16 +2862,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -2924,7 +2925,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -2940,7 +2941,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "tbachert/spi", @@ -3928,16 +3929,16 @@ }, { "name": "utopia-php/migration", - "version": "0.6.12", + "version": "0.6.13", "source": { "type": "git", "url": "https://github.com/utopia-php/migration.git", - "reference": "9a8c905af4cece5c5ec9542a5b534befce067260" + "reference": "68d9b0a9477755afcda607e7e8109785cae17a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/migration/zipball/9a8c905af4cece5c5ec9542a5b534befce067260", - "reference": "9a8c905af4cece5c5ec9542a5b534befce067260", + "url": "https://api.github.com/repos/utopia-php/migration/zipball/68d9b0a9477755afcda607e7e8109785cae17a13", + "reference": "68d9b0a9477755afcda607e7e8109785cae17a13", "shasum": "" }, "require": { @@ -3978,9 +3979,9 @@ ], "support": { "issues": "https://github.com/utopia-php/migration/issues", - "source": "https://github.com/utopia-php/migration/tree/0.6.12" + "source": "https://github.com/utopia-php/migration/tree/0.6.13" }, - "time": "2024-11-12T00:31:53+00:00" + "time": "2024-11-26T13:57:53+00:00" }, { "name": "utopia-php/mongo", @@ -4362,16 +4363,16 @@ }, { "name": "utopia-php/storage", - "version": "0.18.6", + "version": "0.18.7", "source": { "type": "git", "url": "https://github.com/utopia-php/storage.git", - "reference": "893ccf06e183f8ece2aed8dbf14d64d6ba036071" + "reference": "0d9228faa1c202f9e01483e45a8950485f01a288" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/storage/zipball/893ccf06e183f8ece2aed8dbf14d64d6ba036071", - "reference": "893ccf06e183f8ece2aed8dbf14d64d6ba036071", + "url": "https://api.github.com/repos/utopia-php/storage/zipball/0d9228faa1c202f9e01483e45a8950485f01a288", + "reference": "0d9228faa1c202f9e01483e45a8950485f01a288", "shasum": "" }, "require": { @@ -4411,9 +4412,9 @@ ], "support": { "issues": "https://github.com/utopia-php/storage/issues", - "source": "https://github.com/utopia-php/storage/tree/0.18.6" + "source": "https://github.com/utopia-php/storage/tree/0.18.7" }, - "time": "2024-11-06T09:58:50+00:00" + "time": "2024-11-28T11:10:53+00:00" }, { "name": "utopia-php/swoole", @@ -5127,16 +5128,16 @@ }, { "name": "laravel/pint", - "version": "v1.18.2", + "version": "v1.18.3", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64" + "reference": "cef51821608239040ab841ad6e1c6ae502ae3026" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64", - "reference": "f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64", + "url": "https://api.github.com/repos/laravel/pint/zipball/cef51821608239040ab841ad6e1c6ae502ae3026", + "reference": "cef51821608239040ab841ad6e1c6ae502ae3026", "shasum": "" }, "require": { @@ -5147,13 +5148,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.64.0", - "illuminate/view": "^10.48.20", - "larastan/larastan": "^2.9.8", + "friendsofphp/php-cs-fixer": "^3.65.0", + "illuminate/view": "^10.48.24", + "larastan/larastan": "^2.9.11", "laravel-zero/framework": "^10.4.0", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.35.1" + "nunomaduro/termwind": "^1.17.0", + "pestphp/pest": "^2.36.0" }, "bin": [ "builds/pint" @@ -5189,7 +5190,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-11-20T09:33:46+00:00" + "time": "2024-11-26T15:34:00+00:00" }, { "name": "matthiasmullie/minify", @@ -7577,16 +7578,16 @@ }, { "name": "symfony/console", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5" + "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ff04e5b5ba043d2badfb308197b9e6b42883fcd5", - "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5", + "url": "https://api.github.com/repos/symfony/console/zipball/23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", + "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", "shasum": "" }, "require": { @@ -7650,7 +7651,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.8" + "source": "https://github.com/symfony/console/tree/v7.2.0" }, "funding": [ { @@ -7666,20 +7667,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:23:19+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/c835867b3c62bb05c7fe3d637c871c7ae52024d4", - "reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { @@ -7716,7 +7717,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.6" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -7732,20 +7733,20 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:11:02+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8" + "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2cb89664897be33f78c65d3d2845954c8d7a43b8", - "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8", + "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", + "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", "shasum": "" }, "require": { @@ -7780,7 +7781,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.6" + "source": "https://github.com/symfony/finder/tree/v7.2.0" }, "funding": [ { @@ -7796,20 +7797,20 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:31:23+00:00" + "time": "2024-10-23T06:56:12+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "85e95eeede2d41cd146146e98c9c81d9214cae85" + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/85e95eeede2d41cd146146e98c9c81d9214cae85", - "reference": "85e95eeede2d41cd146146e98c9c81d9214cae85", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", "shasum": "" }, "require": { @@ -7847,7 +7848,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.1.6" + "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" }, "funding": [ { @@ -7863,7 +7864,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-20T11:17:29+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8181,16 +8182,16 @@ }, { "name": "symfony/process", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892" + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/42783370fda6e538771f7c7a36e9fa2ee3a84892", - "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892", + "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", "shasum": "" }, "require": { @@ -8222,7 +8223,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.1.8" + "source": "https://github.com/symfony/process/tree/v7.2.0" }, "funding": [ { @@ -8238,20 +8239,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:23:19+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/string", - "version": "v7.1.8", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/591ebd41565f356fcd8b090fe64dbb5878f50281", - "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { @@ -8309,7 +8310,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.8" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -8325,7 +8326,7 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:31:21+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "textalk/websocket", @@ -8557,7 +8558,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..6ab33b14fe --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10 @@ +{ + "name": "@appwrite.io/repo", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@appwrite.io/repo" + } + } +} diff --git a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php index 316999b9b9..32ff3f7618 100644 --- a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php @@ -864,77 +864,6 @@ class RealtimeCustomClientTest extends Scope $this->assertNotEmpty($response['data']['payload']); $this->assertEquals($response['data']['payload']['name'], 'Bradley Cooper'); - /** - * Test Documents Update - */ - $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'documentId' => ID::unique(), - 'data' => [ - 'name' => 'Bradley Cooper' - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $client->receive(); - $documentIds[] = $document['body']['$id']; - - $this->client->call(Client::METHOD_PATCH, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'data' => [ - 'name' => 'Bradley Cooper 2' - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $updateDocumentIds = $documentIds; - while (!empty($updateDocumentIds)) { - $response = json_decode($client->receive(), true); - - $this->assertArrayHasKey('type', $response); - $this->assertArrayHasKey('data', $response); - $this->assertEquals('event', $response['type']); - $this->assertNotEmpty($response['data']); - $this->assertArrayHasKey('timestamp', $response['data']); - $this->assertCount(3, $response['data']['channels']); - $this->assertNotEmpty($response['data']['payload']); - - if (!in_array($response['data']['payload']['$id'], $updateDocumentIds)) { - $this->fail('Document ID not found in the payload'); - } - $documentId = $response['data']['payload']['$id']; - - $this->assertContains('documents', $response['data']['channels']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $response['data']['channels']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents", $response['data']['channels']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.update", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.*.update", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}.documents.*", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.{$actorsId}", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.*.documents.{$documentId}.update", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.*.documents.{$documentId}", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.*.documents.*.update", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.*.documents.*", $response['data']['events']); - $this->assertContains("databases.{$databaseId}.collections.*", $response['data']['events']); - $this->assertContains("databases.{$databaseId}", $response['data']['events']); - $this->assertContains("databases.*", $response['data']['events']); - - unset($updateDocumentIds[array_search($documentId, $updateDocumentIds)]); - } - $client->close(); } From 41ead533b8c04c94b188546181d8326422da74d1 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 3 Dec 2024 05:03:51 +0000 Subject: [PATCH 09/11] Linter --- app/controllers/api/databases.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 875b01f656..ac8cff8d84 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -4,7 +4,6 @@ use Appwrite\Auth\Auth; use Appwrite\Detector\Detector; use Appwrite\Event\Database as EventDatabase; use Appwrite\Event\Event; -use Appwrite\Event\Realtime; use Appwrite\Event\Usage; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; From 3d4917727b5f9c3aa2ccdb55fe5c19668e53b7ba Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 3 Dec 2024 15:14:07 +0900 Subject: [PATCH 10/11] Address Comments --- app/controllers/api/databases.php | 36 +++++++++++++++++++ .../e2e/Services/Databases/DatabasesBase.php | 2 ++ 2 files changed, 38 insertions(+) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index ac8cff8d84..991b774fbb 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3781,6 +3781,42 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') $queries ) ); + + $processDocument = function (Document $collection, Document $document) use (&$processDocument, $dbForProject, $database) { + $document->setAttribute('$databaseId', $database->getId()); + $document->setAttribute('$collectionId', $collection->getId()); + + $relationships = \array_filter( + $collection->getAttribute('attributes', []), + fn ($attribute) => $attribute->getAttribute('type') === Database::VAR_RELATIONSHIP + ); + + foreach ($relationships as $relationship) { + $related = $document->getAttribute($relationship->getAttribute('key')); + + if (empty($related)) { + continue; + } + if (!\is_array($related)) { + $related = [$related]; + } + + $relatedCollectionId = $relationship->getAttribute('relatedCollection'); + $relatedCollection = Authorization::skip( + fn () => $dbForProject->getDocument('database_' . $database->getInternalId(), $relatedCollectionId) + ); + + foreach ($related as $relation) { + if ($relation instanceof Document) { + $processDocument($relatedCollection, $relation); + } + } + } + }; + + foreach ($documents as $document) { + $processDocument($collection, $document); + } $response->dynamic(new Document([ 'total' => \count($documents), diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index fa98fd1a15..c262abfab1 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -5554,6 +5554,8 @@ trait DatabasesBase Permission::update(Role::user($this->getUser()['$id'])), Permission::delete(Role::user($this->getUser()['$id'])), ], $document['$permissions']); + $this->assertEquals($collection['body']['$id'], $document['$collectionId']); + $this->assertEquals($data['databaseId'], $document['$databaseId']); } // TEST: Check permissions persist From 7f2d3beb31744a10fb79e19cd89fb462ef2430d9 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 3 Dec 2024 15:19:58 +0900 Subject: [PATCH 11/11] Run Linter --- 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 991b774fbb..099dfef8a8 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -3781,7 +3781,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents') $queries ) ); - + $processDocument = function (Document $collection, Document $document) use (&$processDocument, $dbForProject, $database) { $document->setAttribute('$databaseId', $database->getId()); $document->setAttribute('$collectionId', $collection->getId());