Initial commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional, Any
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class AuthConfigBearer(BaseModel):
|
||||
token: str = ""
|
||||
|
||||
|
||||
class AuthConfigApiKey(BaseModel):
|
||||
key: str = ""
|
||||
header: str = "Authorization"
|
||||
|
||||
|
||||
class AuthConfigLoginPassword(BaseModel):
|
||||
email: str = ""
|
||||
password: str = ""
|
||||
login_path: str = "/auth/login"
|
||||
|
||||
|
||||
class UpstreamCreate(BaseModel):
|
||||
name: str
|
||||
base_url: str
|
||||
api_prefix: str = "/api/v1"
|
||||
auth_type: str = "login_password" # none | bearer | api_key | login_password
|
||||
auth_config: dict[str, Any] = {}
|
||||
rate_endpoint: str = "/groups/rates"
|
||||
groups_endpoint: str = "/groups/available"
|
||||
enabled: bool = True
|
||||
check_interval_seconds: int = 600
|
||||
timeout_seconds: int = 30
|
||||
|
||||
|
||||
class UpstreamUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
base_url: Optional[str] = None
|
||||
api_prefix: Optional[str] = None
|
||||
auth_type: Optional[str] = None
|
||||
auth_config: Optional[dict[str, Any]] = None
|
||||
rate_endpoint: Optional[str] = None
|
||||
groups_endpoint: Optional[str] = None
|
||||
enabled: Optional[bool] = None
|
||||
check_interval_seconds: Optional[int] = None
|
||||
timeout_seconds: Optional[int] = None
|
||||
|
||||
|
||||
class UpstreamResponse(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
base_url: str
|
||||
api_prefix: str
|
||||
auth_type: str
|
||||
auth_config_masked: dict[str, Any] # secrets replaced with ***
|
||||
rate_endpoint: str
|
||||
groups_endpoint: str
|
||||
enabled: bool
|
||||
check_interval_seconds: int
|
||||
timeout_seconds: int
|
||||
last_status: str
|
||||
last_checked_at: Optional[datetime]
|
||||
last_error: Optional[str]
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class SnapshotResponse(BaseModel):
|
||||
id: int
|
||||
upstream_id: int
|
||||
snapshot: dict[str, Any]
|
||||
captured_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class TestResult(BaseModel):
|
||||
success: bool
|
||||
message: str
|
||||
detail: Optional[str] = None
|
||||
Reference in New Issue
Block a user