mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 02:34:29 +00:00
use 1 file for types
This commit is contained in:
parent
24978c92ca
commit
57e61bc4ed
2 changed files with 63 additions and 71 deletions
|
@ -5,26 +5,15 @@ Provides basic implementations of SCIM v2 endpoints for testing
|
|||
and integration purposes.
|
||||
"""
|
||||
|
||||
import json
|
||||
import uuid
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any, Dict, List, Optional, Union
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from fastapi import (
|
||||
APIRouter,
|
||||
Body,
|
||||
HTTPException,
|
||||
Path,
|
||||
Query,
|
||||
Request,
|
||||
Response,
|
||||
status,
|
||||
)
|
||||
from pydantic import BaseModel, EmailStr, Field
|
||||
from fastapi import APIRouter, Body, HTTPException, Path, Query, Response
|
||||
|
||||
from litellm._logging import verbose_proxy_logger
|
||||
from litellm.proxy._types import LiteLLM_UserTable, NewUserRequest, NewUserResponse
|
||||
from litellm.proxy.management_endpoints.internal_user_endpoints import new_user
|
||||
from litellm.types.proxy.management_endpoints.scim_v2 import *
|
||||
|
||||
scim_router = APIRouter(
|
||||
prefix="/scim/v2",
|
||||
|
@ -32,63 +21,6 @@ scim_router = APIRouter(
|
|||
)
|
||||
|
||||
|
||||
# SCIM Resource Models
|
||||
class SCIMResource(BaseModel):
|
||||
schemas: List[str]
|
||||
id: Optional[str] = None
|
||||
externalId: Optional[str] = None
|
||||
meta: Optional[Dict[str, Any]] = None
|
||||
|
||||
|
||||
class SCIMUserName(BaseModel):
|
||||
familyName: str
|
||||
givenName: str
|
||||
formatted: Optional[str] = None
|
||||
middleName: Optional[str] = None
|
||||
honorificPrefix: Optional[str] = None
|
||||
honorificSuffix: Optional[str] = None
|
||||
|
||||
|
||||
class SCIMUserEmail(BaseModel):
|
||||
value: EmailStr
|
||||
type: Optional[str] = None
|
||||
primary: Optional[bool] = None
|
||||
|
||||
|
||||
class SCIMUserGroup(BaseModel):
|
||||
value: str # Group ID
|
||||
display: Optional[str] = None # Group display name
|
||||
type: Optional[str] = "direct" # direct or indirect
|
||||
|
||||
|
||||
class SCIMUser(SCIMResource):
|
||||
userName: str
|
||||
name: SCIMUserName
|
||||
displayName: Optional[str] = None
|
||||
active: bool = True
|
||||
emails: Optional[List[SCIMUserEmail]] = None
|
||||
groups: Optional[List[SCIMUserGroup]] = None
|
||||
|
||||
|
||||
class SCIMMember(BaseModel):
|
||||
value: str # User ID
|
||||
display: Optional[str] = None # Username or email
|
||||
|
||||
|
||||
class SCIMGroup(SCIMResource):
|
||||
displayName: str
|
||||
members: Optional[List[SCIMMember]] = None
|
||||
|
||||
|
||||
# SCIM List Response Models
|
||||
class SCIMListResponse(BaseModel):
|
||||
schemas: List[str] = ["urn:ietf:params:scim:api:messages:2.0:ListResponse"]
|
||||
totalResults: int
|
||||
startIndex: Optional[int] = 1
|
||||
itemsPerPage: Optional[int] = 10
|
||||
Resources: List[Union[SCIMUser, SCIMGroup]]
|
||||
|
||||
|
||||
class ScimTransformations:
|
||||
DEFAULT_SCIM_NAME = "Unknown User"
|
||||
DEFAULT_SCIM_FAMILY_NAME = "Unknown Family Name"
|
||||
|
|
60
litellm/types/proxy/management_endpoints/scim_v2.py
Normal file
60
litellm/types/proxy/management_endpoints/scim_v2.py
Normal file
|
@ -0,0 +1,60 @@
|
|||
from typing import Any, Dict, List, Optional, Union
|
||||
|
||||
from pydantic import BaseModel, EmailStr
|
||||
|
||||
|
||||
# SCIM Resource Models
|
||||
class SCIMResource(BaseModel):
|
||||
schemas: List[str]
|
||||
id: Optional[str] = None
|
||||
externalId: Optional[str] = None
|
||||
meta: Optional[Dict[str, Any]] = None
|
||||
|
||||
|
||||
class SCIMUserName(BaseModel):
|
||||
familyName: str
|
||||
givenName: str
|
||||
formatted: Optional[str] = None
|
||||
middleName: Optional[str] = None
|
||||
honorificPrefix: Optional[str] = None
|
||||
honorificSuffix: Optional[str] = None
|
||||
|
||||
|
||||
class SCIMUserEmail(BaseModel):
|
||||
value: EmailStr
|
||||
type: Optional[str] = None
|
||||
primary: Optional[bool] = None
|
||||
|
||||
|
||||
class SCIMUserGroup(BaseModel):
|
||||
value: str # Group ID
|
||||
display: Optional[str] = None # Group display name
|
||||
type: Optional[str] = "direct" # direct or indirect
|
||||
|
||||
|
||||
class SCIMUser(SCIMResource):
|
||||
userName: str
|
||||
name: SCIMUserName
|
||||
displayName: Optional[str] = None
|
||||
active: bool = True
|
||||
emails: Optional[List[SCIMUserEmail]] = None
|
||||
groups: Optional[List[SCIMUserGroup]] = None
|
||||
|
||||
|
||||
class SCIMMember(BaseModel):
|
||||
value: str # User ID
|
||||
display: Optional[str] = None # Username or email
|
||||
|
||||
|
||||
class SCIMGroup(SCIMResource):
|
||||
displayName: str
|
||||
members: Optional[List[SCIMMember]] = None
|
||||
|
||||
|
||||
# SCIM List Response Models
|
||||
class SCIMListResponse(BaseModel):
|
||||
schemas: List[str] = ["urn:ietf:params:scim:api:messages:2.0:ListResponse"]
|
||||
totalResults: int
|
||||
startIndex: Optional[int] = 1
|
||||
itemsPerPage: Optional[int] = 10
|
||||
Resources: List[Union[SCIMUser, SCIMGroup]]
|
Loading…
Add table
Add a link
Reference in a new issue