Source code for netbird.models.event
"""
Event models for NetBird API.
"""
from datetime import datetime
from typing import Any, Dict, Optional
from pydantic import Field, IPvAnyAddress
from .common import (
BaseModel,
ConnectionType,
Protocol,
ResourceId,
TrafficDirection,
)
[docs]
class AuditEvent(BaseModel):
"""Audit event model.
Attributes:
timestamp: Event timestamp
activity: Activity description
activity_code: Activity code
id: Event ID
initiator_id: ID of the initiator
initiator_email: Email of the initiator
initiator_name: Name of the initiator
target_id: ID of the target
meta: Additional event metadata
"""
timestamp: str = Field(..., description="Event timestamp")
activity: str = Field(..., description="Activity description")
activity_code: Optional[str] = Field(None, description="Activity code")
id: Optional[str] = Field(None, description="Event ID")
initiator_id: ResourceId = Field(..., description="Initiator ID")
initiator_email: Optional[str] = Field(None, description="Initiator email")
initiator_name: Optional[str] = Field(None, description="Initiator name")
target_id: Optional[ResourceId] = Field(None, description="Target ID")
meta: Optional[Dict[str, Any]] = Field(None, description="Event metadata")
[docs]
class NetworkTrafficEvent(BaseModel):
"""Network traffic event model.
Attributes:
timestamp: Event timestamp
source_ip: Source IP address
destination_ip: Destination IP address
source_port: Source port
destination_port: Destination port
protocol: Network protocol
bytes_sent: Number of bytes sent
bytes_received: Number of bytes received
user_id: Associated user ID
peer_id: Associated peer ID
reporter_id: Reporter peer ID
policy_id: Applied policy ID
direction: Traffic direction
connection_type: Connection type (relay/p2p)
allowed: Whether traffic was allowed
"""
timestamp: datetime = Field(..., description="Event timestamp")
source_ip: IPvAnyAddress = Field(..., description="Source IP address")
destination_ip: IPvAnyAddress = Field(..., description="Destination IP address")
source_port: int = Field(..., description="Source port")
destination_port: int = Field(..., description="Destination port")
protocol: Protocol = Field(..., description="Network protocol")
bytes_sent: int = Field(..., description="Bytes sent")
bytes_received: int = Field(..., description="Bytes received")
user_id: Optional[ResourceId] = Field(None, description="Associated user ID")
peer_id: ResourceId = Field(..., description="Associated peer ID")
reporter_id: ResourceId = Field(..., description="Reporter peer ID")
policy_id: Optional[ResourceId] = Field(None, description="Applied policy ID")
direction: TrafficDirection = Field(..., description="Traffic direction")
connection_type: ConnectionType = Field(..., description="Connection type")
allowed: bool = Field(..., description="Traffic allowed status")