from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict class SnapshotPolicyCreate(BaseModel): categories: list[str] action_type: str params: dict = {} label: str is_active: bool = True class SnapshotPolicyUpdate(BaseModel): categories: Optional[list[str]] = None action_type: Optional[str] = None params: Optional[dict] = None label: Optional[str] = None is_active: Optional[bool] = None class SnapshotPolicyRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int categories: list[str] action_type: str params: dict label: str is_active: bool created_at: datetime updated_at: datetime class PolicySnapshotStatus(BaseModel): policy_id: int policy_label: str categories: list[str] action_type: str params: dict last_collected_at: Optional[datetime] = None success_count: int total_devices: int class ObjectSnapshotSummary(BaseModel): object_id: int object_name: str city: Optional[str] = None client: Optional[str] = None policies: list[PolicySnapshotStatus]