mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 11:14:04 +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.
|
and integration purposes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timezone
|
from typing import List, Optional, Union
|
||||||
from typing import Any, Dict, List, Optional, Union
|
|
||||||
|
|
||||||
from fastapi import (
|
from fastapi import APIRouter, Body, HTTPException, Path, Query, Response
|
||||||
APIRouter,
|
|
||||||
Body,
|
|
||||||
HTTPException,
|
|
||||||
Path,
|
|
||||||
Query,
|
|
||||||
Request,
|
|
||||||
Response,
|
|
||||||
status,
|
|
||||||
)
|
|
||||||
from pydantic import BaseModel, EmailStr, Field
|
|
||||||
|
|
||||||
from litellm._logging import verbose_proxy_logger
|
from litellm._logging import verbose_proxy_logger
|
||||||
from litellm.proxy._types import LiteLLM_UserTable, NewUserRequest, NewUserResponse
|
from litellm.proxy._types import LiteLLM_UserTable, NewUserRequest, NewUserResponse
|
||||||
from litellm.proxy.management_endpoints.internal_user_endpoints import new_user
|
from litellm.proxy.management_endpoints.internal_user_endpoints import new_user
|
||||||
|
from litellm.types.proxy.management_endpoints.scim_v2 import *
|
||||||
|
|
||||||
scim_router = APIRouter(
|
scim_router = APIRouter(
|
||||||
prefix="/scim/v2",
|
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:
|
class ScimTransformations:
|
||||||
DEFAULT_SCIM_NAME = "Unknown User"
|
DEFAULT_SCIM_NAME = "Unknown User"
|
||||||
DEFAULT_SCIM_FAMILY_NAME = "Unknown Family Name"
|
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