from datetime import datetime from typing import Optional, List from pydantic import BaseModel ALLOWED_EVENTS = ["upstream_rate_changed", "upstream_unhealthy", "upstream_recovered"] class WebhookCreate(BaseModel): name: str type: str = "generic" # generic | dingtalk url: str secret: str = "" enabled: bool = True events: List[str] = ["upstream_rate_changed"] class WebhookUpdate(BaseModel): name: Optional[str] = None type: Optional[str] = None url: Optional[str] = None secret: Optional[str] = None enabled: Optional[bool] = None events: Optional[List[str]] = None class WebhookResponse(BaseModel): id: int name: str type: str url: str secret_masked: str # always "***" if set, else "" enabled: bool events: List[str] created_at: datetime updated_at: datetime model_config = {"from_attributes": True}