from __future__ import annotations from datetime import datetime from typing import Any from pydantic import BaseModel, Field class NormalizedEvent(BaseModel): source: str = "zabbix" correlation_id: str received_at: datetime remote_addr: str | None = None event_id: str | None = None problem_id: str | None = None event_type: str = "problem" timestamp: datetime | None = None severity: str | None = None severity_code: int | None = None host: str | None = None host_id: str | None = None service: str | None = None trigger_name: str | None = None trigger_id: str | None = None item_id: str | None = None value: str | None = None opdata: str | None = None zabbix_url: str | None = None tags: dict[str, str] = Field(default_factory=dict) raw_payload: dict[str, Any] class ReceiverAck(BaseModel): accepted: bool correlation_id: str forwarded_to_processor: bool message: str class ProcessorForwardEnvelope(BaseModel): event: NormalizedEvent