from pydantic import BaseModel, Field, field_validator from typing import Optional class TranslationRequest(BaseModel): """Translation request schema""" text: str = Field(..., description="Text to translate", min_length=1, max_length=5000) source_lang: str = Field(..., description="Source language code (e.g., 'en', 'ms', 'bn', etc.)", min_length=2, max_length=5) target_lang: str = Field(..., description="Target language code (e.g., 'en', 'ms', 'bn', etc.)", min_length=2, max_length=5) @field_validator('source_lang', 'target_lang') @classmethod def validate_lang_code(cls, v: str) -> str: """Validate language code format""" return v.lower().strip() class Config: json_schema_extra = { "example": { "text": "Selamat pagi, apa khabar?", "source_lang": "ms", "target_lang": "en" } } class TranslationResponse(BaseModel): """Translation response schema""" original_text: str = Field(..., description="Original input text") translated_text: str = Field(..., description="Translated text") source_lang: str = Field(..., description="Source language code") target_lang: str = Field(..., description="Target language code") model_used: str = Field(..., description="Translation model identifier") class Config: json_schema_extra = { "example": { "original_text": "Selamat pagi, apa khabar?", "translated_text": "Good morning, how are you?", "source_lang": "ms", "target_lang": "en", "model_used": "Helsinki-NLP/opus-mt-ms-en" } } class HealthResponse(BaseModel): """Health check response""" status: str message: str models_loaded: bool