feat(unifi): implement comprehensive UniFi API client with controllers, protect, access, account, managers, resources, HTTP client, interfaces, logging, plugins, and tests
This commit is contained in:
272
ts/interfaces/network.ts
Normal file
272
ts/interfaces/network.ts
Normal file
@@ -0,0 +1,272 @@
|
||||
/**
|
||||
* Network Controller API interfaces
|
||||
* Base URL: https://{host}/api or https://{host}/proxy/network/api
|
||||
*/
|
||||
|
||||
/**
|
||||
* Network site
|
||||
*/
|
||||
export interface INetworkSite {
|
||||
/** Site ID (e.g., 'default') */
|
||||
_id: string;
|
||||
/** Site name */
|
||||
name: string;
|
||||
/** Site description */
|
||||
desc?: string;
|
||||
/** Whether anonymous ID is enabled */
|
||||
anonymous_id?: string;
|
||||
/** Role for the site */
|
||||
role?: string;
|
||||
/** Attribute for hidden ID */
|
||||
attr_hidden_id?: string;
|
||||
/** Attribute for hidden and no delete */
|
||||
attr_no_delete?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network device (switch, AP, gateway, etc.)
|
||||
*/
|
||||
export interface INetworkDevice {
|
||||
/** Device ID */
|
||||
_id: string;
|
||||
/** Device MAC address */
|
||||
mac: string;
|
||||
/** Device model */
|
||||
model: string;
|
||||
/** Device type (ugw, usw, uap, etc.) */
|
||||
type: string;
|
||||
/** Device name */
|
||||
name?: string;
|
||||
/** Site ID */
|
||||
site_id: string;
|
||||
/** Whether device is adopted */
|
||||
adopted: boolean;
|
||||
/** Device IP address */
|
||||
ip: string;
|
||||
/** Device state (0=offline, 1=connected, etc.) */
|
||||
state: number;
|
||||
/** Serial number */
|
||||
serial?: string;
|
||||
/** Firmware version */
|
||||
version?: string;
|
||||
/** Uptime in seconds */
|
||||
uptime?: number;
|
||||
/** Last seen timestamp */
|
||||
last_seen?: number;
|
||||
/** Whether device is upgradable */
|
||||
upgradable?: boolean;
|
||||
/** Available upgrade version */
|
||||
upgrade_to_firmware?: string;
|
||||
/** Device configuration */
|
||||
config_network?: {
|
||||
type?: string;
|
||||
ip?: string;
|
||||
};
|
||||
/** Device ethernet table */
|
||||
ethernet_table?: Array<{
|
||||
name: string;
|
||||
mac: string;
|
||||
num_port?: number;
|
||||
}>;
|
||||
/** Port overrides configuration */
|
||||
port_overrides?: Array<{
|
||||
port_idx: number;
|
||||
name?: string;
|
||||
poe_mode?: string;
|
||||
}>;
|
||||
/** System stats */
|
||||
sys_stats?: {
|
||||
loadavg_1?: number;
|
||||
loadavg_5?: number;
|
||||
loadavg_15?: number;
|
||||
mem_total?: number;
|
||||
mem_used?: number;
|
||||
};
|
||||
/** LED override */
|
||||
led_override?: string;
|
||||
/** LED override color */
|
||||
led_override_color?: string;
|
||||
/** LED override brightness */
|
||||
led_override_color_brightness?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network client (connected device)
|
||||
*/
|
||||
export interface INetworkClient {
|
||||
/** Client ID */
|
||||
_id: string;
|
||||
/** MAC address */
|
||||
mac: string;
|
||||
/** Site ID */
|
||||
site_id: string;
|
||||
/** Whether client is authorized (for guest network) */
|
||||
is_guest?: boolean;
|
||||
/** Whether client is wired */
|
||||
is_wired: boolean;
|
||||
/** First seen timestamp */
|
||||
first_seen?: number;
|
||||
/** Last seen timestamp */
|
||||
last_seen?: number;
|
||||
/** Hostname */
|
||||
hostname?: string;
|
||||
/** Client name (user-assigned) */
|
||||
name?: string;
|
||||
/** Client IP address */
|
||||
ip?: string;
|
||||
/** Network ID */
|
||||
network_id?: string;
|
||||
/** Uplink MAC (AP or switch) */
|
||||
uplink_mac?: string;
|
||||
/** Connected AP name */
|
||||
ap_name?: string;
|
||||
/** SSID if wireless */
|
||||
essid?: string;
|
||||
/** BSSID if wireless */
|
||||
bssid?: string;
|
||||
/** Channel if wireless */
|
||||
channel?: number;
|
||||
/** Radio protocol (ng, na, ac, ax) */
|
||||
radio_proto?: string;
|
||||
/** Signal strength */
|
||||
signal?: number;
|
||||
/** TX rate */
|
||||
tx_rate?: number;
|
||||
/** RX rate */
|
||||
rx_rate?: number;
|
||||
/** TX bytes */
|
||||
tx_bytes?: number;
|
||||
/** RX bytes */
|
||||
rx_bytes?: number;
|
||||
/** TX packets */
|
||||
tx_packets?: number;
|
||||
/** RX packets */
|
||||
rx_packets?: number;
|
||||
/** Connected switch port */
|
||||
sw_port?: number;
|
||||
/** User group ID */
|
||||
usergroup_id?: string;
|
||||
/** OUI (device manufacturer) */
|
||||
oui?: string;
|
||||
/** Noted status */
|
||||
noted?: boolean;
|
||||
/** User ID if fixed IP */
|
||||
user_id?: string;
|
||||
/** Fingerprint data */
|
||||
fingerprint_source?: number;
|
||||
/** Device fingerprint */
|
||||
dev_cat?: number;
|
||||
dev_family?: number;
|
||||
dev_vendor?: number;
|
||||
dev_id?: number;
|
||||
/** OS name */
|
||||
os_name?: number;
|
||||
/** Satisfaction score */
|
||||
satisfaction?: number;
|
||||
/** Anomalies count */
|
||||
anomalies?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network WLAN configuration
|
||||
*/
|
||||
export interface INetworkWlan {
|
||||
/** WLAN ID */
|
||||
_id: string;
|
||||
/** WLAN name */
|
||||
name: string;
|
||||
/** Site ID */
|
||||
site_id: string;
|
||||
/** SSID */
|
||||
x_passphrase?: string;
|
||||
/** Whether WLAN is enabled */
|
||||
enabled: boolean;
|
||||
/** Security mode */
|
||||
security?: string;
|
||||
/** WPA mode */
|
||||
wpa_mode?: string;
|
||||
/** WPA encryption */
|
||||
wpa_enc?: string;
|
||||
/** VLAN ID */
|
||||
networkconf_id?: string;
|
||||
/** User group ID */
|
||||
usergroup_id?: string;
|
||||
/** Whether hidden */
|
||||
hide_ssid?: boolean;
|
||||
/** Whether PMF is enabled */
|
||||
pmf_mode?: string;
|
||||
/** Group rekey interval */
|
||||
group_rekey?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network configuration (VLAN/subnet)
|
||||
*/
|
||||
export interface INetworkConfig {
|
||||
/** Config ID */
|
||||
_id: string;
|
||||
/** Name */
|
||||
name: string;
|
||||
/** Site ID */
|
||||
site_id: string;
|
||||
/** Purpose (corporate, guest, wan, etc.) */
|
||||
purpose: string;
|
||||
/** VLAN ID */
|
||||
vlan?: number;
|
||||
/** VLAN enabled */
|
||||
vlan_enabled?: boolean;
|
||||
/** Subnet */
|
||||
ip_subnet?: string;
|
||||
/** DHCP enabled */
|
||||
dhcpd_enabled?: boolean;
|
||||
/** DHCP start */
|
||||
dhcpd_start?: string;
|
||||
/** DHCP stop */
|
||||
dhcpd_stop?: string;
|
||||
/** Domain name */
|
||||
domain_name?: string;
|
||||
/** Whether this is the default network */
|
||||
is_nat?: boolean;
|
||||
/** Network group */
|
||||
networkgroup?: string;
|
||||
/** IGMP snooping */
|
||||
igmp_snooping?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Device port configuration
|
||||
*/
|
||||
export interface IPortConfig {
|
||||
port_idx: number;
|
||||
name?: string;
|
||||
poe_mode?: string;
|
||||
port_poe?: boolean;
|
||||
portconf_id?: string;
|
||||
speed_caps?: number;
|
||||
op_mode?: string;
|
||||
autoneg?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth response from controller
|
||||
*/
|
||||
export interface INetworkAuthResponse {
|
||||
/** Response code */
|
||||
rc: string;
|
||||
/** Session token/unique ID */
|
||||
unique_id?: string;
|
||||
/** First name */
|
||||
first_name?: string;
|
||||
/** Last name */
|
||||
last_name?: string;
|
||||
/** Full name */
|
||||
full_name?: string;
|
||||
/** Email */
|
||||
email?: string;
|
||||
/** Is super admin */
|
||||
is_super?: boolean;
|
||||
/** Device ID */
|
||||
device_id?: string;
|
||||
/** UI settings */
|
||||
ui_settings?: Record<string, unknown>;
|
||||
}
|
||||
Reference in New Issue
Block a user