59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
"""
|
|
API Request/Response Schema Definitions
|
|
|
|
These are separate from the main domain models and represent
|
|
the shape of data sent to/from the API endpoints.
|
|
"""
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import List, Optional
|
|
from uuid import UUID
|
|
|
|
|
|
@dataclass
|
|
class CreateJobRequest:
|
|
"""Request body for creating a transcode/trim job."""
|
|
|
|
source_asset_id: UUID
|
|
preset_id: Optional[UUID] = None
|
|
trim_start: Optional[float] = None # seconds
|
|
trim_end: Optional[float] = None # seconds
|
|
output_filename: Optional[str] = None
|
|
priority: int = 0
|
|
|
|
|
|
@dataclass
|
|
class SystemStatus:
|
|
"""System status response."""
|
|
|
|
status: str
|
|
version: str
|
|
|
|
|
|
@dataclass
|
|
class ScanResult:
|
|
"""Result of scanning the media input bucket."""
|
|
|
|
found: int = 0
|
|
registered: int = 0
|
|
skipped: int = 0
|
|
files: List[str] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class UpdateAssetRequest:
|
|
"""Request body for updating asset metadata."""
|
|
|
|
comments: Optional[str] = None
|
|
tags: Optional[List[str]] = None
|
|
|
|
|
|
@dataclass
|
|
class DeleteResult:
|
|
"""Result of a delete operation."""
|
|
|
|
ok: bool = False
|
|
|
|
|
|
# Note: WorkerStatus is defined in grpc.py and reused here
|