"""Pydantic models for Baota panel API.""" from typing import Optional from pydantic import BaseModel, Field class BtPanelConfigUpdate(BaseModel): base_url: Optional[str] = Field(None, max_length=500) api_key: Optional[str] = Field(None, max_length=256) verify_ssl: Optional[bool] = None auto_bootstrap: Optional[bool] = None class BtPanelGlobalSettingsUpdate(BaseModel): bt_panel_source_ip: Optional[str] = Field(None, max_length=64) bt_panel_auto_bootstrap_enabled: Optional[bool] = None class BtPanelBatchBootstrap(BaseModel): server_ids: list[int] = Field(..., min_length=1, max_length=500) class BtPanelSiteAction(BaseModel): site_id: int name: str = Field(..., min_length=1, max_length=255) class BtPanelCreateSite(BaseModel): webname: str = Field(..., min_length=1) path: str = Field(..., min_length=1) type_id: int = 0 type: str = "PHP" version: str = "74" port: str = "80" ps: str = "" ftp: bool = False sql: bool = False class BtPanelDomainAdd(BaseModel): id: int webname: str domain: str port: str = "80" class BtPanelDomainDelete(BaseModel): id: int webname: str domain: str port: str = "80" class BtPanelSetSsl(BaseModel): siteName: str key: str csr: str class BtPanelApplyCert(BaseModel): domains: str auth_type: str = "http" id: int class BtPanelCreateDatabase(BaseModel): name: str = Field(..., min_length=1, max_length=64) codeing: str = "utf8mb4" db_user: str = "" password: str = "" ps: str = "" dtype: str = "MySQL" dataAccess: str = "127.0.0.1" address: str = "127.0.0.1" class BtPanelDbPassword(BaseModel): id: int name: str password: str = Field(..., min_length=6) class BtPanelDbBackup(BaseModel): id: int class BtPanelServiceAction(BaseModel): name: str = Field(..., min_length=1, max_length=64) type: str = Field(..., pattern=r"^(start|stop|restart|reload)$")