main
py 52 lines 1.7 KB
Raw
1 from fastapi import APIRouter
2 from fastapi import Security
3 from loguru import logger
4
5 from app.auth.utils import AuthHandler
6 from app.connectors.graylog.schema.events import AlertQuery
7 from app.connectors.graylog.schema.events import GraylogAlertsResponse
8 from app.connectors.graylog.schema.events import GraylogEventDefinitionsResponse
9 from app.connectors.graylog.services.events import get_alerts
10 from app.connectors.graylog.services.events import get_event_definitions
11
12 # App specific imports
13
14
15 graylog_events_router = APIRouter()
16
17
18 @graylog_events_router.get(
19 "/event/definitions",
20 response_model=GraylogEventDefinitionsResponse,
21 description="Get all event definitions",
22 dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
23 )
24 async def get_all_event_definitions() -> GraylogEventDefinitionsResponse:
25 """
26 Fetches all graylog event definitions.
27
28 Returns:
29 GraylogEventDefinitionsResponse: The response containing all event definitions.
30 """
31 logger.info("Fetching all graylog event definitions")
32 return await get_event_definitions()
33
34
35 @graylog_events_router.post(
36 "/event/alerts",
37 response_model=GraylogAlertsResponse,
38 description="Get all alerts",
39 dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
40 )
41 async def get_all_alerts(alert_query: AlertQuery) -> GraylogAlertsResponse:
42 """
43 Fetches all graylog alerts based on the provided alert query.
44
45 Args:
46 alert_query (AlertQuery): The query parameters for filtering the alerts.
47
48 Returns:
49 GraylogAlertsResponse: The response containing the fetched alerts.
50 """
51 logger.info("Fetching all graylog alerts")
52 return await get_alerts(alert_query)