from pydantic import BaseModel, ConfigDict class EventItem(BaseModel): id: str | None = None timestamp: str | None = None service: str | None = None operation: str | None = None result: str | None = None actor_display: str | None = None target_displays: list[str] | None = None display_summary: str | None = None display_category: str | None = None dedupe_key: str | None = None actor: dict | None = None targets: list[dict] | None = None raw: dict | None = None raw_text: str | None = None tags: list[str] | None = None comments: list[dict] | None = None model_config = ConfigDict(extra="allow") class PaginatedEventResponse(BaseModel): items: list[dict] total: int page_size: int next_cursor: str | None = None class FilterOptionsResponse(BaseModel): services: list[str] operations: list[str] results: list[str] actors: list[str] actor_upns: list[str] devices: list[str] class FetchAuditLogsResponse(BaseModel): stored_events: int errors: list[str] class SourceHealthResponse(BaseModel): source: str last_fetch_time: str | None = None status: str class TagsUpdateRequest(BaseModel): tags: list[str] class CommentAddRequest(BaseModel): text: str class AlertRuleResponse(BaseModel): id: str | None = None name: str enabled: bool severity: str conditions: list[dict] message: str