diff --git a/ayon_api/__init__.py b/ayon_api/__init__.py index 9a099d4cc..7657f2b5c 100644 --- a/ayon_api/__init__.py +++ b/ayon_api/__init__.py @@ -103,6 +103,8 @@ delete_dependency_package, download_dependency_package, upload_dependency_package, + delete_addon, + delete_addon_version, upload_addon_zip, get_bundles, create_bundle, @@ -336,6 +338,8 @@ "delete_dependency_package", "download_dependency_package", "upload_dependency_package", + "delete_addon", + "delete_addon_version", "upload_addon_zip", "get_bundles", "create_bundle", diff --git a/ayon_api/_api.py b/ayon_api/_api.py index 898f8b634..8e855a082 100644 --- a/ayon_api/_api.py +++ b/ayon_api/_api.py @@ -1484,6 +1484,35 @@ def upload_dependency_package(*args, **kwargs): return con.upload_dependency_package(*args, **kwargs) +def delete_addon(*args, **kwargs): + """Delete addon from server. + + Delete all versions of addon from server. + + Args: + addon_name (str): Addon name. + purge (Optional[bool]): Purge all data related to the addon. + + """ + con = get_server_api_connection() + return con.delete_addon(*args, **kwargs) + + +def delete_addon_version(*args, **kwargs): + """Delete addon version from server. + + Delete all versions of addon from server. + + Args: + addon_name (str): Addon name. + addon_version (str): Addon version. + purge (Optional[bool]): Purge all data related to the addon. + + """ + con = get_server_api_connection() + return con.delete_addon_version(*args, **kwargs) + + def upload_addon_zip(*args, **kwargs): """Upload addon zip file to server. diff --git a/ayon_api/server_api.py b/ayon_api/server_api.py index 30da35ac2..50465658f 100644 --- a/ayon_api/server_api.py +++ b/ayon_api/server_api.py @@ -2849,6 +2849,47 @@ def upload_dependency_package( route = self._get_dependency_package_route(dst_filename) self.upload_file(route, src_filepath, progress=progress) + def delete_addon(self, addon_name: str, purge: Optional[bool] = None): + """Delete addon from server. + + Delete all versions of addon from server. + + Args: + addon_name (str): Addon name. + purge (Optional[bool]): Purge all data related to the addon. + + """ + query_data = {} + if purge is not None: + query_data["purge"] = "true" if purge else "false" + query = prepare_query_string(query_data) + + response = self.delete(f"addons/{addon_name}{query}") + response.raise_for_status() + + def delete_addon_version( + self, + addon_name: str, + addon_version: str, + purge: Optional[bool] = None, + ): + """Delete addon version from server. + + Delete all versions of addon from server. + + Args: + addon_name (str): Addon name. + addon_version (str): Addon version. + purge (Optional[bool]): Purge all data related to the addon. + + """ + query_data = {} + if purge is not None: + query_data["purge"] = "true" if purge else "false" + query = prepare_query_string(query_data) + response = self.delete(f"addons/{addon_name}/{addon_version}{query}") + response.raise_for_status() + def upload_addon_zip(self, src_filepath, progress=None): """Upload addon zip file to server.