From 8e92d4f2429a71b55c351d4c5bcc52d63eae4498 Mon Sep 17 00:00:00 2001 From: radu-mocanu Date: Wed, 28 May 2025 14:15:17 +0300 Subject: [PATCH] feat: add folder support for job retrieve --- pyproject.toml | 2 +- src/uipath/_services/jobs_service.py | 66 ++++++++++++++++++++++++++-- uv.lock | 2 +- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2c7309a4..6eacebc0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath" -version = "2.0.61" +version = "2.0.62" description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools." readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.10" diff --git a/src/uipath/_services/jobs_service.py b/src/uipath/_services/jobs_service.py index ece1917d..64ce5e24 100644 --- a/src/uipath/_services/jobs_service.py +++ b/src/uipath/_services/jobs_service.py @@ -113,8 +113,6 @@ async def resume_async( async def main(): # noqa: D103 payload = await sdk.jobs.resume_async(job_id="38073051", payload="The response") - print(payload) - asyncio.run(main()) ``` @@ -154,11 +152,35 @@ def custom_headers(self) -> Dict[str, str]: def retrieve( self, job_key: str, + *, + folder_key: Optional[str] = None, + folder_path: Optional[str] = None, ) -> Job: - spec = self._retrieve_spec(job_key=job_key) + """Retrieve a job identified by its key. + + Args: + job_key (str): The job unique identifier. + folder_key (Optional[str]): The key of the folder in which the job was executed. + folder_path (Optional[str]): The path of the folder in which the job was executed. + + Returns: + Job: The retrieved job. + + Examples: + ```python + from uipath import UiPath + + sdk = UiPath() + job = sdk.jobs.retrieve(job_key="ee9327fd-237d-419e-86ef-9946b34461e3", folder_path="Shared") + ``` + """ + spec = self._retrieve_spec( + job_key=job_key, folder_key=folder_key, folder_path=folder_path + ) response = self.request( spec.method, url=spec.endpoint, + headers=spec.headers, ) return Job.model_validate(response.json()) @@ -166,11 +188,42 @@ def retrieve( async def retrieve_async( self, job_key: str, + *, + folder_key: Optional[str] = None, + folder_path: Optional[str] = None, ) -> Job: - spec = self._retrieve_spec(job_key=job_key) + """Asynchronously retrieve a job identified by its key. + + Args: + job_key (str): The job unique identifier. + folder_key (Optional[str]): The key of the folder in which the job was executed. + folder_path (Optional[str]): The path of the folder in which the job was executed. + + Returns: + Job: The retrieved job. + + Examples: + ```python + import asyncio + + from uipath import UiPath + + sdk = UiPath() + + + async def main(): # noqa: D103 + job = await sdk.jobs.retrieve_async(job_key="ee9327fd-237d-419e-86ef-9946b34461e3", folder_path="Shared") + + asyncio.run(main()) + ``` + """ + spec = self._retrieve_spec( + job_key=job_key, folder_key=folder_key, folder_path=folder_path + ) response = await self.request_async( spec.method, url=spec.endpoint, + headers=spec.headers, ) return Job.model_validate(response.json()) @@ -268,12 +321,17 @@ def _retrieve_spec( self, *, job_key: str, + folder_key: Optional[str] = None, + folder_path: Optional[str] = None, ) -> RequestSpec: return RequestSpec( method="GET", endpoint=Endpoint( f"/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.GetByKey(identifier={job_key})" ), + headers={ + **header_folder(folder_key, folder_path), + }, ) @traced(name="jobs_list_attachments", run_type="uipath") diff --git a/uv.lock b/uv.lock index 803984a5..6ecf6769 100644 --- a/uv.lock +++ b/uv.lock @@ -3111,7 +3111,7 @@ wheels = [ [[package]] name = "uipath" -version = "2.0.60" +version = "2.0.62" source = { editable = "." } dependencies = [ { name = "azure-monitor-opentelemetry" },