57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
"""User settings Pydantic models."""
|
|
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class EnvironmentSettings(BaseModel):
|
|
"""Settings for a specific environment (IFT/PSI/PROD).
|
|
|
|
According to DB_API_CONTRACT_V2.md:
|
|
- apiMode, withClassify, resetSessionMode have defaults
|
|
- All other fields are nullable (Optional)
|
|
"""
|
|
|
|
apiMode: str = "bench"
|
|
bearerToken: Optional[str] = None
|
|
systemPlatform: Optional[str] = None
|
|
systemPlatformUser: Optional[str] = None
|
|
platformUserId: Optional[str] = None
|
|
platformId: Optional[str] = None
|
|
withClassify: bool = False
|
|
resetSessionMode: bool = True
|
|
|
|
|
|
class EnvironmentSettingsUpdate(BaseModel):
|
|
"""Partial update for environment settings (for PATCH requests).
|
|
|
|
All fields are optional to support partial updates.
|
|
"""
|
|
|
|
apiMode: Optional[str] = None
|
|
bearerToken: Optional[str] = None
|
|
systemPlatform: Optional[str] = None
|
|
systemPlatformUser: Optional[str] = None
|
|
platformUserId: Optional[str] = None
|
|
platformId: Optional[str] = None
|
|
withClassify: Optional[bool] = None
|
|
resetSessionMode: Optional[bool] = None
|
|
|
|
|
|
class UserSettings(BaseModel):
|
|
"""User settings for all environments."""
|
|
|
|
user_id: str
|
|
settings: dict[str, EnvironmentSettings] # ift, psi, prod
|
|
updated_at: str
|
|
|
|
|
|
class UserSettingsUpdate(BaseModel):
|
|
"""Partial update user settings request (PATCH).
|
|
|
|
Only the environments/fields provided will be updated.
|
|
Unprovided fields remain unchanged.
|
|
"""
|
|
|
|
settings: dict[str, EnvironmentSettingsUpdate]
|