move scim folder

This commit is contained in:
Ishaan Jaff 2025-04-16 16:53:32 -07:00
parent 10d399a714
commit ce71e85543
3 changed files with 83 additions and 2 deletions

View file

@ -451,6 +451,47 @@ async def delete_user(
) )
@scim_router.patch(
"/Users/{user_id}",
response_model=SCIMUser,
status_code=200,
dependencies=[Depends(set_scim_content_type)],
)
async def patch_user(
user_id: str = Path(..., title="User ID"),
patch_ops: SCIMPatchOp = Body(...),
):
"""
Patch a user according to SCIM v2 protocol
"""
from litellm.proxy.proxy_server import prisma_client
if prisma_client is None:
raise HTTPException(status_code=500, detail={"error": "No database connected"})
verbose_proxy_logger.debug("SCIM PATCH USER request: %s", patch_ops)
try:
# Check if user exists
existing_user = await prisma_client.db.litellm_usertable.find_unique(
where={"user_id": user_id}
)
if not existing_user:
raise HTTPException(
status_code=404, detail={"error": f"User not found with ID: {user_id}"}
)
return None
except HTTPException:
raise
except Exception as e:
raise HTTPException(
status_code=500, detail={"error": f"Error patching user: {str(e)}"}
)
# Group Endpoints # Group Endpoints
@scim_router.get( @scim_router.get(
"/Groups", "/Groups",
@ -816,3 +857,43 @@ async def delete_group(
raise HTTPException( raise HTTPException(
status_code=500, detail={"error": f"Error deleting group: {str(e)}"} status_code=500, detail={"error": f"Error deleting group: {str(e)}"}
) )
@scim_router.patch(
"/Groups/{group_id}",
response_model=SCIMGroup,
status_code=200,
dependencies=[Depends(set_scim_content_type)],
)
async def patch_group(
group_id: str = Path(..., title="Group ID"),
patch_ops: SCIMPatchOp = Body(...),
):
"""
Patch a group according to SCIM v2 protocol
"""
from litellm.proxy.proxy_server import prisma_client
if prisma_client is None:
raise HTTPException(status_code=500, detail={"error": "No database connected"})
verbose_proxy_logger.debug("SCIM PATCH GROUP request: %s", patch_ops)
try:
# Check if group exists
existing_team = await prisma_client.db.litellm_teamtable.find_unique(
where={"team_id": group_id}
)
if not existing_team:
raise HTTPException(
status_code=404,
detail={"error": f"Group not found with ID: {group_id}"},
)
return None
except HTTPException:
raise
except Exception as e:
raise HTTPException(
status_code=500, detail={"error": f"Error patching group: {str(e)}"}
)

View file

@ -1,4 +1,4 @@
from typing import Any, Dict, List, Optional, Union from typing import Any, Dict, List, Literal, Optional, Union
from fastapi import HTTPException from fastapi import HTTPException
from pydantic import BaseModel, EmailStr from pydantic import BaseModel, EmailStr
@ -72,7 +72,7 @@ class SCIMListResponse(BaseModel):
# SCIM PATCH Operation Models # SCIM PATCH Operation Models
class SCIMPatchOperation(BaseModel): class SCIMPatchOperation(BaseModel):
op: str # add, remove, replace op: Literal["add", "remove", "replace"]
path: Optional[str] = None path: Optional[str] = None
value: Optional[Any] = None value: Optional[Any] = None