From 6831007dada68d621e1a8a8e669f1cd79f3d12d5 Mon Sep 17 00:00:00 2001 From: cthomas Date: Tue, 16 Sep 2025 17:10:18 -0700 Subject: [PATCH] feat: add active filter to jobs endpoint and deprecate list active jobs (#2966) --- letta/server/rest_api/routers/v1/jobs.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/letta/server/rest_api/routers/v1/jobs.py b/letta/server/rest_api/routers/v1/jobs.py index cf11e3c2..2a39c7ed 100644 --- a/letta/server/rest_api/routers/v1/jobs.py +++ b/letta/server/rest_api/routers/v1/jobs.py @@ -19,18 +19,23 @@ async def list_jobs( before: Optional[str] = Query(None, description="Cursor for pagination"), after: Optional[str] = Query(None, description="Cursor for pagination"), limit: Optional[int] = Query(50, description="Limit for pagination"), + active: bool = Query(False, description="Filter for active jobs."), ascending: bool = Query(True, description="Whether to sort jobs oldest to newest (True, default) or newest to oldest (False)"), headers: HeaderParams = Depends(get_headers), ): """ List all jobs. - TODO (cliandy): implementation for pagination """ actor = await server.user_manager.get_actor_or_default_async(actor_id=headers.actor_id) + statuses = None + if active: + statuses = [JobStatus.created, JobStatus.running] + # TODO: add filtering by status return await server.job_manager.list_jobs_async( actor=actor, + statuses=statuses, source_id=source_id, before=before, after=after, @@ -39,7 +44,7 @@ async def list_jobs( ) -@router.get("/active", response_model=List[Job], operation_id="list_active_jobs") +@router.get("/active", response_model=List[Job], operation_id="list_active_jobs", deprecated=True) async def list_active_jobs( server: "SyncServer" = Depends(get_letta_server), headers: HeaderParams = Depends(get_headers),