DesertWolf's picture
Upload folder using huggingface_hub
447ebeb verified
"""
Enterprise internal user management endpoints
"""
from fastapi import APIRouter, Depends, HTTPException
from litellm.proxy._types import UserAPIKeyAuth
from litellm.proxy.management_endpoints.internal_user_endpoints import user_api_key_auth
router = APIRouter()
@router.get(
"/user/available_users",
tags=["Internal User management"],
dependencies=[Depends(user_api_key_auth)],
)
async def available_enterprise_users(
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
):
"""
For keys with `max_users` set, return the list of users that are allowed to use the key.
"""
from litellm.proxy._types import CommonProxyErrors
from litellm.proxy.proxy_server import (
premium_user,
premium_user_data,
prisma_client,
)
if prisma_client is None:
raise HTTPException(
status_code=500,
detail={"error": CommonProxyErrors.db_not_connected_error.value},
)
if premium_user is None:
raise HTTPException(
status_code=500, detail={"error": CommonProxyErrors.not_premium_user.value}
)
# Count number of rows in LiteLLM_UserTable
user_count = await prisma_client.db.litellm_usertable.count()
return {
"total_users": premium_user_data.get("max_users")
if premium_user_data
else None,
"total_users_used": user_count,
"total_users_remaining": premium_user_data.get("max_users", 0) - user_count
if premium_user_data
else None,
}