Files
auracaster-webui/api_models.py

36 lines
1.1 KiB
Python

"""
API models for the Airport Announcement System.
"""
from enum import Enum
from pydantic import BaseModel, Field
from typing import Optional, List
class AnnouncementStates(Enum):
IDLE: str = "Ready"
TRANSLATING: str = "Translating"
GENERATING_VOICE: str = "Generating voice synthesis"
ROUTING: str = "Routing to endpoints"
ACTIVE: str = "Broadcasting announcement"
COMPLETE: str = "Complete"
ERROR: str = "Error"
class AnnouncementParameters(BaseModel):
text: Optional[str] = None
languages: List[str] = []
start_time: Optional[float] = None
class AnnouncementProgress(BaseModel):
current_state: str = AnnouncementStates.IDLE.value
progress: float = Field(default=0.0, ge=0.0, le=1.0)
error: Optional[str] = None
class EndpointGroup(BaseModel):
id: int
name: str
endpoints: List[str]
languages: List[str]
# Announcement parameters and progress as nested models
parameters: AnnouncementParameters = Field(default_factory=AnnouncementParameters)
progress: AnnouncementProgress = Field(default_factory=AnnouncementProgress)