

feat: add API tags
@64c033f2b51dfe8ec9a875659e71ee6c24a0ea97
--- src/faster_whisper_server/main.py
+++ src/faster_whisper_server/main.py
... | ... | @@ -12,11 +12,11 @@ |
12 | 12 |
|
13 | 13 |
from faster_whisper_server.dependencies import ApiKeyDependency, get_config, get_model_manager |
14 | 14 |
from faster_whisper_server.logger import setup_logger |
15 |
-from faster_whisper_server.routers.list_models import ( |
|
16 |
- router as list_models_router, |
|
17 |
-) |
|
18 | 15 |
from faster_whisper_server.routers.misc import ( |
19 | 16 |
router as misc_router, |
17 |
+) |
|
18 |
+from faster_whisper_server.routers.models import ( |
|
19 |
+ router as models_router, |
|
20 | 20 |
) |
21 | 21 |
from faster_whisper_server.routers.stt import ( |
22 | 22 |
router as stt_router, |
... | ... | @@ -24,6 +24,19 @@ |
24 | 24 |
|
25 | 25 |
if TYPE_CHECKING: |
26 | 26 |
from collections.abc import AsyncGenerator |
27 |
+ |
|
28 |
+# https://swagger.io/docs/specification/v3_0/grouping-operations-with-tags/ |
|
29 |
+# https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-tags |
|
30 |
+TAGS_METADATA = [ |
|
31 |
+ {"name": "automatic-speech-recognition"}, |
|
32 |
+ {"name": "speech-to-text"}, |
|
33 |
+ {"name": "models"}, |
|
34 |
+ {"name": "diagnostic"}, |
|
35 |
+ { |
|
36 |
+ "name": "experimental", |
|
37 |
+ "description": "Not meant for public use yet. May change or be removed at any time.", |
|
38 |
+ }, |
|
39 |
+] |
|
27 | 40 |
|
28 | 41 |
|
29 | 42 |
def create_app() -> FastAPI: |
... | ... | @@ -53,10 +66,10 @@ |
53 | 66 |
if config.api_key is not None: |
54 | 67 |
dependencies.append(ApiKeyDependency) |
55 | 68 |
|
56 |
- app = FastAPI(lifespan=lifespan, dependencies=dependencies) |
|
69 |
+ app = FastAPI(lifespan=lifespan, dependencies=dependencies, openapi_tags=TAGS_METADATA) |
|
57 | 70 |
|
58 | 71 |
app.include_router(stt_router) |
59 |
- app.include_router(list_models_router) |
|
72 |
+ app.include_router(models_router) |
|
60 | 73 |
app.include_router(misc_router) |
61 | 74 |
if speech_router is not None: |
62 | 75 |
app.include_router(speech_router) |
--- src/faster_whisper_server/routers/misc.py
+++ src/faster_whisper_server/routers/misc.py
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 |
router = APIRouter() |
14 | 14 |
|
15 | 15 |
|
16 |
-@router.get("/health") |
|
16 |
+@router.get("/health", tags=["diagnostic"]) |
|
17 | 17 |
def health() -> Response: |
18 | 18 |
return Response(status_code=200, content="OK") |
19 | 19 |
|
--- src/faster_whisper_server/routers/list_models.py
+++ src/faster_whisper_server/routers/models.py
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 |
if TYPE_CHECKING: |
19 | 19 |
from huggingface_hub.hf_api import ModelInfo |
20 | 20 |
|
21 |
-router = APIRouter() |
|
21 |
+router = APIRouter(tags=["models"]) |
|
22 | 22 |
|
23 | 23 |
|
24 | 24 |
@router.get("/v1/models") |
--- src/faster_whisper_server/routers/speech.py
+++ src/faster_whisper_server/routers/speech.py
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 |
|
44 | 44 |
logger = logging.getLogger(__name__) |
45 | 45 |
|
46 |
-router = APIRouter() |
|
46 |
+router = APIRouter(tags=["speech-to-text"]) |
|
47 | 47 |
|
48 | 48 |
|
49 | 49 |
# aip 'Write a function `resample_audio` which would take in RAW PCM 16-bit signed, little-endian audio data represented as bytes (`audio_bytes`) and resample it (either downsample or upsample) from `sample_rate` to `target_sample_rate` using numpy' # noqa: E501 |
--- src/faster_whisper_server/routers/stt.py
+++ src/faster_whisper_server/routers/stt.py
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 |
|
56 | 56 |
logger = logging.getLogger(__name__) |
57 | 57 |
|
58 |
-router = APIRouter() |
|
58 |
+router = APIRouter(tags=["automatic-speech-recognition"]) |
|
59 | 59 |
|
60 | 60 |
|
61 | 61 |
# TODO: test async vs sync performance |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?