34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""Administrative visibility into public market-data source health."""
|
|
|
|
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
from app.api.dependencies.auth import build_request_context
|
|
from app.core.contracts import RequestContext
|
|
from app.service.market_data_health_service import MarketDataHealthService
|
|
|
|
router = APIRouter(prefix="/api/v1/admin/market-data", tags=["market-data"])
|
|
|
|
|
|
@router.get("/health")
|
|
async def source_health(
|
|
limit: int = Query(default=20, ge=1, le=100),
|
|
context: RequestContext = Depends(build_request_context), # noqa: B008
|
|
) -> dict[str, Any]:
|
|
return {
|
|
"data": await MarketDataHealthService().health(context, limit=limit),
|
|
"meta": {"trace_id": context.trace_id},
|
|
}
|
|
|
|
|
|
@router.get("/alerts")
|
|
async def source_alerts(
|
|
limit: int = Query(default=50, ge=1, le=100),
|
|
context: RequestContext = Depends(build_request_context), # noqa: B008
|
|
) -> dict[str, Any]:
|
|
return {
|
|
"data": await MarketDataHealthService().alerts(context, limit=limit),
|
|
"meta": {"trace_id": context.trace_id},
|
|
}
|