from enum import Enum from typing import Any from pydantic import BaseModel, Field, HttpUrl, model_validator class AnalysisType(str, Enum): AUDIO_CLASSIFICATION = "AUDIO_CLASSIFICATION" VIDEO_ANALYSIS = "VIDEO_ANALYSIS" IMAGE_ANALYSIS = "IMAGE_ANALYSIS" class AnalysisRequest(BaseModel): requestId: str = Field(min_length=1, max_length=200) analysisType: AnalysisType profileCode: str = Field(min_length=1, max_length=200) mediaUrl: HttpUrl | None = None mediaUrls: list[HttpUrl] = Field(default_factory=list, max_length=12) options: dict[str, Any] = Field(default_factory=dict) context: dict[str, Any] = Field(default_factory=dict) @model_validator(mode="after") def require_media(self): if self.mediaUrl is None and not self.mediaUrls: raise ValueError("mediaUrl or mediaUrls is required") return self class AnalysisResponse(BaseModel): requestId: str analysisType: AnalysisType profileCode: str status: str result: dict[str, Any] = Field(default_factory=dict) model: dict[str, Any] = Field(default_factory=dict) timingMs: int