From c2b2ac2735e9e472066d2f5e720d43ca422e391d Mon Sep 17 00:00:00 2001 From: root Date: Thu, 19 Feb 2026 10:27:35 +0000 Subject: [PATCH 1/4] regenerate --- CHANGELOG.md | 25 ------- README.md | 2 +- appwrite/client.py | 4 +- appwrite/enums/build_runtime.py | 20 ++++++ appwrite/enums/runtime.py | 20 ++++++ appwrite/enums/scopes.py | 3 + appwrite/query.py | 24 +++++++ appwrite/services/activities.py | 70 +++++++++++++++++++ appwrite/services/databases.py | 24 +++++-- appwrite/services/tables_db.py | 24 +++++-- .../get-event.md} | 8 +-- .../list-events.md} | 8 +-- .../databases/create-longtext-attribute.md | 3 +- .../databases/create-mediumtext-attribute.md | 3 +- .../databases/create-text-attribute.md | 3 +- .../databases/create-varchar-attribute.md | 3 +- .../get-queue-billing-project-aggregation.md | 15 ---- .../get-queue-billing-team-aggregation.md | 15 ---- .../health/get-queue-region-manager.md | 15 ---- .../tablesdb/create-longtext-column.md | 3 +- .../tablesdb/create-mediumtext-column.md | 3 +- docs/examples/tablesdb/create-text-column.md | 3 +- .../tablesdb/create-varchar-column.md | 3 +- setup.py | 4 +- 24 files changed, 206 insertions(+), 99 deletions(-) create mode 100644 appwrite/services/activities.py rename docs/examples/{health/get-queue-threats.md => activities/get-event.md} (65%) rename docs/examples/{health/get-queue-priority-builds.md => activities/list-events.md} (64%) delete mode 100644 docs/examples/health/get-queue-billing-project-aggregation.md delete mode 100644 docs/examples/health/get-queue-billing-team-aggregation.md delete mode 100644 docs/examples/health/get-queue-region-manager.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 301ff5b..31396fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,30 +1,5 @@ # Change Log -## 15.1.0 - -* Add `dart-3.10` and `flutter-3.38` to `BuildRuntime` and `Runtime` enums -* Fix `Roles` enum removed from Teams service; `roles` parameter now accepts `list[str]` -* Add support for the new `Backups` service - -## 15.0.0 - -* Add array-based enum parameters (e.g., `permissions: list[BrowserPermission]`). -* Breaking change: `Output` enum has been removed; use `ImageFormat` instead. -* Add `getQueueAudits` support to `Health` service. -* Add longtext/mediumtext/text/varchar attribute and column helpers to `Databases` and `TablesDB` services. - -## 14.1.0 - -* Added ability to create columns and indexes synchronously while creating a table - -## 14.0.0 - -* Rename `VCSDeploymentType` enum to `VCSReferenceType` -* Change `create_template_deployment` method signature: replace `version` parameter with `type` (TemplateReferenceType) and `reference` parameters -* Add `get_screenshot` method to `Avatars` service -* Add `Theme`, `Timezone` and `Output` enums -* Add support for dart39 and flutter335 runtimes - ## 13.6.1 * Fix passing of `None` to nullable parameters diff --git a/README.md b/README.md index fa3f8d4..4693d74 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) [![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord) -**This SDK is compatible with Appwrite server version latest. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-python/releases).** +**This SDK is compatible with Appwrite server version 1.8.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-python/releases).** Appwrite is an open-source backend as a service server that abstracts and simplifies complex and repetitive development tasks behind a very simple to use REST API. Appwrite aims to help you develop your apps faster and in a more secure way. Use the Python SDK to integrate your app with the Appwrite server to easily start interacting with all of Appwrite backend APIs and tools. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) diff --git a/appwrite/client.py b/appwrite/client.py index 7409c53..629e335 100644 --- a/appwrite/client.py +++ b/appwrite/client.py @@ -15,11 +15,11 @@ def __init__(self): self._endpoint = 'https://cloud.appwrite.io/v1' self._global_headers = { 'content-type': '', - 'user-agent' : f'AppwritePythonSDK/15.1.0 ({platform.uname().system}; {platform.uname().version}; {platform.uname().machine})', + 'user-agent' : f'AppwritePythonSDK/15.2.0 ({platform.uname().system}; {platform.uname().version}; {platform.uname().machine})', 'x-sdk-name': 'Python', 'x-sdk-platform': 'server', 'x-sdk-language': 'python', - 'x-sdk-version': '15.1.0', + 'x-sdk-version': '15.2.0', 'X-Appwrite-Response-Format' : '1.8.0', } diff --git a/appwrite/enums/build_runtime.py b/appwrite/enums/build_runtime.py index 6b40fad..8fe21cb 100644 --- a/appwrite/enums/build_runtime.py +++ b/appwrite/enums/build_runtime.py @@ -8,24 +8,35 @@ class BuildRuntime(Enum): NODE_20_0 = "node-20.0" NODE_21_0 = "node-21.0" NODE_22 = "node-22" + NODE_23 = "node-23" + NODE_24 = "node-24" + NODE_25 = "node-25" PHP_8_0 = "php-8.0" PHP_8_1 = "php-8.1" PHP_8_2 = "php-8.2" PHP_8_3 = "php-8.3" + PHP_8_4 = "php-8.4" RUBY_3_0 = "ruby-3.0" RUBY_3_1 = "ruby-3.1" RUBY_3_2 = "ruby-3.2" RUBY_3_3 = "ruby-3.3" + RUBY_3_4 = "ruby-3.4" + RUBY_4_0 = "ruby-4.0" PYTHON_3_8 = "python-3.8" PYTHON_3_9 = "python-3.9" PYTHON_3_10 = "python-3.10" PYTHON_3_11 = "python-3.11" PYTHON_3_12 = "python-3.12" + PYTHON_3_13 = "python-3.13" + PYTHON_3_14 = "python-3.14" PYTHON_ML_3_11 = "python-ml-3.11" PYTHON_ML_3_12 = "python-ml-3.12" + PYTHON_ML_3_13 = "python-ml-3.13" DENO_1_40 = "deno-1.40" DENO_1_46 = "deno-1.46" DENO_2_0 = "deno-2.0" + DENO_2_5 = "deno-2.5" + DENO_2_6 = "deno-2.6" DART_2_15 = "dart-2.15" DART_2_16 = "dart-2.16" DART_2_17 = "dart-2.17" @@ -41,25 +52,34 @@ class BuildRuntime(Enum): DOTNET_6_0 = "dotnet-6.0" DOTNET_7_0 = "dotnet-7.0" DOTNET_8_0 = "dotnet-8.0" + DOTNET_10 = "dotnet-10" JAVA_8_0 = "java-8.0" JAVA_11_0 = "java-11.0" JAVA_17_0 = "java-17.0" JAVA_18_0 = "java-18.0" JAVA_21_0 = "java-21.0" JAVA_22 = "java-22" + JAVA_25 = "java-25" SWIFT_5_5 = "swift-5.5" SWIFT_5_8 = "swift-5.8" SWIFT_5_9 = "swift-5.9" SWIFT_5_10 = "swift-5.10" + SWIFT_6_2 = "swift-6.2" KOTLIN_1_6 = "kotlin-1.6" KOTLIN_1_8 = "kotlin-1.8" KOTLIN_1_9 = "kotlin-1.9" KOTLIN_2_0 = "kotlin-2.0" + KOTLIN_2_3 = "kotlin-2.3" CPP_17 = "cpp-17" CPP_20 = "cpp-20" BUN_1_0 = "bun-1.0" BUN_1_1 = "bun-1.1" + BUN_1_2 = "bun-1.2" + BUN_1_3 = "bun-1.3" GO_1_23 = "go-1.23" + GO_1_24 = "go-1.24" + GO_1_25 = "go-1.25" + GO_1_26 = "go-1.26" STATIC_1 = "static-1" FLUTTER_3_24 = "flutter-3.24" FLUTTER_3_27 = "flutter-3.27" diff --git a/appwrite/enums/runtime.py b/appwrite/enums/runtime.py index 2bc8552..171dbd9 100644 --- a/appwrite/enums/runtime.py +++ b/appwrite/enums/runtime.py @@ -8,24 +8,35 @@ class Runtime(Enum): NODE_20_0 = "node-20.0" NODE_21_0 = "node-21.0" NODE_22 = "node-22" + NODE_23 = "node-23" + NODE_24 = "node-24" + NODE_25 = "node-25" PHP_8_0 = "php-8.0" PHP_8_1 = "php-8.1" PHP_8_2 = "php-8.2" PHP_8_3 = "php-8.3" + PHP_8_4 = "php-8.4" RUBY_3_0 = "ruby-3.0" RUBY_3_1 = "ruby-3.1" RUBY_3_2 = "ruby-3.2" RUBY_3_3 = "ruby-3.3" + RUBY_3_4 = "ruby-3.4" + RUBY_4_0 = "ruby-4.0" PYTHON_3_8 = "python-3.8" PYTHON_3_9 = "python-3.9" PYTHON_3_10 = "python-3.10" PYTHON_3_11 = "python-3.11" PYTHON_3_12 = "python-3.12" + PYTHON_3_13 = "python-3.13" + PYTHON_3_14 = "python-3.14" PYTHON_ML_3_11 = "python-ml-3.11" PYTHON_ML_3_12 = "python-ml-3.12" + PYTHON_ML_3_13 = "python-ml-3.13" DENO_1_40 = "deno-1.40" DENO_1_46 = "deno-1.46" DENO_2_0 = "deno-2.0" + DENO_2_5 = "deno-2.5" + DENO_2_6 = "deno-2.6" DART_2_15 = "dart-2.15" DART_2_16 = "dart-2.16" DART_2_17 = "dart-2.17" @@ -41,25 +52,34 @@ class Runtime(Enum): DOTNET_6_0 = "dotnet-6.0" DOTNET_7_0 = "dotnet-7.0" DOTNET_8_0 = "dotnet-8.0" + DOTNET_10 = "dotnet-10" JAVA_8_0 = "java-8.0" JAVA_11_0 = "java-11.0" JAVA_17_0 = "java-17.0" JAVA_18_0 = "java-18.0" JAVA_21_0 = "java-21.0" JAVA_22 = "java-22" + JAVA_25 = "java-25" SWIFT_5_5 = "swift-5.5" SWIFT_5_8 = "swift-5.8" SWIFT_5_9 = "swift-5.9" SWIFT_5_10 = "swift-5.10" + SWIFT_6_2 = "swift-6.2" KOTLIN_1_6 = "kotlin-1.6" KOTLIN_1_8 = "kotlin-1.8" KOTLIN_1_9 = "kotlin-1.9" KOTLIN_2_0 = "kotlin-2.0" + KOTLIN_2_3 = "kotlin-2.3" CPP_17 = "cpp-17" CPP_20 = "cpp-20" BUN_1_0 = "bun-1.0" BUN_1_1 = "bun-1.1" + BUN_1_2 = "bun-1.2" + BUN_1_3 = "bun-1.3" GO_1_23 = "go-1.23" + GO_1_24 = "go-1.24" + GO_1_25 = "go-1.25" + GO_1_26 = "go-1.26" STATIC_1 = "static-1" FLUTTER_3_24 = "flutter-3.24" FLUTTER_3_27 = "flutter-3.27" diff --git a/appwrite/enums/scopes.py b/appwrite/enums/scopes.py index 193322a..100c9cb 100644 --- a/appwrite/enums/scopes.py +++ b/appwrite/enums/scopes.py @@ -49,6 +49,8 @@ class Scopes(Enum): TARGETS_WRITE = "targets.write" RULES_READ = "rules.read" RULES_WRITE = "rules.write" + SCHEDULES_READ = "schedules.read" + SCHEDULES_WRITE = "schedules.write" MIGRATIONS_READ = "migrations.read" MIGRATIONS_WRITE = "migrations.write" VCS_READ = "vcs.read" @@ -64,3 +66,4 @@ class Scopes(Enum): RESTORATIONS_WRITE = "restorations.write" DOMAINS_READ = "domains.read" DOMAINS_WRITE = "domains.write" + EVENTS_READ = "events.read" diff --git a/appwrite/query.py b/appwrite/query.py index 1693189..c223a4e 100644 --- a/appwrite/query.py +++ b/appwrite/query.py @@ -140,8 +140,32 @@ def offset(offset): @staticmethod def contains(attribute, value): + """ + Filter resources where attribute contains the specified value. + For string attributes, checks if the string contains the substring. + + Note: For array attributes, use contains_any() or contains_all() instead. + """ return str(Query("contains", attribute, value)) + @staticmethod + def contains_any(attribute, value): + """ + Filter resources where attribute contains ANY of the specified values. + For array and relationship attributes, matches documents where the attribute + contains at least one of the given values. + """ + return str(Query("containsAny", attribute, value)) + + @staticmethod + def contains_all(attribute, value): + """ + Filter resources where attribute contains ALL of the specified values. + For array and relationship attributes, matches documents where the attribute + contains every one of the given values. + """ + return str(Query("containsAll", attribute, value)) + @staticmethod def not_contains(attribute, value): return str(Query("notContains", attribute, value)) diff --git a/appwrite/services/activities.py b/appwrite/services/activities.py new file mode 100644 index 0000000..97a6af1 --- /dev/null +++ b/appwrite/services/activities.py @@ -0,0 +1,70 @@ +from ..service import Service +from typing import List, Dict, Any, Optional +from ..exception import AppwriteException +from appwrite.utils.deprecated import deprecated + +class Activities(Service): + + def __init__(self, client) -> None: + super(Activities, self).__init__(client) + + def list_events(self, queries: Optional[str] = None) -> Dict[str, Any]: + """ + List all events for selected filters. + + Parameters + ---------- + queries : Optional[str] + Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on attributes such as userId, teamId, etc. + + Returns + ------- + Dict[str, Any] + API response as a dictionary + + Raises + ------ + AppwriteException + If API request fails + """ + + api_path = '/activities/events' + api_params = {} + + if queries is not None: + api_params['queries'] = queries + + return self.client.call('get', api_path, { + }, api_params) + + def get_event(self, event_id: str) -> Dict[str, Any]: + """ + Get event by ID. + + + Parameters + ---------- + event_id : str + Event ID. + + Returns + ------- + Dict[str, Any] + API response as a dictionary + + Raises + ------ + AppwriteException + If API request fails + """ + + api_path = '/activities/events/{eventId}' + api_params = {} + if event_id is None: + raise AppwriteException('Missing required parameter: "event_id"') + + api_path = api_path.replace('{eventId}', event_id) + + + return self.client.call('get', api_path, { + }, api_params) diff --git a/appwrite/services/databases.py b/appwrite/services/databases.py index b2a834a..76dd142 100644 --- a/appwrite/services/databases.py +++ b/appwrite/services/databases.py @@ -1700,7 +1700,7 @@ def update_line_attribute(self, database_id: str, collection_id: str, key: str, 'content-type': 'application/json', }, api_params) - def create_longtext_attribute(self, database_id: str, collection_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_longtext_attribute(self, database_id: str, collection_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a longtext attribute. @@ -1719,6 +1719,8 @@ def create_longtext_attribute(self, database_id: str, collection_id: str, key: s Default value for attribute when not provided. Cannot be set when attribute is required. array : Optional[bool] Is attribute an array? + encrypt : Optional[bool] + Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried. Returns ------- @@ -1753,6 +1755,8 @@ def create_longtext_attribute(self, database_id: str, collection_id: str, key: s api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', @@ -1815,7 +1819,7 @@ def update_longtext_attribute(self, database_id: str, collection_id: str, key: s 'content-type': 'application/json', }, api_params) - def create_mediumtext_attribute(self, database_id: str, collection_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_mediumtext_attribute(self, database_id: str, collection_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a mediumtext attribute. @@ -1834,6 +1838,8 @@ def create_mediumtext_attribute(self, database_id: str, collection_id: str, key: Default value for attribute when not provided. Cannot be set when attribute is required. array : Optional[bool] Is attribute an array? + encrypt : Optional[bool] + Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried. Returns ------- @@ -1868,6 +1874,8 @@ def create_mediumtext_attribute(self, database_id: str, collection_id: str, key: api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', @@ -2362,7 +2370,7 @@ def update_string_attribute(self, database_id: str, collection_id: str, key: str 'content-type': 'application/json', }, api_params) - def create_text_attribute(self, database_id: str, collection_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_text_attribute(self, database_id: str, collection_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a text attribute. @@ -2381,6 +2389,8 @@ def create_text_attribute(self, database_id: str, collection_id: str, key: str, Default value for attribute when not provided. Cannot be set when attribute is required. array : Optional[bool] Is attribute an array? + encrypt : Optional[bool] + Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried. Returns ------- @@ -2415,6 +2425,8 @@ def create_text_attribute(self, database_id: str, collection_id: str, key: str, api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', @@ -2598,7 +2610,7 @@ def update_url_attribute(self, database_id: str, collection_id: str, key: str, r 'content-type': 'application/json', }, api_params) - def create_varchar_attribute(self, database_id: str, collection_id: str, key: str, size: float, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_varchar_attribute(self, database_id: str, collection_id: str, key: str, size: float, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a varchar attribute. @@ -2619,6 +2631,8 @@ def create_varchar_attribute(self, database_id: str, collection_id: str, key: st Default value for attribute when not provided. Cannot be set when attribute is required. array : Optional[bool] Is attribute an array? + encrypt : Optional[bool] + Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried. Returns ------- @@ -2657,6 +2671,8 @@ def create_varchar_attribute(self, database_id: str, collection_id: str, key: st api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', diff --git a/appwrite/services/tables_db.py b/appwrite/services/tables_db.py index dece20d..ee73241 100644 --- a/appwrite/services/tables_db.py +++ b/appwrite/services/tables_db.py @@ -1618,7 +1618,7 @@ def update_line_column(self, database_id: str, table_id: str, key: str, required 'content-type': 'application/json', }, api_params) - def create_longtext_column(self, database_id: str, table_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_longtext_column(self, database_id: str, table_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a longtext column. @@ -1637,6 +1637,8 @@ def create_longtext_column(self, database_id: str, table_id: str, key: str, requ Default value for column when not provided. Cannot be set when column is required. array : Optional[bool] Is column an array? + encrypt : Optional[bool] + Toggle encryption for the column. Encryption enhances security by not storing any plain text values in the database. However, encrypted columns cannot be queried. Returns ------- @@ -1671,6 +1673,8 @@ def create_longtext_column(self, database_id: str, table_id: str, key: str, requ api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', @@ -1733,7 +1737,7 @@ def update_longtext_column(self, database_id: str, table_id: str, key: str, requ 'content-type': 'application/json', }, api_params) - def create_mediumtext_column(self, database_id: str, table_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_mediumtext_column(self, database_id: str, table_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a mediumtext column. @@ -1752,6 +1756,8 @@ def create_mediumtext_column(self, database_id: str, table_id: str, key: str, re Default value for column when not provided. Cannot be set when column is required. array : Optional[bool] Is column an array? + encrypt : Optional[bool] + Toggle encryption for the column. Encryption enhances security by not storing any plain text values in the database. However, encrypted columns cannot be queried. Returns ------- @@ -1786,6 +1792,8 @@ def create_mediumtext_column(self, database_id: str, table_id: str, key: str, re api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', @@ -2265,7 +2273,7 @@ def update_string_column(self, database_id: str, table_id: str, key: str, requir 'content-type': 'application/json', }, api_params) - def create_text_column(self, database_id: str, table_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_text_column(self, database_id: str, table_id: str, key: str, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a text column. @@ -2284,6 +2292,8 @@ def create_text_column(self, database_id: str, table_id: str, key: str, required Default value for column when not provided. Cannot be set when column is required. array : Optional[bool] Is column an array? + encrypt : Optional[bool] + Toggle encryption for the column. Encryption enhances security by not storing any plain text values in the database. However, encrypted columns cannot be queried. Returns ------- @@ -2318,6 +2328,8 @@ def create_text_column(self, database_id: str, table_id: str, key: str, required api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', @@ -2495,7 +2507,7 @@ def update_url_column(self, database_id: str, table_id: str, key: str, required: 'content-type': 'application/json', }, api_params) - def create_varchar_column(self, database_id: str, table_id: str, key: str, size: float, required: bool, default: Optional[str] = None, array: Optional[bool] = None) -> Dict[str, Any]: + def create_varchar_column(self, database_id: str, table_id: str, key: str, size: float, required: bool, default: Optional[str] = None, array: Optional[bool] = None, encrypt: Optional[bool] = None) -> Dict[str, Any]: """ Create a varchar column. @@ -2516,6 +2528,8 @@ def create_varchar_column(self, database_id: str, table_id: str, key: str, size: Default value for column when not provided. Cannot be set when column is required. array : Optional[bool] Is column an array? + encrypt : Optional[bool] + Toggle encryption for the column. Encryption enhances security by not storing any plain text values in the database. However, encrypted columns cannot be queried. Returns ------- @@ -2554,6 +2568,8 @@ def create_varchar_column(self, database_id: str, table_id: str, key: str, size: api_params['default'] = default if array is not None: api_params['array'] = array + if encrypt is not None: + api_params['encrypt'] = encrypt return self.client.call('post', api_path, { 'content-type': 'application/json', diff --git a/docs/examples/health/get-queue-threats.md b/docs/examples/activities/get-event.md similarity index 65% rename from docs/examples/health/get-queue-threats.md rename to docs/examples/activities/get-event.md index 8294a2f..353d9d5 100644 --- a/docs/examples/health/get-queue-threats.md +++ b/docs/examples/activities/get-event.md @@ -1,15 +1,15 @@ ```python from appwrite.client import Client -from appwrite.services.health import Health +from appwrite.services.activities import Activities client = Client() client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint client.set_project('') # Your project ID client.set_key('') # Your secret API key -health = Health(client) +activities = Activities(client) -result = health.get_queue_threats( - threshold = None # optional +result = activities.get_event( + event_id = '' ) ``` diff --git a/docs/examples/health/get-queue-priority-builds.md b/docs/examples/activities/list-events.md similarity index 64% rename from docs/examples/health/get-queue-priority-builds.md rename to docs/examples/activities/list-events.md index fbcdf91..2c7c92d 100644 --- a/docs/examples/health/get-queue-priority-builds.md +++ b/docs/examples/activities/list-events.md @@ -1,15 +1,15 @@ ```python from appwrite.client import Client -from appwrite.services.health import Health +from appwrite.services.activities import Activities client = Client() client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint client.set_project('') # Your project ID client.set_key('') # Your secret API key -health = Health(client) +activities = Activities(client) -result = health.get_queue_priority_builds( - threshold = None # optional +result = activities.list_events( + queries = '' # optional ) ``` diff --git a/docs/examples/databases/create-longtext-attribute.md b/docs/examples/databases/create-longtext-attribute.md index f13e723..64d747d 100644 --- a/docs/examples/databases/create-longtext-attribute.md +++ b/docs/examples/databases/create-longtext-attribute.md @@ -15,6 +15,7 @@ result = databases.create_longtext_attribute( key = '', required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/databases/create-mediumtext-attribute.md b/docs/examples/databases/create-mediumtext-attribute.md index f053cfc..84cb1f8 100644 --- a/docs/examples/databases/create-mediumtext-attribute.md +++ b/docs/examples/databases/create-mediumtext-attribute.md @@ -15,6 +15,7 @@ result = databases.create_mediumtext_attribute( key = '', required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/databases/create-text-attribute.md b/docs/examples/databases/create-text-attribute.md index 6365bc9..7f60cf7 100644 --- a/docs/examples/databases/create-text-attribute.md +++ b/docs/examples/databases/create-text-attribute.md @@ -15,6 +15,7 @@ result = databases.create_text_attribute( key = '', required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/databases/create-varchar-attribute.md b/docs/examples/databases/create-varchar-attribute.md index 7ddecdf..224dacd 100644 --- a/docs/examples/databases/create-varchar-attribute.md +++ b/docs/examples/databases/create-varchar-attribute.md @@ -16,6 +16,7 @@ result = databases.create_varchar_attribute( size = 1, required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/health/get-queue-billing-project-aggregation.md b/docs/examples/health/get-queue-billing-project-aggregation.md deleted file mode 100644 index e2b983f..0000000 --- a/docs/examples/health/get-queue-billing-project-aggregation.md +++ /dev/null @@ -1,15 +0,0 @@ -```python -from appwrite.client import Client -from appwrite.services.health import Health - -client = Client() -client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('') # Your project ID -client.set_key('') # Your secret API key - -health = Health(client) - -result = health.get_queue_billing_project_aggregation( - threshold = None # optional -) -``` diff --git a/docs/examples/health/get-queue-billing-team-aggregation.md b/docs/examples/health/get-queue-billing-team-aggregation.md deleted file mode 100644 index 763c185..0000000 --- a/docs/examples/health/get-queue-billing-team-aggregation.md +++ /dev/null @@ -1,15 +0,0 @@ -```python -from appwrite.client import Client -from appwrite.services.health import Health - -client = Client() -client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('') # Your project ID -client.set_key('') # Your secret API key - -health = Health(client) - -result = health.get_queue_billing_team_aggregation( - threshold = None # optional -) -``` diff --git a/docs/examples/health/get-queue-region-manager.md b/docs/examples/health/get-queue-region-manager.md deleted file mode 100644 index 6762179..0000000 --- a/docs/examples/health/get-queue-region-manager.md +++ /dev/null @@ -1,15 +0,0 @@ -```python -from appwrite.client import Client -from appwrite.services.health import Health - -client = Client() -client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('') # Your project ID -client.set_key('') # Your secret API key - -health = Health(client) - -result = health.get_queue_region_manager( - threshold = None # optional -) -``` diff --git a/docs/examples/tablesdb/create-longtext-column.md b/docs/examples/tablesdb/create-longtext-column.md index 76d798c..65981d6 100644 --- a/docs/examples/tablesdb/create-longtext-column.md +++ b/docs/examples/tablesdb/create-longtext-column.md @@ -15,6 +15,7 @@ result = tables_db.create_longtext_column( key = '', required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/tablesdb/create-mediumtext-column.md b/docs/examples/tablesdb/create-mediumtext-column.md index 249c660..c731988 100644 --- a/docs/examples/tablesdb/create-mediumtext-column.md +++ b/docs/examples/tablesdb/create-mediumtext-column.md @@ -15,6 +15,7 @@ result = tables_db.create_mediumtext_column( key = '', required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/tablesdb/create-text-column.md b/docs/examples/tablesdb/create-text-column.md index 313e81c..013c675 100644 --- a/docs/examples/tablesdb/create-text-column.md +++ b/docs/examples/tablesdb/create-text-column.md @@ -15,6 +15,7 @@ result = tables_db.create_text_column( key = '', required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/docs/examples/tablesdb/create-varchar-column.md b/docs/examples/tablesdb/create-varchar-column.md index 85848b4..981cf69 100644 --- a/docs/examples/tablesdb/create-varchar-column.md +++ b/docs/examples/tablesdb/create-varchar-column.md @@ -16,6 +16,7 @@ result = tables_db.create_varchar_column( size = 1, required = False, default = '', # optional - array = False # optional + array = False, # optional + encrypt = False # optional ) ``` diff --git a/setup.py b/setup.py index 28124de..ba6249b 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ setuptools.setup( name = 'appwrite', packages = setuptools.find_packages(), - version = '15.1.0', + version = '15.2.0', license='BSD-3-Clause', description = 'Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API', long_description = long_description, @@ -18,7 +18,7 @@ maintainer = 'Appwrite Team', maintainer_email = 'team@appwrite.io', url = 'https://appwrite.io/support', - download_url='https://github.com/appwrite/sdk-for-python/archive/15.1.0.tar.gz', + download_url='https://github.com/appwrite/sdk-for-python/archive/15.2.0.tar.gz', install_requires=[ 'requests', ], From 6249c15266af844a4bada682e513e1537911f34d Mon Sep 17 00:00:00 2001 From: root Date: Thu, 19 Feb 2026 11:06:01 +0000 Subject: [PATCH 2/4] release --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31396fa..589b293 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 15.2.0 + +* Extended BuildRuntime and Runtime enums with new runtime versions (e.g., node-23/24/25, php-8.4, ruby-3.4/4.0, python-3.13/3.14, python-ml-3.13, deno-2.5/2.6, dotnet-10, java-25, swift-6.2, kotlin-2.3, bun-1.2/1.3, go-1.24/1.25/1.26). +* Added new permission scopes: schedules.read, schedules.write, and events.read. +* Added contains_any and contains_all filter helpers to the Query API (plus enhanced contains with docstrings). +* Added optional encrypt parameter to all string attribute creation methods (e.g., longtext, mediumtext, text, varchar) in Databases to support encryption at rest. +* Updated README to reflect Appwrite server compatibility version 1.8.x. +* Backward-compatible enhancements: no breaking changes. + ## 13.6.1 * Fix passing of `None` to nullable parameters From 5eedba46266c61130ec7ab060a92d336b02c218c Mon Sep 17 00:00:00 2001 From: root Date: Thu, 19 Feb 2026 11:20:47 +0000 Subject: [PATCH 3/4] regen --- CHANGELOG.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 589b293..e5efbf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,30 @@ * Updated README to reflect Appwrite server compatibility version 1.8.x. * Backward-compatible enhancements: no breaking changes. +## 15.1.0 + +* Add `dart-3.10` and `flutter-3.38` to `BuildRuntime` and `Runtime` enums +* Fix `Roles` enum removed from Teams service; `roles` parameter now accepts `list[str]` + +## 15.0.0 + +* Add array-based enum parameters (e.g., `permissions: list[BrowserPermission]`). +* Breaking change: `Output` enum has been removed; use `ImageFormat` instead. +* Add `getQueueAudits` support to `Health` service. +* Add longtext/mediumtext/text/varchar attribute and column helpers to `Databases` and `TablesDB` services. + +## 14.1.0 + +* Added ability to create columns and indexes synchronously while creating a table + +## 14.0.0 + +* Rename `VCSDeploymentType` enum to `VCSReferenceType` +* Change `create_template_deployment` method signature: replace `version` parameter with `type` (TemplateReferenceType) and `reference` parameters +* Add `get_screenshot` method to `Avatars` service +* Add `Theme`, `Timezone` and `Output` enums +* Add support for dart39 and flutter335 runtimes + ## 13.6.1 * Fix passing of `None` to nullable parameters From bb2d41b2b9dad758414b6b8024126fc0f452c6b0 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 19 Feb 2026 11:41:33 +0000 Subject: [PATCH 4/4] add missing entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5efbf5..d98302c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Add `dart-3.10` and `flutter-3.38` to `BuildRuntime` and `Runtime` enums * Fix `Roles` enum removed from Teams service; `roles` parameter now accepts `list[str]` +* Add support for the new `Backups` service ## 15.0.0