29 lines
655 B
Python
29 lines
655 B
Python
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class DnsIngestEvent(BaseModel):
|
|
src_ip: str
|
|
qname: str
|
|
answers: list[str] = Field(default_factory=list)
|
|
ts: datetime | None = None
|
|
|
|
|
|
class DhcpIngestEvent(BaseModel):
|
|
ip: str
|
|
mac: str | None = None
|
|
hostname: str | None = None
|
|
state: Literal["online", "offline", "lease"] = "lease"
|
|
ts: datetime | None = None
|
|
|
|
|
|
class FlowIngestEvent(BaseModel):
|
|
src_ip: str
|
|
dst_ip: str | None = None
|
|
dst_host: str | None = None
|
|
protocol: str | None = None
|
|
bytes_count: int | None = None
|
|
ts: datetime | None = None
|