From c923054192e3aa5a5bc0d36067c23b39d74dc833 Mon Sep 17 00:00:00 2001 From: Andrei Ancuta Date: Tue, 24 Mar 2026 12:22:55 +0200 Subject: [PATCH 1/2] fix: ignore unknown activity parameters instead of throwing --- .../connections/_connections_service.py | 4 --- .../services/test_connections_service.py | 28 +++++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/uipath-platform/src/uipath/platform/connections/_connections_service.py b/packages/uipath-platform/src/uipath/platform/connections/_connections_service.py index 56b52ac71..af3bb4f78 100644 --- a/packages/uipath-platform/src/uipath/platform/connections/_connections_service.py +++ b/packages/uipath-platform/src/uipath/platform/connections/_connections_service.py @@ -761,10 +761,6 @@ def _build_activity_request_spec( multipart_params[param_name] = value elif param_name in activity_metadata.parameter_location_info.body_fields: body_fields[param_name] = value - else: - raise ValueError( - f"Parameter {param_name} does not exist in activity metadata." - ) # path parameter handling for key, value in path_params.items(): diff --git a/packages/uipath-platform/tests/services/test_connections_service.py b/packages/uipath-platform/tests/services/test_connections_service.py index 79f8e043d..3aac233ea 100644 --- a/packages/uipath-platform/tests/services/test_connections_service.py +++ b/packages/uipath-platform/tests/services/test_connections_service.py @@ -1617,13 +1617,13 @@ def test_invoke_activity_with_none_values_filtered( request_json = json.loads(sent_request.content.decode()) assert request_json == {"body_field1": "value1"} - def test_invoke_activity_unknown_parameter_raises_error( + def test_invoke_activity_unknown_parameter_is_ignored( self, httpx_mock: HTTPXMock, service: ConnectionsService, simple_activity_metadata: ActivityMetadata, ) -> None: - """Test that unknown parameters raise a ValueError.""" + """Test that unknown parameters are ignored.""" connection_id = "test-connection-123" activity_input = { "unknown_param": "value", # This parameter doesn't exist in metadata @@ -1634,16 +1634,22 @@ def test_invoke_activity_unknown_parameter_raises_error( status_code=200, json={"id": connection_id, "name": "Test", "elementInstanceId": 1}, ) + httpx_mock.add_response( + method="POST", + status_code=200, + json={}, + ) - with pytest.raises( - ValueError, - match="Parameter unknown_param does not exist in activity metadata", - ): - service.invoke_activity( - activity_metadata=simple_activity_metadata, - connection_id=connection_id, - activity_input=activity_input, - ) + service.invoke_activity( + activity_metadata=simple_activity_metadata, + connection_id=connection_id, + activity_input=activity_input, + ) + + requests = httpx_mock.get_requests() + sent_request = requests[1] + request_json = json.loads(sent_request.content.decode()) + assert "unknown_param" not in request_json def test_invoke_activity_unsupported_content_type_raises_error( self, From 471f8617dedc61643dc0e5ae85ad74627044d90f Mon Sep 17 00:00:00 2001 From: Andrei Ancuta Date: Tue, 24 Mar 2026 12:23:31 +0200 Subject: [PATCH 2/2] feat: bump version --- packages/uipath-platform/pyproject.toml | 2 +- .../services/test_connections_service.py | 41 +++++++++++++++++++ packages/uipath-platform/uv.lock | 2 +- packages/uipath/pyproject.toml | 4 +- packages/uipath/uv.lock | 4 +- 5 files changed, 47 insertions(+), 6 deletions(-) diff --git a/packages/uipath-platform/pyproject.toml b/packages/uipath-platform/pyproject.toml index 2751a0141..c9a630490 100644 --- a/packages/uipath-platform/pyproject.toml +++ b/packages/uipath-platform/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath-platform" -version = "0.1.7" +version = "0.1.8" description = "HTTP client library for programmatic access to UiPath Platform" readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.11" diff --git a/packages/uipath-platform/tests/services/test_connections_service.py b/packages/uipath-platform/tests/services/test_connections_service.py index 3aac233ea..75c89b517 100644 --- a/packages/uipath-platform/tests/services/test_connections_service.py +++ b/packages/uipath-platform/tests/services/test_connections_service.py @@ -1648,9 +1648,50 @@ def test_invoke_activity_unknown_parameter_is_ignored( requests = httpx_mock.get_requests() sent_request = requests[1] + assert "unknown_param" not in sent_request.url.params + assert "unknown_param" not in str(sent_request.url.path) + assert "unknown_param" not in sent_request.headers request_json = json.loads(sent_request.content.decode()) assert "unknown_param" not in request_json + def test_invoke_activity_unknown_parameter_is_ignored_multipart( + self, + httpx_mock: HTTPXMock, + service: ConnectionsService, + multipart_activity_metadata: ActivityMetadata, + ) -> None: + """Test that unknown parameters are ignored in multipart requests.""" + connection_id = "test-connection-123" + activity_input = { + "unknown_param": "value", # This parameter doesn't exist in metadata + } + + httpx_mock.add_response( + method="GET", + status_code=200, + json={"id": connection_id, "name": "Test", "elementInstanceId": 1}, + ) + httpx_mock.add_response( + method="POST", + status_code=200, + json={}, + ) + + service.invoke_activity( + activity_metadata=multipart_activity_metadata, + connection_id=connection_id, + activity_input=activity_input, + ) + + requests = httpx_mock.get_requests() + sent_request = requests[1] + + assert "unknown_param" not in sent_request.url.params + assert "unknown_param" not in str(sent_request.url.path) + assert "unknown_param" not in sent_request.headers + body = sent_request.content.decode("utf-8", errors="replace") + assert "unknown_param" not in body + def test_invoke_activity_unsupported_content_type_raises_error( self, httpx_mock: HTTPXMock, diff --git a/packages/uipath-platform/uv.lock b/packages/uipath-platform/uv.lock index 07d625968..fecbb12ab 100644 --- a/packages/uipath-platform/uv.lock +++ b/packages/uipath-platform/uv.lock @@ -1088,7 +1088,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.7" +version = "0.1.8" source = { editable = "." } dependencies = [ { name = "httpx" }, diff --git a/packages/uipath/pyproject.toml b/packages/uipath/pyproject.toml index 73d3c31bd..5fc4920f8 100644 --- a/packages/uipath/pyproject.toml +++ b/packages/uipath/pyproject.toml @@ -1,13 +1,13 @@ [project] name = "uipath" -version = "2.10.27" +version = "2.10.28" 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.11" dependencies = [ "uipath-core>=0.5.2, <0.6.0", "uipath-runtime>=0.9.1, <0.10.0", - "uipath-platform>=0.1.4, <0.2.0", + "uipath-platform>=0.1.8, <0.2.0", "click>=8.3.1", "httpx>=0.28.1", "pyjwt>=2.10.1", diff --git a/packages/uipath/uv.lock b/packages/uipath/uv.lock index de7c45b02..3d869b701 100644 --- a/packages/uipath/uv.lock +++ b/packages/uipath/uv.lock @@ -2543,7 +2543,7 @@ wheels = [ [[package]] name = "uipath" -version = "2.10.27" +version = "2.10.28" source = { editable = "." } dependencies = [ { name = "applicationinsights" }, @@ -2682,7 +2682,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.7" +version = "0.1.8" source = { editable = "../uipath-platform" } dependencies = [ { name = "httpx" },