File size: 2,108 Bytes
92fd1a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dbe78dd
92fd1a7
 
 
 
 
 
 
 
dbe78dd
92fd1a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dbe78dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92fd1a7
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"""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]