From 6f4c5fefeef7b53acbdfb5abe431b02d6eaaad90 Mon Sep 17 00:00:00 2001 From: William FH <13333726+hinthornw@users.noreply.github.com> Date: Wed, 3 Sep 2025 08:49:11 +0800 Subject: [PATCH] feat(sdk-py): Support ids filtering in threads search (#6067) --- libs/sdk-py/langgraph_sdk/__init__.py | 2 +- libs/sdk-py/langgraph_sdk/auth/types.py | 3 +++ libs/sdk-py/langgraph_sdk/client.py | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/sdk-py/langgraph_sdk/__init__.py b/libs/sdk-py/langgraph_sdk/__init__.py index 337441c25..87cf2696e 100644 --- a/libs/sdk-py/langgraph_sdk/__init__.py +++ b/libs/sdk-py/langgraph_sdk/__init__.py @@ -1,6 +1,6 @@ from langgraph_sdk.auth import Auth from langgraph_sdk.client import get_client, get_sync_client -__version__ = "0.2.4" +__version__ = "0.2.5" __all__ = ["Auth", "get_client", "get_sync_client"] diff --git a/libs/sdk-py/langgraph_sdk/auth/types.py b/libs/sdk-py/langgraph_sdk/auth/types.py index c0260ee72..0e138839b 100644 --- a/libs/sdk-py/langgraph_sdk/auth/types.py +++ b/libs/sdk-py/langgraph_sdk/auth/types.py @@ -489,6 +489,9 @@ class ThreadsSearch(typing.TypedDict, total=False): offset: int """Offset for pagination.""" + ids: Sequence[UUID] | None + """typing.Optional list of thread IDs to filter by.""" + thread_id: UUID | None """typing.Optional thread ID to filter by.""" diff --git a/libs/sdk-py/langgraph_sdk/client.py b/libs/sdk-py/langgraph_sdk/client.py index b1f0116f9..37f402508 100644 --- a/libs/sdk-py/langgraph_sdk/client.py +++ b/libs/sdk-py/langgraph_sdk/client.py @@ -1309,6 +1309,7 @@ class ThreadsClient: *, metadata: Json = None, values: Json = None, + ids: Sequence[str] | None = None, status: ThreadStatus | None = None, limit: int = 10, offset: int = 0, @@ -1323,6 +1324,7 @@ class ThreadsClient: Args: metadata: Thread metadata to filter on. values: State values to filter on. + ids: List of thread IDs to filter by. status: Thread status to filter on. Must be one of 'idle', 'busy', 'interrupted' or 'error'. limit: Limit on number of threads to return. @@ -1356,6 +1358,8 @@ class ThreadsClient: payload["metadata"] = metadata if values: payload["values"] = values + if ids: + payload["ids"] = ids if status: payload["status"] = status if sort_by: @@ -4454,6 +4458,7 @@ class SyncThreadsClient: *, metadata: Json = None, values: Json = None, + ids: Sequence[str] | None = None, status: ThreadStatus | None = None, limit: int = 10, offset: int = 0, @@ -4468,6 +4473,7 @@ class SyncThreadsClient: Args: metadata: Thread metadata to filter on. values: State values to filter on. + ids: List of thread IDs to filter by. status: Thread status to filter on. Must be one of 'idle', 'busy', 'interrupted' or 'error'. limit: Limit on number of threads to return. @@ -4497,6 +4503,8 @@ class SyncThreadsClient: payload["metadata"] = metadata if values: payload["values"] = values + if ids: + payload["ids"] = ids if status: payload["status"] = status if sort_by: