mfft-api / api /schemas.py
MohsinEli's picture
Deploy MFFT multi-model detection API
abeae79 verified
Raw
History Blame Contribute Delete
1.62 kB
from pydantic import BaseModel, Field
from typing import List, Optional, Dict, Any
from datetime import datetime
class PredictionRequest(BaseModel):
image_base64: Optional[str] = Field(None, description="Base64-encoded image")
class SinglePrediction(BaseModel):
filename: str = Field(..., description="Input filename")
prediction: str = Field(..., description="real or ai_generated")
confidence: float = Field(..., ge=0.0, le=1.0)
real_probability: float = Field(0.0, ge=0.0, le=1.0)
ai_probability: float = Field(0.0, ge=0.0, le=1.0)
processing_time_ms: float = 0.0
anomaly_heatmap: Optional[str] = None
error: Optional[str] = None
frequency_band_contributions: Optional[Dict[str, float]] = None
class PredictionResponse(BaseModel):
prediction: str = Field(..., description="real or ai_generated")
confidence: float = Field(..., ge=0.0, le=1.0)
real_probability: float = Field(..., ge=0.0, le=1.0)
ai_probability: float = Field(..., ge=0.0, le=1.0)
processing_time_ms: float
anomaly_heatmap: Optional[str] = None
frequency_band_contributions: Optional[Dict[str, float]] = None
tier: Optional[Dict[str, Any]] = None
class BatchPredictionResponse(BaseModel):
results: List[SinglePrediction]
summary: Dict[str, Any]
tier: Optional[Dict[str, Any]] = None
class HealthResponse(BaseModel):
status: str
model_loaded: bool
version: str
timestamp: str
class UsageStats(BaseModel):
tier: str
requests_this_minute: int
rate_limit: int
class ErrorResponse(BaseModel):
detail: str
status_code: int