from typing import Optional, List from pydantic import BaseModel, Field from datetime import datetime class ChatMessage(BaseModel): role: str content: str timestamp: Optional[datetime] = None class ChatRequest(BaseModel): message: str session_id: Optional[str] = None use_history: bool = True use_rag: bool = True class ChatResponse(BaseModel): response: str sources: Optional[List[dict]] = [] session_id: str timestamp: datetime = Field(default_factory=datetime.utcnow) class DocumentUpload(BaseModel): filename: str content_type: str size: int class DocumentResponse(BaseModel): id: str filename: str status: str created_at: datetime chunk_count: Optional[int] = 0 class HealthResponse(BaseModel): status: str timestamp: datetime = Field(default_factory=datetime.utcnow) services: dict class ErrorResponse(BaseModel): error: str detail: Optional[str] = None timestamp: datetime = Field(default_factory=datetime.utcnow)