From 8d5328ac530d7ec5da7584ee8094fa18e8955176 Mon Sep 17 00:00:00 2001 From: Roderik-WU Date: Sat, 1 Nov 2025 10:16:59 +0100 Subject: [PATCH] feat: Add "list_resources" function to the wmill sdk --- python-client/wmill/wmill/client.py | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/python-client/wmill/wmill/client.py b/python-client/wmill/wmill/client.py index d01eb55762..0f8deb9ea1 100644 --- a/python-client/wmill/wmill/client.py +++ b/python-client/wmill/wmill/client.py @@ -534,6 +534,35 @@ class Windmill: json={"value": value}, ) + def list_resources( + self, + resource_type: str = None, + page: int = None, + per_page: int = None, + ) -> list[dict]: + """List resources from Windmill workspace. + + Args: + resource_type: Optional resource type to filter by (e.g., "postgresql", "mysql", "s3") + page: Optional page number for pagination + per_page: Optional number of results per page + + Returns: + List of resource dictionaries + """ + params = {} + if resource_type is not None: + params["resource_type"] = resource_type + if page is not None: + params["page"] = page + if per_page is not None: + params["per_page"] = per_page + + return self.get( + f"/w/{self.workspace}/resources/list", + params=params if params else None, + ).json() + def set_state(self, value: Any): self.set_resource(value, path=self.state_path, resource_type="state") @@ -1263,6 +1292,36 @@ def set_resource(path: str, value: Any, resource_type: str = "any") -> None: return _client.set_resource(value=value, path=path, resource_type=resource_type) +@init_global_client +def list_resources( + resource_type: str = None, + page: int = None, + per_page: int = None, +) -> list[dict]: + """List resources from Windmill workspace. + + Args: + resource_type: Optional resource type to filter by (e.g., "postgresql", "mysql", "s3") + page: Optional page number for pagination + per_page: Optional number of results per page + + Returns: + List of resource dictionaries + + Example: + >>> # Get all resources + >>> all_resources = wmill.list_resources() + + >>> # Get only PostgreSQL resources + >>> pg_resources = wmill.list_resources(resource_type="postgresql") + """ + return _client.list_resources( + resource_type=resource_type, + page=page, + per_page=per_page, + ) + + @init_global_client def set_state(value: Any) -> None: """