72 lines
1.6 KiB
Python
72 lines
1.6 KiB
Python
"""Data models for UniFi Controller API responses."""
|
|
from dataclasses import dataclass
|
|
from typing import List, Optional, Dict
|
|
from datetime import datetime
|
|
|
|
@dataclass
|
|
class NetworkConfig:
|
|
"""Network configuration data model."""
|
|
_id: str
|
|
name: str
|
|
purpose: str
|
|
subnet: str
|
|
vlan_enabled: bool
|
|
vlan_id: Optional[int] = None
|
|
dhcp_enabled: bool = True
|
|
dhcp_start: Optional[str] = None
|
|
dhcp_stop: Optional[str] = None
|
|
|
|
@dataclass
|
|
class WifiConfig:
|
|
"""WiFi configuration data model."""
|
|
_id: str
|
|
name: str
|
|
security: str
|
|
wpa_mode: str
|
|
wpa_enc: str
|
|
enabled: bool
|
|
is_guest: bool = False
|
|
hide_ssid: bool = False
|
|
vlan_enabled: bool = False
|
|
vlan_id: Optional[int] = None
|
|
|
|
@dataclass
|
|
class ClientDevice:
|
|
"""Connected client device data model."""
|
|
_id: str
|
|
mac: str
|
|
hostname: Optional[str]
|
|
ip: Optional[str]
|
|
network_id: str
|
|
last_seen: datetime
|
|
is_guest: bool = False
|
|
blocked: bool = False
|
|
data_usage: Optional[Dict] = None
|
|
|
|
@dataclass
|
|
class SystemHealth:
|
|
"""System health statistics data model."""
|
|
subsystem: str
|
|
status: str
|
|
num_user: int
|
|
num_guest: int
|
|
lan_throughput: float
|
|
wlan_throughput: float
|
|
wan_throughput: float
|
|
cpu_usage: float
|
|
mem_usage: float
|
|
|
|
@dataclass
|
|
class FirewallRule:
|
|
"""Firewall rule data model."""
|
|
_id: str
|
|
name: str
|
|
enabled: bool
|
|
action: str
|
|
protocol: str
|
|
src_address: Optional[str] = None
|
|
dst_address: Optional[str] = None
|
|
src_port: Optional[str] = None
|
|
dst_port: Optional[str] = None
|
|
ruleset: str = "LAN_IN"
|
|
rule_index: int = 2000
|