from fastapi import APIRouter, HTTPException, Query from app.services import log_ingest router = APIRouter() @router.get("/logs/status") async def get_log_status(): return log_ingest.receiver_status() @router.get("/logs/events") async def get_log_events( limit: int = Query(default=200, ge=1, le=5000), node: str | None = None, nf: str | None = None, imsi: str | None = None, ): return { "events": log_ingest.get_events(limit=limit, node=node, nf=nf, imsi=imsi), "status": log_ingest.receiver_status(), } @router.get("/logs/contexts") async def get_log_contexts(limit: int = Query(default=20, ge=1, le=200)): return {"contexts": log_ingest.recent_alert_context(limit=limit)} @router.post("/logs/configure") async def configure_log_shipping(): try: return await log_ingest.configure_site_output() except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) from exc @router.post("/logs/traces/start") async def start_trace(supi: str = Query(min_length=3)): try: return await log_ingest.start_subscriber_trace(supi) except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) from exc @router.post("/logs/traces/stop") async def stop_trace(): try: return await log_ingest.stop_subscriber_trace() except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) from exc