Files
voidea/app/schemas/admin.py
T

107 lines
2.4 KiB
Python

"""Admin schemas for VoIdea API."""
from datetime import datetime
from typing import Any, Optional
from pydantic import BaseModel, EmailStr, Field
class UserRoleUpdate(BaseModel):
is_superuser: bool
class UserAdminUpdate(BaseModel):
display_name: Optional[str] = None
email: Optional[EmailStr] = None
role: Optional[str] = Field(None, description="user | moderator | admin")
is_active: Optional[bool] = None
permissions: Optional[dict[str, bool]] = None
class SystemHealth(BaseModel):
status: str
database: str
redis: str
uptime: Optional[float] = None
version: str
class LogEntryResponse(BaseModel):
id: str
level: str
source: str
message: str
details: Optional[dict[str, Any]] = None
user_id: Optional[str] = None
created_at: datetime
class AgentInfoResponse(BaseModel):
agent_name: str
description: str = ""
is_enabled: bool = True
version: str = "1.0.0"
config: Optional[str] = None
last_run_at: Optional[datetime] = None
class AgentUpdateRequest(BaseModel):
description: Optional[str] = None
is_enabled: Optional[bool] = None
config: Optional[str] = None
class ServiceActionRequest(BaseModel):
service: str = Field(description="api | worker | beat | all")
action: str = Field(default="restart", description="restart | start | stop | status")
class ServiceActionResult(BaseModel):
service: str
action: str
success: bool
message: str
class ServiceStatusResponse(BaseModel):
service: str
description: str
status: str
is_running: bool
class FeatureCreate(BaseModel):
title: str = Field(min_length=1, max_length=255)
description: Optional[str] = None
priority: str = "medium"
category: str = "feature"
class FeatureUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
priority: Optional[str] = None
status: Optional[str] = None
category: Optional[str] = None
class FeatureResponse(BaseModel):
id: str
title: str
description: Optional[str] = None
priority: str
status: str
category: str
source_agent: Optional[str] = None
created_at: datetime
updated_at: datetime
class SystemInfoResponse(BaseModel):
version: str
environment: str
database_status: str
redis_status: str
python_version: str
uptime_seconds: Optional[float] = None