| """Shared response models.""" |
|
|
| from __future__ import annotations |
|
|
| from datetime import datetime |
| from typing import Any, Optional |
| from pydantic import BaseModel, Field |
|
|
|
|
| class ErrorResponse(BaseModel): |
| """Standard error response.""" |
| error: str = Field(..., description="Error message") |
| detail: Optional[str] = Field(default=None) |
| code: Optional[str] = Field(default=None) |
|
|
|
|
| class PaginatedResponse(BaseModel): |
| """Standard paginated list response.""" |
| items: list[Any] = Field(default_factory=list) |
| total: int = Field(default=0) |
| page: int = Field(default=1) |
| limit: int = Field(default=20) |
| has_more: bool = Field(default=False) |
|
|
|
|
| class AlertModel(BaseModel): |
| """Security alert.""" |
| id: str = Field(default="") |
| title: str = Field(default="") |
| severity: str = Field(default="unknown") |
| description: Optional[str] = Field(default=None) |
| chain: Optional[str] = Field(default=None) |
| token: Optional[str] = Field(default=None) |
| token_symbol: Optional[str] = Field(default=None) |
| risk_score: float = Field(default=0.0) |
| risk_flags: list[str] = Field(default_factory=list) |
| acknowledged: bool = Field(default=False) |
| created_at: Optional[datetime] = Field(default=None) |
|
|
|
|
| class ScanResult(BaseModel): |
| """Token/wallet scan result.""" |
| address: str |
| chain: str |
| safety_score: float = Field(default=100.0) |
| risk_flags: list[str] = Field(default_factory=list) |
| warnings: list[str] = Field(default_factory=list) |
| modules_run: list[dict] = Field(default_factory=list) |
| metadata: dict[str, Any] = Field(default_factory=dict) |
|
|
|
|
| class HealthStatus(BaseModel): |
| """Service health status.""" |
| status: str = "ok" |
| error: Optional[str] = None |
| uptime_seconds: Optional[float] = None |
|
|