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)])