File size: 944 Bytes
8986c3d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from fastapi import APIRouter, Depends, Query

from app.auth import require_bearer_auth
from app.services.engine_registry import EngineRegistry, get_engine_registry
from app.schemas import ModelCard, ModelListResponse, VoiceBinding, VoiceListResponse

router = APIRouter(prefix="/v1")


@router.get("/models", response_model=ModelListResponse, dependencies=[Depends(require_bearer_auth)])
def list_models(registry: EngineRegistry = Depends(get_engine_registry)) -> ModelListResponse:
    return ModelListResponse(data=[ModelCard(id=model_id) for model_id in registry.list_models()])


@router.get("/voices", response_model=VoiceListResponse, dependencies=[Depends(require_bearer_auth)])
def list_voices(
    model: str | None = Query(default=None),
    registry: EngineRegistry = Depends(get_engine_registry),
) -> VoiceListResponse:
    return VoiceListResponse(data=[VoiceBinding(**row) for row in registry.list_voice_bindings(model=model)])