Files
Nexus/server/api/btpanel_schemas.py
2026-07-08 22:31:31 +08:00

98 lines
2.3 KiB
Python

"""Pydantic models for Baota panel API."""
from typing import Optional
from pydantic import BaseModel, Field, model_validator
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(default_factory=list, max_length=500)
all_unconfigured: bool = False
@model_validator(mode="after")
def _require_targets(self) -> "BtPanelBatchBootstrap":
if not self.all_unconfigured and not self.server_ids:
raise ValueError("server_ids 不能为空,或设置 all_unconfigured=true")
return self
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)$")