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 301ff5b7..31396fa3 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 fa3f8d46..4693d74b 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 7409c539..629e3351 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 6b40fada..8fe21cbc 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 2bc85522..171dbd95 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 193322a5..100c9cb2 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 1693189a..c223a4e1 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 00000000..97a6af17 --- /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 b2a834ae..76dd1421 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 dece20d7..ee73241c 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 8294a2f7..353d9d58 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 fbcdf915..2c7c92d2 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 f13e7235..64d747d9 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 f053cfcb..84cb1f8a 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 6365bc91..7f60cf76 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 7ddecdf4..224dacd9 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 e2b983fd..00000000 --- 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 763c1858..00000000 --- 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 67621796..00000000 --- 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 76d798cb..65981d64 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 249c660d..c731988e 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 313e81c1..013c6756 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 85848b42..981cf697 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 28124de5..ba6249be 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 31396fa3..589b2936 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 589b2936..e5efbf51 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 e5efbf51..d98302cf 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