"""API response models.""" from pydantic import BaseModel, Field from typing import Optional, Dict, List from datetime import datetime class ExtractionResponse(BaseModel): """Response for direct extraction.""" file_path: str media_type: str filename: str processing_time: float file_size: int class JobCreatedResponse(BaseModel): """Response when a background job is created.""" job_id: str external_job_id: Optional[str] = None status: str message: str check_url: str file_size_mb: float class JobStatusResponse(BaseModel): """Response for job status check.""" job_id: str external_job_id: Optional[str] = None status: str created_at: datetime updated_at: datetime filename: Optional[str] = None file_size_mb: Optional[float] = None output_format: Optional[str] = None quality: Optional[str] = None processing_time: Optional[float] = None error: Optional[str] = None download_url: Optional[str] = None class ErrorResponse(BaseModel): """Standard error response.""" error: str details: Optional[str] = None code: Optional[str] = None class AuthenticationErrorResponse(BaseModel): """Authentication error response.""" error: str = "Authentication required" details: Optional[str] = None code: str = "AUTHENTICATION_ERROR" class ValidationErrorResponse(BaseModel): """Validation error response.""" error: str = "Validation failed" details: Optional[str] = None code: str = "VALIDATION_ERROR" field: Optional[str] = None class DuplicateJobIdErrorResponse(BaseModel): """Duplicate external job ID error response.""" error: str = "Duplicate external job ID" details: Optional[str] = None code: str = "DUPLICATE_EXTERNAL_JOB_ID" external_job_id: Optional[str] = None class ApiInfoResponse(BaseModel): """API information response.""" version: str supported_video_formats: List[str] supported_audio_formats: List[str] quality_levels: List[str] max_direct_response_size_mb: float endpoints: Dict[str, str]