From af95dd29325865ec30a1945b98e65e457760e003 Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Mon, 2 Jun 2025 21:22:49 -0700 Subject: [PATCH] feat: Add sortByColumn functionality to List Operation This change introduces the ability to sort results by a specific column in the List Operation. PiperOrigin-RevId: 766468964 --- .../clients/connections_client.py | 7 +++++++ .../integration_connector_tool.py | 6 +----- .../clients/test_connections_client.py | 1 + .../test_integration_connector_tool.py | 7 ++++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/google/adk/tools/application_integration_tool/clients/connections_client.py b/src/google/adk/tools/application_integration_tool/clients/connections_client.py index ec7e108..a214f5e 100644 --- a/src/google/adk/tools/application_integration_tool/clients/connections_client.py +++ b/src/google/adk/tools/application_integration_tool/clients/connections_client.py @@ -252,6 +252,12 @@ class ConnectionsClient: "Timeout in seconds for execution of custom query" ), }, + "sortByColumns": { + "type": "array", + "items": {"type": "string"}, + "default": [], + "description": "Column to sort the results by", + }, "connectorOutputPayload": {"type": "object"}, "nextPageToken": {"type": "string"}, "execute-connector_Response": { @@ -665,6 +671,7 @@ class ConnectionsClient: "serviceName": {"$ref": "#/components/schemas/serviceName"}, "host": {"$ref": "#/components/schemas/host"}, "entity": {"$ref": "#/components/schemas/entity"}, + "sortByColumns": {"$ref": "#/components/schemas/sortByColumns"}, "dynamicAuthConfig": { "$ref": "#/components/schemas/dynamicAuthConfig" }, diff --git a/src/google/adk/tools/application_integration_tool/integration_connector_tool.py b/src/google/adk/tools/application_integration_tool/integration_connector_tool.py index b3bb32a..4e5be59 100644 --- a/src/google/adk/tools/application_integration_tool/integration_connector_tool.py +++ b/src/google/adk/tools/application_integration_tool/integration_connector_tool.py @@ -64,11 +64,7 @@ class IntegrationConnectorTool(BaseTool): 'dynamic_auth_config', ] - OPTIONAL_FIELDS = [ - 'page_size', - 'page_token', - 'filter', - ] + OPTIONAL_FIELDS = ['page_size', 'page_token', 'filter', 'sortByColumns'] def __init__( self, diff --git a/tests/unittests/tools/application_integration_tool/clients/test_connections_client.py b/tests/unittests/tools/application_integration_tool/clients/test_connections_client.py index 84f41ab..bcff212 100644 --- a/tests/unittests/tools/application_integration_tool/clients/test_connections_client.py +++ b/tests/unittests/tools/application_integration_tool/clients/test_connections_client.py @@ -511,6 +511,7 @@ class TestConnectionsClient: assert schema["type"] == "object" assert "properties" in schema assert "filterClause" in schema["properties"] + assert "sortByColumns" in schema["properties"] def test_action_request(self): schema = ConnectionsClient.action_request("TestAction") diff --git a/tests/unittests/tools/application_integration_tool/test_integration_connector_tool.py b/tests/unittests/tools/application_integration_tool/test_integration_connector_tool.py index 16aef90..cd37a10 100644 --- a/tests/unittests/tools/application_integration_tool/test_integration_connector_tool.py +++ b/tests/unittests/tools/application_integration_tool/test_integration_connector_tool.py @@ -157,7 +157,11 @@ async def test_run_with_auth_async_none_token( integration_tool_with_auth, mock_rest_api_tool ): """Tests run_async when auth credential token is None.""" - input_args = {"user_id": "user456", "filter": "some_filter"} + input_args = { + "user_id": "user456", + "filter": "some_filter", + "sortByColumns": ["a", "b"], + } expected_call_args = { "user_id": "user456", "filter": "some_filter", @@ -168,6 +172,7 @@ async def test_run_with_auth_async_none_token( "entity": "TestEntity", "operation": "LIST", "action": "TestAction", + "sortByColumns": ["a", "b"], } with mock.patch(