From 01868e856a10f474f74fbd1b4425dafdf949222f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 2 Dec 2025 11:24:23 -0500 Subject: [PATCH] enh: group members endpoint --- backend/open_webui/models/users.py | 10 ++++++++++ backend/open_webui/routers/groups.py | 20 +++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index 424d9676a5..86f9d011e8 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -452,6 +452,16 @@ class UsersTable: "total": total, } + def get_users_by_group_id(self, group_id: str) -> list[UserModel]: + with get_db() as db: + users = ( + db.query(User) + .join(GroupMember, User.id == GroupMember.user_id) + .filter(GroupMember.group_id == group_id) + .all() + ) + return [UserModel.model_validate(user) for user in users] + def get_users_by_user_ids(self, user_ids: list[str]) -> list[UserStatusModel]: with get_db() as db: users = db.query(User).filter(User.id.in_(user_ids)).all() diff --git a/backend/open_webui/routers/groups.py b/backend/open_webui/routers/groups.py index 05d52c5c7b..7d2efcf899 100755 --- a/backend/open_webui/routers/groups.py +++ b/backend/open_webui/routers/groups.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import Optional import logging -from open_webui.models.users import Users +from open_webui.models.users import Users, UserInfoResponse from open_webui.models.groups import ( Groups, GroupForm, @@ -118,6 +118,24 @@ async def export_group_by_id(id: str, user=Depends(get_admin_user)): ) +############################ +# GetUsersInGroupById +############################ + + +@router.post("/id/{id}/users", response_model=list[UserInfoResponse]) +async def get_users_in_group(id: str, user=Depends(get_admin_user)): + try: + users = Users.get_users_by_group_id(id) + return users + except Exception as e: + log.exception(f"Error adding users to group {id}: {e}") + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=ERROR_MESSAGES.DEFAULT(e), + ) + + ############################ # UpdateGroupById ############################