""" LOGAR - Server Pydantic Models Provides structured request and response models for the LOGAR Server Hub API. """ from typing import Optional from pydantic import BaseModel class ClientEnrollRequest(BaseModel): client_id: str hostname: str os: str enrollment_secret: str class ClientActionRequest(BaseModel): client_id: str class LicenseImportRequest(BaseModel): ca_cert: str upstream_ca: Optional[str] = None class HermesTokenCreateRequest(BaseModel): name: str class HermesTokenRevokeRequest(BaseModel): token: str class ClientProfileExportRequest(BaseModel): server_host: Optional[str] = None server_port: Optional[int] = None client_id: Optional[str] = None class ChangePasswordRequest(BaseModel): old_password: str new_password: str class DbConnectionTestRequest(BaseModel): host: str = "localhost" port: int = 5432 database: str = "logar" user: str = "postgres" password: str = "" sslmode: str = "prefer" connect_timeout: int = 5 pool_size: int = 10 class DbSwitchBackendRequest(BaseModel): db_type: str = "sqlite" # "sqlite" | "postgres" host: Optional[str] = "localhost" port: Optional[int] = 5432 database: Optional[str] = "logar" user: Optional[str] = "postgres" password: Optional[str] = "" sslmode: Optional[str] = "prefer" connect_timeout: Optional[int] = 5 pool_size: Optional[int] = 10 db_path: Optional[str] = None class DbFullConfigRequest(BaseModel): storage_engine: str = "sqlite" # "sqlite" | "postgres" cache_mode: str = "direct" # "direct" | "buffered" flush_interval: float = 2.0 batch_size: int = 100 max_queue: int = 50000 encrypt_at_rest: bool = False pg_config: Optional[DbConnectionTestRequest] = None