"""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]