feat: Update API documentation endpoints and enhance application metadata for SBD v2
This commit is contained in:
@@ -11,14 +11,14 @@ router = APIRouter()
|
|||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/")
|
@router.get("/health")
|
||||||
def health() -> HealthResponse:
|
def health() -> HealthResponse:
|
||||||
"""Health check endpoint."""
|
"""Health check endpoint."""
|
||||||
logger.info("Health check endpoint accessed")
|
logger.info("Health check endpoint accessed")
|
||||||
return HealthResponse(status="healthy")
|
return HealthResponse(status="healthy")
|
||||||
|
|
||||||
|
|
||||||
@router.get("/scalar-docs", response_class=HTMLResponse)
|
@router.get("/docs/scalar", response_class=HTMLResponse)
|
||||||
def scalar_docs() -> HTMLResponse:
|
def scalar_docs() -> HTMLResponse:
|
||||||
"""Serve the API documentation using Scalar."""
|
"""Serve the API documentation using Scalar."""
|
||||||
return """
|
return """
|
||||||
@@ -39,8 +39,8 @@ def scalar_docs() -> HTMLResponse:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
@router.get("/rapidoc-docs", response_class=HTMLResponse)
|
@router.get("/docs/rapidoc", response_class=HTMLResponse)
|
||||||
async def rapidoc() -> HTMLResponse:
|
async def rapidoc_docs() -> HTMLResponse:
|
||||||
"""Serve the API documentation using Rapidoc."""
|
"""Serve the API documentation using Rapidoc."""
|
||||||
return """
|
return """
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
@@ -61,7 +61,7 @@ async def rapidoc() -> HTMLResponse:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
@router.get("/elements-docs", response_class=HTMLResponse)
|
@router.get("/docs/elements", response_class=HTMLResponse)
|
||||||
async def elements_docs() -> HTMLResponse:
|
async def elements_docs() -> HTMLResponse:
|
||||||
"""Serve the API documentation using Stoplight Elements."""
|
"""Serve the API documentation using Stoplight Elements."""
|
||||||
return """
|
return """
|
||||||
|
|||||||
@@ -59,12 +59,9 @@ async def lifespan(_app: FastAPI) -> AsyncGenerator[None, None]:
|
|||||||
def create_app() -> FastAPI:
|
def create_app() -> FastAPI:
|
||||||
"""Create and configure the FastAPI application."""
|
"""Create and configure the FastAPI application."""
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="Soundboard API",
|
title="SBD v2 API",
|
||||||
description=(
|
description=("API for the SBD v2 application"),
|
||||||
"API for the Soundboard application with authentication, "
|
version="2.0.0",
|
||||||
"sound management, and real-time features"
|
|
||||||
),
|
|
||||||
version="1.0.0",
|
|
||||||
lifespan=lifespan,
|
lifespan=lifespan,
|
||||||
# Configure docs URLs for reverse proxy setup
|
# Configure docs URLs for reverse proxy setup
|
||||||
docs_url="/api/docs", # Swagger UI at /api/docs
|
docs_url="/api/docs", # Swagger UI at /api/docs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "backend"
|
name = "sdb"
|
||||||
version = "0.1.0"
|
version = "2.0.0"
|
||||||
description = "Add your description here"
|
description = "Backend for the SDB v2"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
122
uv.lock
generated
122
uv.lock
generated
@@ -49,67 +49,6 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/d0/ae/9a053dd9229c0fde6b1f1f33f609ccff1ee79ddda364c756a924c6d8563b/APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da", size = 64004 },
|
{ url = "https://files.pythonhosted.org/packages/d0/ae/9a053dd9229c0fde6b1f1f33f609ccff1ee79ddda364c756a924c6d8563b/APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da", size = 64004 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "backend"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = { virtual = "." }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "aiosqlite" },
|
|
||||||
{ name = "apscheduler" },
|
|
||||||
{ name = "bcrypt" },
|
|
||||||
{ name = "email-validator" },
|
|
||||||
{ name = "fastapi", extra = ["standard"] },
|
|
||||||
{ name = "ffmpeg-python" },
|
|
||||||
{ name = "httpx" },
|
|
||||||
{ name = "pydantic-settings" },
|
|
||||||
{ name = "pyjwt" },
|
|
||||||
{ name = "python-socketio" },
|
|
||||||
{ name = "python-vlc" },
|
|
||||||
{ name = "sqlmodel" },
|
|
||||||
{ name = "uvicorn", extra = ["standard"] },
|
|
||||||
{ name = "yt-dlp" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dev-dependencies]
|
|
||||||
dev = [
|
|
||||||
{ name = "coverage" },
|
|
||||||
{ name = "faker" },
|
|
||||||
{ name = "httpx" },
|
|
||||||
{ name = "mypy" },
|
|
||||||
{ name = "pytest" },
|
|
||||||
{ name = "pytest-asyncio" },
|
|
||||||
{ name = "ruff" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.metadata]
|
|
||||||
requires-dist = [
|
|
||||||
{ name = "aiosqlite", specifier = "==0.21.0" },
|
|
||||||
{ name = "apscheduler", specifier = "==3.11.0" },
|
|
||||||
{ name = "bcrypt", specifier = "==4.3.0" },
|
|
||||||
{ name = "email-validator", specifier = "==2.2.0" },
|
|
||||||
{ name = "fastapi", extras = ["standard"], specifier = "==0.116.1" },
|
|
||||||
{ name = "ffmpeg-python", specifier = "==0.2.0" },
|
|
||||||
{ name = "httpx", specifier = "==0.28.1" },
|
|
||||||
{ name = "pydantic-settings", specifier = "==2.10.1" },
|
|
||||||
{ name = "pyjwt", specifier = "==2.10.1" },
|
|
||||||
{ name = "python-socketio", specifier = "==5.13.0" },
|
|
||||||
{ name = "python-vlc", specifier = "==3.0.21203" },
|
|
||||||
{ name = "sqlmodel", specifier = "==0.0.24" },
|
|
||||||
{ name = "uvicorn", extras = ["standard"], specifier = "==0.35.0" },
|
|
||||||
{ name = "yt-dlp", specifier = "==2025.7.21" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.metadata.requires-dev]
|
|
||||||
dev = [
|
|
||||||
{ name = "coverage", specifier = "==7.10.3" },
|
|
||||||
{ name = "faker", specifier = "==37.5.3" },
|
|
||||||
{ name = "httpx", specifier = "==0.28.1" },
|
|
||||||
{ name = "mypy", specifier = "==1.17.1" },
|
|
||||||
{ name = "pytest", specifier = "==8.4.1" },
|
|
||||||
{ name = "pytest-asyncio", specifier = "==1.1.0" },
|
|
||||||
{ name = "ruff", specifier = "==0.12.8" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bcrypt"
|
name = "bcrypt"
|
||||||
version = "4.3.0"
|
version = "4.3.0"
|
||||||
@@ -927,6 +866,67 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/cb/5c/799a1efb8b5abab56e8a9f2a0b72d12bd64bb55815e9476c7d0a2887d2f7/ruff-0.12.8-py3-none-win_arm64.whl", hash = "sha256:c90e1a334683ce41b0e7a04f41790c429bf5073b62c1ae701c9dc5b3d14f0749", size = 11884718 },
|
{ url = "https://files.pythonhosted.org/packages/cb/5c/799a1efb8b5abab56e8a9f2a0b72d12bd64bb55815e9476c7d0a2887d2f7/ruff-0.12.8-py3-none-win_arm64.whl", hash = "sha256:c90e1a334683ce41b0e7a04f41790c429bf5073b62c1ae701c9dc5b3d14f0749", size = 11884718 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sdb"
|
||||||
|
version = "2.0.0"
|
||||||
|
source = { virtual = "." }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "aiosqlite" },
|
||||||
|
{ name = "apscheduler" },
|
||||||
|
{ name = "bcrypt" },
|
||||||
|
{ name = "email-validator" },
|
||||||
|
{ name = "fastapi", extra = ["standard"] },
|
||||||
|
{ name = "ffmpeg-python" },
|
||||||
|
{ name = "httpx" },
|
||||||
|
{ name = "pydantic-settings" },
|
||||||
|
{ name = "pyjwt" },
|
||||||
|
{ name = "python-socketio" },
|
||||||
|
{ name = "python-vlc" },
|
||||||
|
{ name = "sqlmodel" },
|
||||||
|
{ name = "uvicorn", extra = ["standard"] },
|
||||||
|
{ name = "yt-dlp" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dev-dependencies]
|
||||||
|
dev = [
|
||||||
|
{ name = "coverage" },
|
||||||
|
{ name = "faker" },
|
||||||
|
{ name = "httpx" },
|
||||||
|
{ name = "mypy" },
|
||||||
|
{ name = "pytest" },
|
||||||
|
{ name = "pytest-asyncio" },
|
||||||
|
{ name = "ruff" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.metadata]
|
||||||
|
requires-dist = [
|
||||||
|
{ name = "aiosqlite", specifier = "==0.21.0" },
|
||||||
|
{ name = "apscheduler", specifier = "==3.11.0" },
|
||||||
|
{ name = "bcrypt", specifier = "==4.3.0" },
|
||||||
|
{ name = "email-validator", specifier = "==2.2.0" },
|
||||||
|
{ name = "fastapi", extras = ["standard"], specifier = "==0.116.1" },
|
||||||
|
{ name = "ffmpeg-python", specifier = "==0.2.0" },
|
||||||
|
{ name = "httpx", specifier = "==0.28.1" },
|
||||||
|
{ name = "pydantic-settings", specifier = "==2.10.1" },
|
||||||
|
{ name = "pyjwt", specifier = "==2.10.1" },
|
||||||
|
{ name = "python-socketio", specifier = "==5.13.0" },
|
||||||
|
{ name = "python-vlc", specifier = "==3.0.21203" },
|
||||||
|
{ name = "sqlmodel", specifier = "==0.0.24" },
|
||||||
|
{ name = "uvicorn", extras = ["standard"], specifier = "==0.35.0" },
|
||||||
|
{ name = "yt-dlp", specifier = "==2025.7.21" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.metadata.requires-dev]
|
||||||
|
dev = [
|
||||||
|
{ name = "coverage", specifier = "==7.10.3" },
|
||||||
|
{ name = "faker", specifier = "==37.5.3" },
|
||||||
|
{ name = "httpx", specifier = "==0.28.1" },
|
||||||
|
{ name = "mypy", specifier = "==1.17.1" },
|
||||||
|
{ name = "pytest", specifier = "==8.4.1" },
|
||||||
|
{ name = "pytest-asyncio", specifier = "==1.1.0" },
|
||||||
|
{ name = "ruff", specifier = "==0.12.8" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sentry-sdk"
|
name = "sentry-sdk"
|
||||||
version = "2.33.0"
|
version = "2.33.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user