diff --git a/appwrite_console/client.py b/appwrite_console/client.py index 0750fb1..4c0f6ec 100644 --- a/appwrite_console/client.py +++ b/appwrite_console/client.py @@ -359,8 +359,10 @@ def flatten(self, data, prefix='', stringify=False): for key in data: value = data[key] if isinstance(data, dict) else key - finalKey = prefix + '[' + key + ']' if prefix else key - finalKey = prefix + '[' + str(i) + ']' if isinstance(data, list) else finalKey + if isinstance(data, list): + finalKey = prefix + '[' + str(i) + ']' + else: + finalKey = prefix + '[' + key + ']' if prefix else key i += 1 if isinstance(value, list) or isinstance(value, dict): diff --git a/appwrite_console/service.py b/appwrite_console/service.py index abc7cf4..226ca5c 100644 --- a/appwrite_console/service.py +++ b/appwrite_console/service.py @@ -29,6 +29,20 @@ def _normalize_value(self, value: Any) -> Any: return value + def _validate_string_list(self, name: str, value: Any, nullable_items: bool = False) -> None: + """Validate item types; generated required checks handle missing lists.""" + if value is None: + return + + if not isinstance(value, list) or any( + not isinstance(self._normalize_value(item), str) and not (nullable_items and item is None) for item in value + ): + expected = 'strings or None' if nullable_items else 'strings' + raise AppwriteException( + f'Invalid parameter: "{name}" must be a list of {expected}.', + type='sdk_input_validation', + ) + def _parse_response(self, response: Any, model: Optional[Type[ModelType]] = None) -> Any: if model is None: return response diff --git a/appwrite_console/services/account.py b/appwrite_console/services/account.py index ca549ee..5a68427 100644 --- a/appwrite_console/services/account.py +++ b/appwrite_console/services/account.py @@ -196,6 +196,7 @@ def list_billing_addresses( api_path = '/account/billing-addresses' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -461,6 +462,7 @@ def list_consents( api_path = '/account/consents' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -591,6 +593,7 @@ def list_consent_tokens( api_params = {} if consent_id is None: raise AppwriteException('Missing required parameter: "consent_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{consentId}', str(self._normalize_value(consent_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -821,6 +824,7 @@ def list_identities( api_path = '/account/identities' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -902,6 +906,7 @@ def list_invoices( api_path = '/account/invoices' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1030,6 +1035,7 @@ def create_key( raise AppwriteException('Missing required parameter: "name"') if scopes is None: raise AppwriteException('Missing required parameter: "scopes"') + self._validate_string_list('scopes', scopes) api_params['name'] = self._normalize_value(name) api_params['scopes'] = self._normalize_value(scopes) if expire is not None: @@ -1127,6 +1133,7 @@ def update_key( raise AppwriteException('Missing required parameter: "name"') if scopes is None: raise AppwriteException('Missing required parameter: "scopes"') + self._validate_string_list('scopes', scopes) api_path = api_path.replace('{keyId}', str(self._normalize_value(key_id))) api_params['name'] = self._normalize_value(name) api_params['scopes'] = self._normalize_value(scopes) @@ -1214,6 +1221,7 @@ def list_logs( api_path = '/account/logs' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -1741,6 +1749,7 @@ def list_payment_methods( api_path = '/account/payment-methods' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -2494,6 +2503,7 @@ def create_o_auth2_session( api_params = {} if provider is None: raise AppwriteException('Missing required parameter: "provider"') + self._validate_string_list('scopes', scopes) api_path = api_path.replace('{provider}', str(self._normalize_value(provider))) if success is not None: api_params['success'] = self._normalize_value(success) @@ -3063,6 +3073,7 @@ def create_o_auth2_token( api_params = {} if provider is None: raise AppwriteException('Missing required parameter: "provider"') + self._validate_string_list('scopes', scopes) api_path = api_path.replace('{provider}', str(self._normalize_value(provider))) if success is not None: api_params['success'] = self._normalize_value(success) diff --git a/appwrite_console/services/activities.py b/appwrite_console/services/activities.py index dea3fc4..d2a1aa4 100644 --- a/appwrite_console/services/activities.py +++ b/appwrite_console/services/activities.py @@ -36,6 +36,7 @@ def list_events( api_path = '/activities/events' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/advisor.py b/appwrite_console/services/advisor.py index 2d89a7c..3b2c83f 100644 --- a/appwrite_console/services/advisor.py +++ b/appwrite_console/services/advisor.py @@ -41,6 +41,7 @@ def list_reports( api_path = '/reports' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -170,6 +171,7 @@ def list_insights( api_params = {} if report_id is None: raise AppwriteException('Missing required parameter: "report_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{reportId}', str(self._normalize_value(report_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/affiliates.py b/appwrite_console/services/affiliates.py index 7b833da..8bdb64e 100644 --- a/appwrite_console/services/affiliates.py +++ b/appwrite_console/services/affiliates.py @@ -39,6 +39,7 @@ def list_links( api_path = '/affiliates/links' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -205,6 +206,7 @@ def list_referrals( api_path = '/affiliates/referrals' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -244,6 +246,7 @@ def list_rewards( api_path = '/affiliates/rewards' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/apps.py b/appwrite_console/services/apps.py index c4df12b..ffcf161 100644 --- a/appwrite_console/services/apps.py +++ b/appwrite_console/services/apps.py @@ -48,6 +48,7 @@ def list( api_path = '/apps' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -149,6 +150,11 @@ def create( raise AppwriteException('Missing required parameter: "name"') if redirect_uris is None: raise AppwriteException('Missing required parameter: "redirect_uris"') + self._validate_string_list('redirect_uris', redirect_uris) + self._validate_string_list('contacts', contacts) + self._validate_string_list('tags', tags) + self._validate_string_list('images', images) + self._validate_string_list('post_logout_redirect_uris', post_logout_redirect_uris) api_params['appId'] = self._normalize_value(app_id) api_params['name'] = self._normalize_value(name) if description is not None: @@ -385,6 +391,12 @@ def update( raise AppwriteException('Missing required parameter: "app_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('contacts', contacts) + self._validate_string_list('tags', tags) + self._validate_string_list('images', images) + self._validate_string_list('redirect_uris', redirect_uris) + self._validate_string_list('post_logout_redirect_uris', post_logout_redirect_uris) + self._validate_string_list('installation_scopes', installation_scopes) api_path = api_path.replace('{appId}', str(self._normalize_value(app_id))) api_params['name'] = self._normalize_value(name) if description is not None: @@ -510,6 +522,7 @@ def list_installations( api_params = {} if app_id is None: raise AppwriteException('Missing required parameter: "app_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{appId}', str(self._normalize_value(app_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -700,6 +713,7 @@ def list_keys( api_params = {} if app_id is None: raise AppwriteException('Missing required parameter: "app_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{appId}', str(self._normalize_value(app_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -883,6 +897,7 @@ def update_labels( raise AppwriteException('Missing required parameter: "app_id"') if labels is None: raise AppwriteException('Missing required parameter: "labels"') + self._validate_string_list('labels', labels) api_path = api_path.replace('{appId}', str(self._normalize_value(app_id))) api_params['labels'] = self._normalize_value(labels) @@ -931,6 +946,7 @@ def list_secrets( api_params = {} if app_id is None: raise AppwriteException('Missing required parameter: "app_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{appId}', str(self._normalize_value(app_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/avatars.py b/appwrite_console/services/avatars.py index 1deb036..42d8604 100644 --- a/appwrite_console/services/avatars.py +++ b/appwrite_console/services/avatars.py @@ -560,6 +560,7 @@ def get_screenshot( api_params = {} if url is None: raise AppwriteException('Missing required parameter: "url"') + self._validate_string_list('permissions', permissions) api_params['url'] = self._normalize_value(url) if headers is not None: api_params['headers'] = self._normalize_value(headers) diff --git a/appwrite_console/services/backups.py b/appwrite_console/services/backups.py index 34c8236..9a1def4 100644 --- a/appwrite_console/services/backups.py +++ b/appwrite_console/services/backups.py @@ -41,6 +41,7 @@ def list_archives( api_path = '/backups/archives' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -85,6 +86,7 @@ def create_archive( api_params = {} if services is None: raise AppwriteException('Missing required parameter: "services"') + self._validate_string_list('services', services) api_params['services'] = self._normalize_value(services) if resource_id is not None: api_params['resourceId'] = self._normalize_value(resource_id) @@ -207,6 +209,7 @@ def list_policies( api_path = '/backups/policies' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -272,6 +275,7 @@ def create_policy( raise AppwriteException('Missing required parameter: "retention"') if schedule is None: raise AppwriteException('Missing required parameter: "schedule"') + self._validate_string_list('services', services) api_params['policyId'] = self._normalize_value(policy_id) if name is not None: api_params['name'] = self._normalize_value(name) @@ -483,6 +487,7 @@ def create_restoration( raise AppwriteException('Missing required parameter: "archive_id"') if services is None: raise AppwriteException('Missing required parameter: "services"') + self._validate_string_list('services', services) api_params['archiveId'] = self._normalize_value(archive_id) api_params['services'] = self._normalize_value(services) if new_resource_id is not None: @@ -527,6 +532,7 @@ def list_restorations( api_path = '/backups/restorations' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/console.py b/appwrite_console/services/console.py index a08f53b..2bd2501 100644 --- a/appwrite_console/services/console.py +++ b/appwrite_console/services/console.py @@ -142,6 +142,7 @@ def list_databases( api_path = '/console/databases' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: diff --git a/appwrite_console/services/databases.py b/appwrite_console/services/databases.py index bfc26df..97915df 100644 --- a/appwrite_console/services/databases.py +++ b/appwrite_console/services/databases.py @@ -78,6 +78,7 @@ def list( api_path = '/databases' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -179,6 +180,7 @@ def list_transactions( api_path = '/databases/transactions' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -604,6 +606,7 @@ def list_collections( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -678,6 +681,7 @@ def create_collection( raise AppwriteException('Missing required parameter: "collection_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_params['collectionId'] = self._normalize_value(collection_id) api_params['name'] = self._normalize_value(name) @@ -803,6 +807,7 @@ def update_collection( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if name is not None: @@ -918,6 +923,7 @@ def list_attributes( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -1584,6 +1590,7 @@ def create_enum_attribute( raise AppwriteException('Missing required parameter: "elements"') if required is None: raise AppwriteException('Missing required parameter: "required"') + self._validate_string_list('elements', elements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['key'] = self._normalize_value(key) @@ -1662,6 +1669,7 @@ def update_enum_attribute( raise AppwriteException('Missing required parameter: "elements"') if required is None: raise AppwriteException('Missing required parameter: "required"') + self._validate_string_list('elements', elements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{key}', str(self._normalize_value(key))) @@ -3826,6 +3834,7 @@ def list_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -3903,6 +3912,7 @@ def create_document( raise AppwriteException('Missing required parameter: "document_id"') if data is None: raise AppwriteException('Missing required parameter: "data"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['documentId'] = self._normalize_value(document_id) @@ -4102,6 +4112,7 @@ def update_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if data is not None: @@ -4168,6 +4179,7 @@ def delete_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -4237,6 +4249,7 @@ def get_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -4309,6 +4322,7 @@ def upsert_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -4384,6 +4398,7 @@ def update_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -4669,6 +4684,7 @@ def list_indexes( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -4744,6 +4760,8 @@ def create_index( raise AppwriteException('Missing required parameter: "type"') if attributes is None: raise AppwriteException('Missing required parameter: "attributes"') + self._validate_string_list('attributes', attributes) + self._validate_string_list('orders', orders) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['key'] = self._normalize_value(key) diff --git a/appwrite_console/services/documents_db.py b/appwrite_console/services/documents_db.py index 26a4d30..baea56f 100644 --- a/appwrite_console/services/documents_db.py +++ b/appwrite_console/services/documents_db.py @@ -56,6 +56,7 @@ def list( api_path = '/documentsdb' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -195,6 +196,7 @@ def list_transactions( api_path = '/documentsdb/transactions' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -563,6 +565,7 @@ def list_collections( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -634,6 +637,7 @@ def create_collection( raise AppwriteException('Missing required parameter: "collection_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_params['collectionId'] = self._normalize_value(collection_id) api_params['name'] = self._normalize_value(name) @@ -755,6 +759,7 @@ def update_collection( raise AppwriteException('Missing required parameter: "collection_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['name'] = self._normalize_value(name) @@ -873,6 +878,7 @@ def list_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -944,6 +950,7 @@ def create_document( raise AppwriteException('Missing required parameter: "document_id"') if data is None: raise AppwriteException('Missing required parameter: "data"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['documentId'] = self._normalize_value(document_id) @@ -1127,6 +1134,7 @@ def update_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if data is not None: @@ -1190,6 +1198,7 @@ def delete_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -1256,6 +1265,7 @@ def get_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -1325,6 +1335,7 @@ def upsert_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -1397,6 +1408,7 @@ def update_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -1670,6 +1682,7 @@ def list_indexes( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -1742,6 +1755,8 @@ def create_index( raise AppwriteException('Missing required parameter: "type"') if attributes is None: raise AppwriteException('Missing required parameter: "attributes"') + self._validate_string_list('attributes', attributes) + self._validate_string_list('orders', orders) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['key'] = self._normalize_value(key) diff --git a/appwrite_console/services/domains.py b/appwrite_console/services/domains.py index c388cc9..41b757b 100644 --- a/appwrite_console/services/domains.py +++ b/appwrite_console/services/domains.py @@ -48,6 +48,7 @@ def list( api_path = '/domains' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -353,6 +354,7 @@ def list_suggestions( api_params = {} if query is None: raise AppwriteException('Missing required parameter: "query"') + self._validate_string_list('tlds', tlds) api_params['query'] = self._normalize_value(query) if tlds is not None: api_params['tlds'] = self._normalize_value(tlds) @@ -694,6 +696,7 @@ def update_nameservers( api_params = {} if domain_id is None: raise AppwriteException('Missing required parameter: "domain_id"') + self._validate_string_list('nameservers', nameservers) api_path = api_path.replace('{domainId}', str(self._normalize_value(domain_id))) if nameservers is not None: api_params['nameservers'] = self._normalize_value(nameservers) @@ -1276,6 +1279,7 @@ def list_records( api_params = {} if domain_id is None: raise AppwriteException('Missing required parameter: "domain_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{domainId}', str(self._normalize_value(domain_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/embeddings.py b/appwrite_console/services/embeddings.py index 90acf12..716d115 100644 --- a/appwrite_console/services/embeddings.py +++ b/appwrite_console/services/embeddings.py @@ -41,6 +41,7 @@ def create_text_embeddings( api_params = {} if texts is None: raise AppwriteException('Missing required parameter: "texts"') + self._validate_string_list('texts', texts) api_params['texts'] = self._normalize_value(texts) if model is not None: api_params['model'] = self._normalize_value(model) diff --git a/appwrite_console/services/functions.py b/appwrite_console/services/functions.py index 83ba442..94acda0 100644 --- a/appwrite_console/services/functions.py +++ b/appwrite_console/services/functions.py @@ -60,6 +60,7 @@ def list( api_path = '/functions' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -172,6 +173,11 @@ def create( raise AppwriteException('Missing required parameter: "name"') if runtime is None: raise AppwriteException('Missing required parameter: "runtime"') + self._validate_string_list('execute', execute) + self._validate_string_list('events', events) + self._validate_string_list('scopes', scopes) + self._validate_string_list('provider_branches', provider_branches) + self._validate_string_list('provider_paths', provider_paths) api_params['functionId'] = self._normalize_value(function_id) api_params['name'] = self._normalize_value(name) api_params['runtime'] = self._normalize_value(runtime) @@ -333,6 +339,8 @@ def list_templates( api_path = '/functions/templates' api_params = {} + self._validate_string_list('runtimes', runtimes) + self._validate_string_list('use_cases', use_cases) if runtimes is not None: api_params['runtimes'] = self._normalize_value(runtimes) if use_cases is not None: @@ -527,6 +535,11 @@ def update( raise AppwriteException('Missing required parameter: "function_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('execute', execute) + self._validate_string_list('events', events) + self._validate_string_list('scopes', scopes) + self._validate_string_list('provider_branches', provider_branches) + self._validate_string_list('provider_paths', provider_paths) api_path = api_path.replace('{functionId}', str(self._normalize_value(function_id))) api_params['name'] = self._normalize_value(name) if runtime is not None: @@ -705,6 +718,7 @@ def list_deployments( api_params = {} if function_id is None: raise AppwriteException('Missing required parameter: "function_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{functionId}', str(self._normalize_value(function_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1219,6 +1233,7 @@ def list_executions( api_params = {} if function_id is None: raise AppwriteException('Missing required parameter: "function_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{functionId}', str(self._normalize_value(function_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1432,6 +1447,7 @@ def list_variables( api_params = {} if function_id is None: raise AppwriteException('Missing required parameter: "function_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{functionId}', str(self._normalize_value(function_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/messaging.py b/appwrite_console/services/messaging.py index 2c07f92..e2431a8 100644 --- a/appwrite_console/services/messaging.py +++ b/appwrite_console/services/messaging.py @@ -51,6 +51,7 @@ def list_messages( api_path = '/messaging/messages' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -133,6 +134,12 @@ def create_email( raise AppwriteException('Missing required parameter: "subject"') if content is None: raise AppwriteException('Missing required parameter: "content"') + self._validate_string_list('topics', topics) + self._validate_string_list('users', users) + self._validate_string_list('targets', targets) + self._validate_string_list('cc', cc) + self._validate_string_list('bcc', bcc) + self._validate_string_list('attachments', attachments) api_params['messageId'] = self._normalize_value(message_id) api_params['subject'] = self._normalize_value(subject) api_params['content'] = self._normalize_value(content) @@ -227,6 +234,12 @@ def update_email( api_params = {} if message_id is None: raise AppwriteException('Missing required parameter: "message_id"') + self._validate_string_list('topics', topics) + self._validate_string_list('users', users) + self._validate_string_list('targets', targets) + self._validate_string_list('cc', cc) + self._validate_string_list('bcc', bcc) + self._validate_string_list('attachments', attachments) api_path = api_path.replace('{messageId}', str(self._normalize_value(message_id))) if topics is not None: api_params['topics'] = self._normalize_value(topics) @@ -344,6 +357,9 @@ def create_push( api_params = {} if message_id is None: raise AppwriteException('Missing required parameter: "message_id"') + self._validate_string_list('topics', topics) + self._validate_string_list('users', users) + self._validate_string_list('targets', targets) api_params['messageId'] = self._normalize_value(message_id) if title is not None: api_params['title'] = self._normalize_value(title) @@ -475,6 +491,9 @@ def update_push( api_params = {} if message_id is None: raise AppwriteException('Missing required parameter: "message_id"') + self._validate_string_list('topics', topics) + self._validate_string_list('users', users) + self._validate_string_list('targets', targets) api_path = api_path.replace('{messageId}', str(self._normalize_value(message_id))) if topics is not None: api_params['topics'] = self._normalize_value(topics) @@ -572,6 +591,9 @@ def create_sms( raise AppwriteException('Missing required parameter: "message_id"') if content is None: raise AppwriteException('Missing required parameter: "content"') + self._validate_string_list('topics', topics) + self._validate_string_list('users', users) + self._validate_string_list('targets', targets) api_params['messageId'] = self._normalize_value(message_id) api_params['content'] = self._normalize_value(content) if topics is not None: @@ -642,6 +664,9 @@ def update_sms( api_params = {} if message_id is None: raise AppwriteException('Missing required parameter: "message_id"') + self._validate_string_list('topics', topics) + self._validate_string_list('users', users) + self._validate_string_list('targets', targets) api_path = api_path.replace('{messageId}', str(self._normalize_value(message_id))) if topics is not None: api_params['topics'] = self._normalize_value(topics) @@ -781,6 +806,7 @@ def list_targets( api_params = {} if message_id is None: raise AppwriteException('Missing required parameter: "message_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{messageId}', str(self._normalize_value(message_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -829,6 +855,7 @@ def list_providers( api_path = '/messaging/providers' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -2755,6 +2782,7 @@ def list_topics( api_path = '/messaging/topics' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -2808,6 +2836,7 @@ def create_topic( raise AppwriteException('Missing required parameter: "topic_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('subscribe', subscribe) api_params['topicId'] = self._normalize_value(topic_id) api_params['name'] = self._normalize_value(name) if subscribe is not None: @@ -2898,6 +2927,7 @@ def update_topic( api_params = {} if topic_id is None: raise AppwriteException('Missing required parameter: "topic_id"') + self._validate_string_list('subscribe', subscribe) api_path = api_path.replace('{topicId}', str(self._normalize_value(topic_id))) if name is not None: api_params['name'] = self._normalize_value(name) @@ -2992,6 +3022,7 @@ def list_subscribers( api_params = {} if topic_id is None: raise AppwriteException('Missing required parameter: "topic_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{topicId}', str(self._normalize_value(topic_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/migrations.py b/appwrite_console/services/migrations.py index 6eb2464..9f342af 100644 --- a/appwrite_console/services/migrations.py +++ b/appwrite_console/services/migrations.py @@ -48,6 +48,7 @@ def list( api_path = '/migrations' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -111,6 +112,7 @@ def create_appwrite_migration( raise AppwriteException('Missing required parameter: "project_id"') if api_key is None: raise AppwriteException('Missing required parameter: "api_key"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['endpoint'] = self._normalize_value(endpoint) api_params['projectId'] = self._normalize_value(project_id) @@ -172,6 +174,7 @@ def get_appwrite_report( raise AppwriteException('Missing required parameter: "project_id"') if key is None: raise AppwriteException('Missing required parameter: "key"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['endpoint'] = self._normalize_value(endpoint) api_params['projectID'] = self._normalize_value(project_id) @@ -246,6 +249,8 @@ def create_csv_export( raise AppwriteException('Missing required parameter: "collection_id"') if filename is None: raise AppwriteException('Missing required parameter: "filename"') + self._validate_string_list('columns', columns) + self._validate_string_list('queries', queries) api_params['databaseId'] = self._normalize_value(database_id) api_params['collectionId'] = self._normalize_value(collection_id) api_params['filename'] = self._normalize_value(filename) @@ -377,6 +382,7 @@ def create_firebase_migration( raise AppwriteException('Missing required parameter: "resources"') if service_account is None: raise AppwriteException('Missing required parameter: "service_account"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['serviceAccount'] = self._normalize_value(service_account) @@ -424,6 +430,7 @@ def get_firebase_report( raise AppwriteException('Missing required parameter: "resources"') if service_account is None: raise AppwriteException('Missing required parameter: "service_account"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['serviceAccount'] = self._normalize_value(service_account) @@ -484,6 +491,8 @@ def create_json_export( raise AppwriteException('Missing required parameter: "collection_id"') if filename is None: raise AppwriteException('Missing required parameter: "filename"') + self._validate_string_list('columns', columns) + self._validate_string_list('queries', queries) api_params['databaseId'] = self._normalize_value(database_id) api_params['collectionId'] = self._normalize_value(collection_id) api_params['filename'] = self._normalize_value(filename) @@ -635,6 +644,7 @@ def create_n_host_migration( raise AppwriteException('Missing required parameter: "username"') if password is None: raise AppwriteException('Missing required parameter: "password"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['subdomain'] = self._normalize_value(subdomain) api_params['region'] = self._normalize_value(region) @@ -717,6 +727,7 @@ def get_n_host_report( raise AppwriteException('Missing required parameter: "username"') if password is None: raise AppwriteException('Missing required parameter: "password"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['subdomain'] = self._normalize_value(subdomain) api_params['region'] = self._normalize_value(region) @@ -793,6 +804,7 @@ def create_supabase_migration( raise AppwriteException('Missing required parameter: "username"') if password is None: raise AppwriteException('Missing required parameter: "password"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['endpoint'] = self._normalize_value(endpoint) api_params['apiKey'] = self._normalize_value(api_key) @@ -869,6 +881,7 @@ def get_supabase_report( raise AppwriteException('Missing required parameter: "username"') if password is None: raise AppwriteException('Missing required parameter: "password"') + self._validate_string_list('resources', resources) api_params['resources'] = self._normalize_value(resources) api_params['endpoint'] = self._normalize_value(endpoint) api_params['apiKey'] = self._normalize_value(api_key) diff --git a/appwrite_console/services/mongo.py b/appwrite_console/services/mongo.py index 692a8c6..5e4d44b 100644 --- a/appwrite_console/services/mongo.py +++ b/appwrite_console/services/mongo.py @@ -49,6 +49,7 @@ def list( api_path = '/mongo' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -131,6 +132,7 @@ def create( raise AppwriteException('Missing required parameter: "database_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('network_ip_allowlist', network_ip_allowlist) api_params['databaseId'] = self._normalize_value(database_id) api_params['name'] = self._normalize_value(name) if version is not None: @@ -330,6 +332,8 @@ def update( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('network_ip_allowlist', network_ip_allowlist) + self._validate_string_list('sql_api_allowed_statements', sql_api_allowed_statements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if name is not None: api_params['name'] = self._normalize_value(name) @@ -457,6 +461,7 @@ def list_backups( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -548,6 +553,7 @@ def list_backup_policies( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/mysql.py b/appwrite_console/services/mysql.py index f89f58f..c1e2489 100644 --- a/appwrite_console/services/mysql.py +++ b/appwrite_console/services/mysql.py @@ -51,6 +51,7 @@ def list( api_path = '/mysql' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -133,6 +134,7 @@ def create( raise AppwriteException('Missing required parameter: "database_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('network_ip_allowlist', network_ip_allowlist) api_params['databaseId'] = self._normalize_value(database_id) api_params['name'] = self._normalize_value(name) if version is not None: @@ -332,6 +334,8 @@ def update( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('network_ip_allowlist', network_ip_allowlist) + self._validate_string_list('sql_api_allowed_statements', sql_api_allowed_statements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if name is not None: api_params['name'] = self._normalize_value(name) @@ -459,6 +463,7 @@ def list_backups( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -550,6 +555,7 @@ def list_backup_policies( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/notifications.py b/appwrite_console/services/notifications.py index ce99d50..7e0e72a 100644 --- a/appwrite_console/services/notifications.py +++ b/appwrite_console/services/notifications.py @@ -36,6 +36,7 @@ def list( api_path = '/notifications' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/organization.py b/appwrite_console/services/organization.py index cf2aaf3..09cd553 100644 --- a/appwrite_console/services/organization.py +++ b/appwrite_console/services/organization.py @@ -164,6 +164,7 @@ def list_installations( api_path = '/organization/installations' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -381,6 +382,7 @@ def list_keys( api_path = '/organization/keys' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -437,6 +439,7 @@ def create_key( raise AppwriteException('Missing required parameter: "name"') if scopes is None: raise AppwriteException('Missing required parameter: "scopes"') + self._validate_string_list('scopes', scopes) api_params['keyId'] = self._normalize_value(key_id) api_params['name'] = self._normalize_value(name) api_params['scopes'] = self._normalize_value(scopes) @@ -535,6 +538,7 @@ def update_key( raise AppwriteException('Missing required parameter: "name"') if scopes is None: raise AppwriteException('Missing required parameter: "scopes"') + self._validate_string_list('scopes', scopes) api_path = api_path.replace('{keyId}', str(self._normalize_value(key_id))) api_params['name'] = self._normalize_value(name) api_params['scopes'] = self._normalize_value(scopes) @@ -624,6 +628,7 @@ def list_memberships( api_path = '/organization/memberships' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -684,6 +689,7 @@ def create_membership( api_params = {} if roles is None: raise AppwriteException('Missing required parameter: "roles"') + self._validate_string_list('roles', roles) if email is not None: api_params['email'] = self._normalize_value(email) if user_id is not None: @@ -780,6 +786,7 @@ def update_membership( raise AppwriteException('Missing required parameter: "membership_id"') if roles is None: raise AppwriteException('Missing required parameter: "roles"') + self._validate_string_list('roles', roles) api_path = api_path.replace('{membershipId}', str(self._normalize_value(membership_id))) api_params['roles'] = self._normalize_value(roles) @@ -866,6 +873,7 @@ def list_projects( api_path = '/organization/projects' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: diff --git a/appwrite_console/services/organizations.py b/appwrite_console/services/organizations.py index 12eb395..e11f5f9 100644 --- a/appwrite_console/services/organizations.py +++ b/appwrite_console/services/organizations.py @@ -69,6 +69,7 @@ def list( api_path = '/organizations' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -150,6 +151,7 @@ def create( raise AppwriteException('Missing required parameter: "name"') if billing_plan is None: raise AppwriteException('Missing required parameter: "billing_plan"') + self._validate_string_list('invites', invites) api_params['organizationId'] = self._normalize_value(organization_id) api_params['name'] = self._normalize_value(name) api_params['billingPlan'] = self._normalize_value(billing_plan) @@ -219,6 +221,7 @@ def estimation_create_organization( api_params = {} if billing_plan is None: raise AppwriteException('Missing required parameter: "billing_plan"') + self._validate_string_list('invites', invites) api_params['billingPlan'] = self._normalize_value(billing_plan) if payment_method_id is not None: api_params['paymentMethodId'] = self._normalize_value(payment_method_id) @@ -620,6 +623,7 @@ def list_aggregations( api_params = {} if organization_id is None: raise AppwriteException('Missing required parameter: "organization_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -964,6 +968,7 @@ def list_credits( api_params = {} if organization_id is None: raise AppwriteException('Missing required parameter: "organization_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1191,6 +1196,7 @@ def estimation_update_plan( raise AppwriteException('Missing required parameter: "organization_id"') if billing_plan is None: raise AppwriteException('Missing required parameter: "billing_plan"') + self._validate_string_list('invites', invites) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) api_params['billingPlan'] = self._normalize_value(billing_plan) if invites is not None: @@ -1305,6 +1311,7 @@ def list_invoices( api_params = {} if organization_id is None: raise AppwriteException('Missing required parameter: "organization_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1890,6 +1897,7 @@ def update_plan( raise AppwriteException('Missing required parameter: "organization_id"') if billing_plan is None: raise AppwriteException('Missing required parameter: "billing_plan"') + self._validate_string_list('invites', invites) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) api_params['billingPlan'] = self._normalize_value(billing_plan) if payment_method_id is not None: @@ -2000,6 +2008,7 @@ def create_plan_estimation( raise AppwriteException('Missing required parameter: "organization_id"') if billing_plan is None: raise AppwriteException('Missing required parameter: "billing_plan"') + self._validate_string_list('invites', invites) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) api_params['billingPlan'] = self._normalize_value(billing_plan) if invites is not None: @@ -2237,6 +2246,7 @@ def validate_payment( api_params = {} if organization_id is None: raise AppwriteException('Missing required parameter: "organization_id"') + self._validate_string_list('invites', invites) api_path = api_path.replace('{organizationId}', str(self._normalize_value(organization_id))) if invites is not None: api_params['invites'] = self._normalize_value(invites) diff --git a/appwrite_console/services/postgresql.py b/appwrite_console/services/postgresql.py index 37a4906..f1d6c95 100644 --- a/appwrite_console/services/postgresql.py +++ b/appwrite_console/services/postgresql.py @@ -52,6 +52,7 @@ def list( api_path = '/postgresql' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -134,6 +135,7 @@ def create( raise AppwriteException('Missing required parameter: "database_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('network_ip_allowlist', network_ip_allowlist) api_params['databaseId'] = self._normalize_value(database_id) api_params['name'] = self._normalize_value(name) if version is not None: @@ -333,6 +335,8 @@ def update( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('network_ip_allowlist', network_ip_allowlist) + self._validate_string_list('sql_api_allowed_statements', sql_api_allowed_statements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if name is not None: api_params['name'] = self._normalize_value(name) @@ -460,6 +464,7 @@ def list_backups( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -551,6 +556,7 @@ def list_backup_policies( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/presences.py b/appwrite_console/services/presences.py index 0609c51..bbc0677 100644 --- a/appwrite_console/services/presences.py +++ b/appwrite_console/services/presences.py @@ -44,6 +44,7 @@ def list( api_path = '/presences' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -182,6 +183,7 @@ def upsert( raise AppwriteException('Missing required parameter: "presence_id"') if status is None: raise AppwriteException('Missing required parameter: "status"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{presenceId}', str(self._normalize_value(presence_id))) api_params['status'] = self._normalize_value(status) if permissions is not None: @@ -245,6 +247,7 @@ def update( api_params = {} if presence_id is None: raise AppwriteException('Missing required parameter: "presence_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{presenceId}', str(self._normalize_value(presence_id))) if status is not None: api_params['status'] = self._normalize_value(status) diff --git a/appwrite_console/services/project.py b/appwrite_console/services/project.py index e75363c..1fa45a3 100644 --- a/appwrite_console/services/project.py +++ b/appwrite_console/services/project.py @@ -233,6 +233,7 @@ def list_keys( api_path = '/project/keys' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -291,6 +292,7 @@ def create_key( raise AppwriteException('Missing required parameter: "name"') if scopes is None: raise AppwriteException('Missing required parameter: "scopes"') + self._validate_string_list('scopes', scopes) api_params['keyId'] = self._normalize_value(key_id) api_params['name'] = self._normalize_value(name) api_params['scopes'] = self._normalize_value(scopes) @@ -343,6 +345,7 @@ def create_ephemeral_key( raise AppwriteException('Missing required parameter: "scopes"') if duration is None: raise AppwriteException('Missing required parameter: "duration"') + self._validate_string_list('scopes', scopes) api_params['scopes'] = self._normalize_value(scopes) api_params['duration'] = self._normalize_value(duration) @@ -438,6 +441,7 @@ def update_key( raise AppwriteException('Missing required parameter: "name"') if scopes is None: raise AppwriteException('Missing required parameter: "scopes"') + self._validate_string_list('scopes', scopes) api_path = api_path.replace('{keyId}', str(self._normalize_value(key_id))) api_params['name'] = self._normalize_value(name) api_params['scopes'] = self._normalize_value(scopes) @@ -523,6 +527,7 @@ def update_labels( api_params = {} if labels is None: raise AppwriteException('Missing required parameter: "labels"') + self._validate_string_list('labels', labels) api_params['labels'] = self._normalize_value(labels) response = self.client.call( @@ -565,6 +570,7 @@ def list_mock_phones( api_path = '/project/mock-phones' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -783,6 +789,7 @@ def list_o_auth2_providers( api_path = '/project/oauth2' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -873,6 +880,10 @@ def update_o_auth2_server( raise AppwriteException('Missing required parameter: "enabled"') if authorization_url is None: raise AppwriteException('Missing required parameter: "authorization_url"') + self._validate_string_list('scopes', scopes) + self._validate_string_list('authorization_details_types', authorization_details_types) + self._validate_string_list('default_scopes', default_scopes) + self._validate_string_list('installation_scopes', installation_scopes) api_params['enabled'] = self._normalize_value(enabled) api_params['authorizationUrl'] = self._normalize_value(authorization_url) if scopes is not None: @@ -1930,6 +1941,7 @@ def update_o_auth2_google( api_path = '/project/oauth2/google' api_params = {} + self._validate_string_list('prompt', prompt) if client_id is not None: api_params['clientId'] = self._normalize_value(client_id) if client_secret is not None: @@ -2315,6 +2327,7 @@ def update_o_auth2_oidc( api_path = '/project/oauth2/oidc' api_params = {} + self._validate_string_list('prompt', prompt) if client_id is not None: api_params['clientId'] = self._normalize_value(client_id) if client_secret is not None: @@ -3441,6 +3454,7 @@ def list_platforms( api_path = '/project/platforms' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -4118,6 +4132,7 @@ def list_policies( api_path = '/project/policies' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -5113,6 +5128,7 @@ def create_smtp_test( api_params = {} if emails is None: raise AppwriteException('Missing required parameter: "emails"') + self._validate_string_list('emails', emails) api_params['emails'] = self._normalize_value(emails) response = self.client.call( @@ -5154,6 +5170,7 @@ def list_email_templates( api_path = '/project/templates/email' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -5370,6 +5387,7 @@ def list_variables( api_path = '/project/variables' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: diff --git a/appwrite_console/services/projects.py b/appwrite_console/services/projects.py index e6f18ec..5a7b7a4 100644 --- a/appwrite_console/services/projects.py +++ b/appwrite_console/services/projects.py @@ -359,6 +359,7 @@ def list_dev_keys( api_params = {} if project_id is None: raise AppwriteException('Missing required parameter: "project_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{projectId}', str(self._normalize_value(project_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -558,6 +559,7 @@ def list_schedules( api_params = {} if project_id is None: raise AppwriteException('Missing required parameter: "project_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{projectId}', str(self._normalize_value(project_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/proxy.py b/appwrite_console/services/proxy.py index d29c3e8..8c14d77 100644 --- a/appwrite_console/services/proxy.py +++ b/appwrite_console/services/proxy.py @@ -97,6 +97,7 @@ def list_rules( api_path = '/proxy/rules' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: diff --git a/appwrite_console/services/sites.py b/appwrite_console/services/sites.py index b7d88e7..0df1a3c 100644 --- a/appwrite_console/services/sites.py +++ b/appwrite_console/services/sites.py @@ -61,6 +61,7 @@ def list( api_path = '/sites' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -181,6 +182,9 @@ def create( raise AppwriteException('Missing required parameter: "framework"') if build_runtime is None: raise AppwriteException('Missing required parameter: "build_runtime"') + self._validate_string_list('provider_branches', provider_branches) + self._validate_string_list('provider_paths', provider_paths) + self._validate_string_list('scopes', scopes) api_params['siteId'] = self._normalize_value(site_id) api_params['name'] = self._normalize_value(name) api_params['framework'] = self._normalize_value(framework) @@ -342,6 +346,8 @@ def list_templates( api_path = '/sites/templates' api_params = {} + self._validate_string_list('frameworks', frameworks) + self._validate_string_list('use_cases', use_cases) if frameworks is not None: api_params['frameworks'] = self._normalize_value(frameworks) if use_cases is not None: @@ -542,6 +548,9 @@ def update( raise AppwriteException('Missing required parameter: "name"') if framework is None: raise AppwriteException('Missing required parameter: "framework"') + self._validate_string_list('provider_branches', provider_branches) + self._validate_string_list('provider_paths', provider_paths) + self._validate_string_list('scopes', scopes) api_path = api_path.replace('{siteId}', str(self._normalize_value(site_id))) api_params['name'] = self._normalize_value(name) api_params['framework'] = self._normalize_value(framework) @@ -723,6 +732,7 @@ def list_deployments( api_params = {} if site_id is None: raise AppwriteException('Missing required parameter: "site_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{siteId}', str(self._normalize_value(site_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1234,6 +1244,7 @@ def list_logs( api_params = {} if site_id is None: raise AppwriteException('Missing required parameter: "site_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{siteId}', str(self._normalize_value(site_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1377,6 +1388,7 @@ def list_variables( api_params = {} if site_id is None: raise AppwriteException('Missing required parameter: "site_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{siteId}', str(self._normalize_value(site_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/storage.py b/appwrite_console/services/storage.py index 16ce8f9..b76f935 100644 --- a/appwrite_console/services/storage.py +++ b/appwrite_console/services/storage.py @@ -48,6 +48,7 @@ def list_buckets( api_path = '/storage/buckets' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -125,6 +126,8 @@ def create_bucket( raise AppwriteException('Missing required parameter: "bucket_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) + self._validate_string_list('allowed_file_extensions', allowed_file_extensions) api_params['bucketId'] = self._normalize_value(bucket_id) api_params['name'] = self._normalize_value(name) if permissions is not None: @@ -257,6 +260,8 @@ def update_bucket( raise AppwriteException('Missing required parameter: "bucket_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) + self._validate_string_list('allowed_file_extensions', allowed_file_extensions) api_path = api_path.replace('{bucketId}', str(self._normalize_value(bucket_id))) api_params['name'] = self._normalize_value(name) if permissions is not None: @@ -366,6 +371,7 @@ def list_files( api_params = {} if bucket_id is None: raise AppwriteException('Missing required parameter: "bucket_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{bucketId}', str(self._normalize_value(bucket_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -438,6 +444,7 @@ def create_file( raise AppwriteException('Missing required parameter: "file_id"') if file is None: raise AppwriteException('Missing required parameter: "file"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{bucketId}', str(self._normalize_value(bucket_id))) api_params['fileId'] = self._normalize_value(file_id) api_params['file'] = self._normalize_value(file) @@ -549,6 +556,7 @@ def update_file( raise AppwriteException('Missing required parameter: "bucket_id"') if file_id is None: raise AppwriteException('Missing required parameter: "file_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{bucketId}', str(self._normalize_value(bucket_id))) api_path = api_path.replace('{fileId}', str(self._normalize_value(file_id))) if name is not None: diff --git a/appwrite_console/services/tables_db.py b/appwrite_console/services/tables_db.py index fbdf802..84f70f8 100644 --- a/appwrite_console/services/tables_db.py +++ b/appwrite_console/services/tables_db.py @@ -82,6 +82,7 @@ def list( api_path = '/tablesdb' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -223,6 +224,7 @@ def list_transactions( api_path = '/tablesdb/transactions' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1049,6 +1051,7 @@ def list_tables( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1120,6 +1123,7 @@ def create_table( raise AppwriteException('Missing required parameter: "table_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_params['tableId'] = self._normalize_value(table_id) api_params['name'] = self._normalize_value(name) @@ -1239,6 +1243,7 @@ def update_table( raise AppwriteException('Missing required parameter: "database_id"') if table_id is None: raise AppwriteException('Missing required parameter: "table_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) if name is not None: @@ -1348,6 +1353,7 @@ def list_columns( raise AppwriteException('Missing required parameter: "database_id"') if table_id is None: raise AppwriteException('Missing required parameter: "table_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) if queries is not None: @@ -1987,6 +1993,7 @@ def create_enum_column( raise AppwriteException('Missing required parameter: "elements"') if required is None: raise AppwriteException('Missing required parameter: "required"') + self._validate_string_list('elements', elements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_params['key'] = self._normalize_value(key) @@ -2062,6 +2069,7 @@ def update_enum_column( raise AppwriteException('Missing required parameter: "elements"') if required is None: raise AppwriteException('Missing required parameter: "required"') + self._validate_string_list('elements', elements) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_path = api_path.replace('{key}', str(self._normalize_value(key))) @@ -4135,6 +4143,7 @@ def list_indexes( raise AppwriteException('Missing required parameter: "database_id"') if table_id is None: raise AppwriteException('Missing required parameter: "table_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) if queries is not None: @@ -4207,6 +4216,8 @@ def create_index( raise AppwriteException('Missing required parameter: "type"') if columns is None: raise AppwriteException('Missing required parameter: "columns"') + self._validate_string_list('columns', columns) + self._validate_string_list('orders', orders) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_params['key'] = self._normalize_value(key) @@ -4381,6 +4392,7 @@ def list_rows( raise AppwriteException('Missing required parameter: "database_id"') if table_id is None: raise AppwriteException('Missing required parameter: "table_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) if queries is not None: @@ -4455,6 +4467,7 @@ def create_row( raise AppwriteException('Missing required parameter: "row_id"') if data is None: raise AppwriteException('Missing required parameter: "data"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_params['rowId'] = self._normalize_value(row_id) @@ -4645,6 +4658,7 @@ def update_rows( raise AppwriteException('Missing required parameter: "database_id"') if table_id is None: raise AppwriteException('Missing required parameter: "table_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) if data is not None: @@ -4708,6 +4722,7 @@ def delete_rows( raise AppwriteException('Missing required parameter: "database_id"') if table_id is None: raise AppwriteException('Missing required parameter: "table_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) if queries is not None: @@ -4774,6 +4789,7 @@ def get_row( raise AppwriteException('Missing required parameter: "table_id"') if row_id is None: raise AppwriteException('Missing required parameter: "row_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_path = api_path.replace('{rowId}', str(self._normalize_value(row_id))) @@ -4843,6 +4859,7 @@ def upsert_row( raise AppwriteException('Missing required parameter: "table_id"') if row_id is None: raise AppwriteException('Missing required parameter: "row_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_path = api_path.replace('{rowId}', str(self._normalize_value(row_id))) @@ -4915,6 +4932,7 @@ def update_row( raise AppwriteException('Missing required parameter: "table_id"') if row_id is None: raise AppwriteException('Missing required parameter: "row_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{tableId}', str(self._normalize_value(table_id))) api_path = api_path.replace('{rowId}', str(self._normalize_value(row_id))) diff --git a/appwrite_console/services/teams.py b/appwrite_console/services/teams.py index c34bb31..b39558d 100644 --- a/appwrite_console/services/teams.py +++ b/appwrite_console/services/teams.py @@ -54,6 +54,7 @@ def list( api_path = '/teams' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -111,6 +112,7 @@ def create( raise AppwriteException('Missing required parameter: "team_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('roles', roles) api_params['teamId'] = self._normalize_value(team_id) api_params['name'] = self._normalize_value(name) if roles is not None: @@ -296,6 +298,7 @@ def list_installations( api_params = {} if team_id is None: raise AppwriteException('Missing required parameter: "team_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{teamId}', str(self._normalize_value(team_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -543,6 +546,7 @@ def list_logs( api_params = {} if team_id is None: raise AppwriteException('Missing required parameter: "team_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{teamId}', str(self._normalize_value(team_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -596,6 +600,7 @@ def list_memberships( api_params = {} if team_id is None: raise AppwriteException('Missing required parameter: "team_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{teamId}', str(self._normalize_value(team_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -668,6 +673,7 @@ def create_membership( raise AppwriteException('Missing required parameter: "team_id"') if roles is None: raise AppwriteException('Missing required parameter: "roles"') + self._validate_string_list('roles', roles) api_path = api_path.replace('{teamId}', str(self._normalize_value(team_id))) if email is not None: api_params['email'] = self._normalize_value(email) @@ -776,6 +782,7 @@ def update_membership( raise AppwriteException('Missing required parameter: "membership_id"') if roles is None: raise AppwriteException('Missing required parameter: "roles"') + self._validate_string_list('roles', roles) api_path = api_path.replace('{teamId}', str(self._normalize_value(team_id))) api_path = api_path.replace('{membershipId}', str(self._normalize_value(membership_id))) api_params['roles'] = self._normalize_value(roles) diff --git a/appwrite_console/services/tokens.py b/appwrite_console/services/tokens.py index 11755ef..dc2ad1b 100644 --- a/appwrite_console/services/tokens.py +++ b/appwrite_console/services/tokens.py @@ -49,6 +49,7 @@ def list( raise AppwriteException('Missing required parameter: "bucket_id"') if file_id is None: raise AppwriteException('Missing required parameter: "file_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{bucketId}', str(self._normalize_value(bucket_id))) api_path = api_path.replace('{fileId}', str(self._normalize_value(file_id))) if queries is not None: diff --git a/appwrite_console/services/usage.py b/appwrite_console/services/usage.py index f57449a..d3cc7e7 100644 --- a/appwrite_console/services/usage.py +++ b/appwrite_console/services/usage.py @@ -76,6 +76,9 @@ def list_events( api_params = {} if metrics is None: raise AppwriteException('Missing required parameter: "metrics"') + self._validate_string_list('metrics', metrics) + self._validate_string_list('queries', queries) + self._validate_string_list('dimensions', dimensions) api_params['metrics'] = self._normalize_value(metrics) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -174,6 +177,9 @@ def list_gauges( api_params = {} if metrics is None: raise AppwriteException('Missing required parameter: "metrics"') + self._validate_string_list('metrics', metrics) + self._validate_string_list('queries', queries) + self._validate_string_list('dimensions', dimensions) api_params['metrics'] = self._normalize_value(metrics) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/users.py b/appwrite_console/services/users.py index a8e5b55..ffab6a9 100644 --- a/appwrite_console/services/users.py +++ b/appwrite_console/services/users.py @@ -66,6 +66,7 @@ def list( api_path = '/users' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -304,6 +305,7 @@ def list_identities( api_path = '/users/identities' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -1039,6 +1041,7 @@ def update_labels( raise AppwriteException('Missing required parameter: "user_id"') if labels is None: raise AppwriteException('Missing required parameter: "labels"') + self._validate_string_list('labels', labels) api_path = api_path.replace('{userId}', str(self._normalize_value(user_id))) api_params['labels'] = self._normalize_value(labels) @@ -1087,6 +1090,7 @@ def list_logs( api_params = {} if user_id is None: raise AppwriteException('Missing required parameter: "user_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{userId}', str(self._normalize_value(user_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1140,6 +1144,7 @@ def list_memberships( api_params = {} if user_id is None: raise AppwriteException('Missing required parameter: "user_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{userId}', str(self._normalize_value(user_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -1970,6 +1975,7 @@ def list_targets( api_params = {} if user_id is None: raise AppwriteException('Missing required parameter: "user_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{userId}', str(self._normalize_value(user_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) diff --git a/appwrite_console/services/vcs.py b/appwrite_console/services/vcs.py index a013cac..a2d62b8 100644 --- a/appwrite_console/services/vcs.py +++ b/appwrite_console/services/vcs.py @@ -130,6 +130,7 @@ def list_repositories( raise AppwriteException('Missing required parameter: "installation_id"') if type is None: raise AppwriteException('Missing required parameter: "type"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{installationId}', str(self._normalize_value(installation_id))) api_params['type'] = self._normalize_value(type) if search is not None: @@ -298,6 +299,7 @@ def list_repository_branches( raise AppwriteException('Missing required parameter: "installation_id"') if provider_repository_id is None: raise AppwriteException('Missing required parameter: "provider_repository_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{installationId}', str(self._normalize_value(installation_id))) api_path = api_path.replace('{providerRepositoryId}', str(self._normalize_value(provider_repository_id))) if search is not None: @@ -456,6 +458,7 @@ def list_installations( api_path = '/vcs/installations' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: @@ -587,6 +590,7 @@ def list_namespaces( api_params = {} if installation_id is None: raise AppwriteException('Missing required parameter: "installation_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{installationId}', str(self._normalize_value(installation_id))) if search is not None: api_params['search'] = self._normalize_value(search) diff --git a/appwrite_console/services/vectors_db.py b/appwrite_console/services/vectors_db.py index e6da647..e2c5269 100644 --- a/appwrite_console/services/vectors_db.py +++ b/appwrite_console/services/vectors_db.py @@ -56,6 +56,7 @@ def list( api_path = '/vectorsdb' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -195,6 +196,7 @@ def list_transactions( api_path = '/vectorsdb/transactions' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -609,6 +611,7 @@ def list_collections( api_params = {} if database_id is None: raise AppwriteException('Missing required parameter: "database_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) if queries is not None: api_params['queries'] = self._normalize_value(queries) @@ -679,6 +682,7 @@ def create_collection( raise AppwriteException('Missing required parameter: "name"') if dimension is None: raise AppwriteException('Missing required parameter: "dimension"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_params['collectionId'] = self._normalize_value(collection_id) api_params['name'] = self._normalize_value(name) @@ -797,6 +801,7 @@ def update_collection( raise AppwriteException('Missing required parameter: "collection_id"') if name is None: raise AppwriteException('Missing required parameter: "name"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['name'] = self._normalize_value(name) @@ -915,6 +920,7 @@ def list_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -986,6 +992,7 @@ def create_document( raise AppwriteException('Missing required parameter: "document_id"') if data is None: raise AppwriteException('Missing required parameter: "data"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['documentId'] = self._normalize_value(document_id) @@ -1169,6 +1176,7 @@ def update_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if data is not None: @@ -1232,6 +1240,7 @@ def delete_documents( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -1299,6 +1308,7 @@ def create_query( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -1369,6 +1379,7 @@ def get_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -1438,6 +1449,7 @@ def upsert_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -1510,6 +1522,7 @@ def update_document( raise AppwriteException('Missing required parameter: "collection_id"') if document_id is None: raise AppwriteException('Missing required parameter: "document_id"') + self._validate_string_list('permissions', permissions) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_path = api_path.replace('{documentId}', str(self._normalize_value(document_id))) @@ -1627,6 +1640,7 @@ def list_indexes( raise AppwriteException('Missing required parameter: "database_id"') if collection_id is None: raise AppwriteException('Missing required parameter: "collection_id"') + self._validate_string_list('queries', queries) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) if queries is not None: @@ -1699,6 +1713,8 @@ def create_index( raise AppwriteException('Missing required parameter: "type"') if attributes is None: raise AppwriteException('Missing required parameter: "attributes"') + self._validate_string_list('attributes', attributes) + self._validate_string_list('orders', orders) api_path = api_path.replace('{databaseId}', str(self._normalize_value(database_id))) api_path = api_path.replace('{collectionId}', str(self._normalize_value(collection_id))) api_params['key'] = self._normalize_value(key) diff --git a/appwrite_console/services/waf.py b/appwrite_console/services/waf.py index 40503f3..f5983bf 100644 --- a/appwrite_console/services/waf.py +++ b/appwrite_console/services/waf.py @@ -47,6 +47,7 @@ def list_rules( api_path = '/waf/rules' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if search is not None: diff --git a/appwrite_console/services/webhooks.py b/appwrite_console/services/webhooks.py index a48ddd3..6a7dd99 100644 --- a/appwrite_console/services/webhooks.py +++ b/appwrite_console/services/webhooks.py @@ -39,6 +39,7 @@ def list( api_path = '/webhooks' api_params = {} + self._validate_string_list('queries', queries) if queries is not None: api_params['queries'] = self._normalize_value(queries) if total is not None: @@ -112,6 +113,7 @@ def create( raise AppwriteException('Missing required parameter: "name"') if events is None: raise AppwriteException('Missing required parameter: "events"') + self._validate_string_list('events', events) api_params['webhookId'] = self._normalize_value(webhook_id) api_params['url'] = self._normalize_value(url) api_params['name'] = self._normalize_value(name) @@ -233,6 +235,7 @@ def update( raise AppwriteException('Missing required parameter: "url"') if events is None: raise AppwriteException('Missing required parameter: "events"') + self._validate_string_list('events', events) api_path = api_path.replace('{webhookId}', str(self._normalize_value(webhook_id))) api_params['name'] = self._normalize_value(name) api_params['url'] = self._normalize_value(url) diff --git a/test/services/test_tables_db.py b/test/services/test_tables_db.py index 7521a37..46aa820 100644 --- a/test/services/test_tables_db.py +++ b/test/services/test_tables_db.py @@ -1,8 +1,11 @@ import json import requests_mock import unittest +from urllib.parse import parse_qs, urlparse from appwrite_console.client import Client +from appwrite_console.exception import AppwriteException +from appwrite_console.enums.order_by import OrderBy from appwrite_console.input_file import InputFile from appwrite_console.models import * from appwrite_console.services.tables_db import TablesDB @@ -568,6 +571,19 @@ def test_create_table(self, m): ) self.assertEqual(response.to_dict(), data) + @requests_mock.Mocker() + def test_create_table_rejects_invalid_permission_types(self, m): + for permissions in ([{'role': 'any'}], [42], 'read("any")'): + with self.subTest(permissions=permissions): + with self.assertRaises(AppwriteException) as raised: + self.tables_db.create_table('database-id', 'table-id', 'Table', permissions=permissions) + + self.assertEqual(raised.exception.code, 0) + self.assertEqual(raised.exception.type, 'sdk_input_validation') + self.assertIsNone(raised.exception.response) + self.assertIn('permissions', str(raised.exception)) + self.assertFalse(m.called) + @requests_mock.Mocker() def test_get_table(self, m): data = { @@ -1729,8 +1745,10 @@ def test_create_index(self, m): '', 'key', [], + orders=[OrderBy.ASC, 'desc'], ) self.assertEqual(response.to_dict(), data) + self.assertEqual(m.last_request.json()['orders'], ['asc', 'desc']) @requests_mock.Mocker() def test_get_index(self, m): @@ -1795,6 +1813,47 @@ def test_list_rows(self, m): ) self.assertEqual(response.to_dict(), data) + @requests_mock.Mocker() + def test_list_rows_rejects_invalid_query_types(self, m): + m.get(requests_mock.ANY, json={'total': 0, 'rows': []}, headers={'Content-Type': 'application/json'}) + + for queries in ( + [{'method': 'limit', 'values': [1]}], + [42], + ['{"method":"limit","values":[1]}', {'method': 'limit', 'values': [2]}], + [{'method': 'equal', 'attribute': 'name', 'values': ['Zoë 東京', {'active': True}]}, [False, 3]], + {'method': 'limit', 'values': [1]}, + '{"method":"limit","values":[1]}', + ): + with self.subTest(queries=queries): + with self.assertRaises(AppwriteException) as raised: + self.tables_db.list_rows('database-id', 'table-id', queries=queries) + + self.assertEqual(raised.exception.code, 0) + self.assertEqual(raised.exception.type, 'sdk_input_validation') + self.assertIsNone(raised.exception.response) + self.assertIn('queries', str(raised.exception)) + self.assertFalse(m.called) + + @requests_mock.Mocker() + def test_list_rows_preserves_encoded_queries(self, m): + encoded_queries = [ + json.dumps({'method': 'equal', 'attribute': 'name', 'values': ['Zoë 東京']}, ensure_ascii=False), + json.dumps({'method': 'limit', 'values': [1]}), + ] + data = {'total': 0, 'rows': []} + m.get(requests_mock.ANY, json=data, headers={'Content-Type': 'application/json'}) + + for queries in (encoded_queries, [], None): + with self.subTest(queries=queries): + response = self.tables_db.list_rows('database-id', 'table-id', queries=queries) + + self.assertEqual(response.to_dict(), data) + self.assertEqual( + parse_qs(urlparse(m.last_request.url).query), + {'queries[0]': [queries[0]], 'queries[1]': [queries[1]]} if queries else {}, + ) + @requests_mock.Mocker() def test_create_row(self, m): data = {