use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize)]
pub struct SessionResponse<T> {
pub meta: Meta,
pub data: Vec<T>,
}
#[derive(Debug, Deserialize)]
pub struct Meta {
pub rc: String,
#[serde(default)]
pub msg: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionDevice {
#[serde(default, rename = "_id")]
pub id: String,
pub mac: String,
#[serde(rename = "type")]
pub device_type: String,
#[serde(default)]
pub ip: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub model: Option<String>,
#[serde(default)]
pub version: Option<String>,
#[serde(default)]
pub adopted: bool,
#[serde(default)]
pub state: i32,
#[serde(default)]
pub sys_stats: Option<SysStats>,
#[serde(default)]
pub uptime: Option<i64>,
#[serde(default)]
pub num_sta: Option<i32>,
#[serde(default)]
pub serial: Option<String>,
#[serde(default)]
pub site_id: Option<String>,
#[serde(default)]
pub last_seen: Option<i64>,
#[serde(default)]
pub upgradable: Option<bool>,
#[serde(default, rename = "user-num_sta")]
pub user_num_sta: Option<i32>,
#[serde(default, rename = "guest-num_sta")]
pub guest_num_sta: Option<i32>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SysStats {
#[serde(default, rename = "loadavg_1")]
pub load_1: Option<String>,
#[serde(default, rename = "loadavg_5")]
pub load_5: Option<String>,
#[serde(default, rename = "loadavg_15")]
pub load_15: Option<String>,
#[serde(default)]
pub mem_total: Option<i64>,
#[serde(default)]
pub mem_used: Option<i64>,
#[serde(default)]
pub cpu: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionClientEntry {
#[serde(rename = "_id")]
pub id: String,
pub mac: String,
#[serde(default)]
pub hostname: Option<String>,
#[serde(default)]
pub ip: Option<String>,
#[serde(default)]
pub oui: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub is_guest: Option<bool>,
#[serde(default)]
pub is_wired: Option<bool>,
#[serde(default)]
pub authorized: Option<bool>,
#[serde(default)]
pub blocked: Option<bool>,
#[serde(default)]
pub signal: Option<i32>,
#[serde(default)]
pub tx_bytes: Option<i64>,
#[serde(default)]
pub rx_bytes: Option<i64>,
#[serde(default)]
pub tx_rate: Option<i64>,
#[serde(default)]
pub rx_rate: Option<i64>,
#[serde(default)]
pub uptime: Option<i64>,
#[serde(default)]
pub first_seen: Option<i64>,
#[serde(default)]
pub last_seen: Option<i64>,
#[serde(default)]
pub site_id: Option<String>,
#[serde(default)]
pub essid: Option<String>,
#[serde(default)]
pub bssid: Option<String>,
#[serde(default)]
pub channel: Option<i32>,
#[serde(default)]
pub radio: Option<String>,
#[serde(default)]
pub rssi: Option<i32>,
#[serde(default)]
pub noise: Option<i32>,
#[serde(default)]
pub satisfaction: Option<i32>,
#[serde(default)]
pub ap_mac: Option<String>,
#[serde(default)]
pub network: Option<String>,
#[serde(default)]
pub network_id: Option<String>,
#[serde(default)]
pub sw_mac: Option<String>,
#[serde(default)]
pub sw_port: Option<i32>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionUserEntry {
#[serde(rename = "_id")]
pub id: String,
pub mac: String,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub hostname: Option<String>,
#[serde(default)]
pub use_fixedip: Option<bool>,
#[serde(default)]
pub fixed_ip: Option<String>,
#[serde(default)]
pub network_id: Option<String>,
#[serde(default)]
pub site_id: Option<String>,
#[serde(default)]
pub noted: Option<bool>,
#[serde(default)]
pub note: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSite {
#[serde(rename = "_id")]
pub id: String,
pub name: String,
#[serde(default)]
pub desc: Option<String>,
#[serde(default)]
pub role: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionEvent {
#[serde(rename = "_id")]
pub id: String,
#[serde(default)]
pub key: Option<String>,
#[serde(default)]
pub msg: Option<String>,
#[serde(default)]
pub datetime: Option<String>,
#[serde(default)]
pub subsystem: Option<String>,
#[serde(default)]
pub site_id: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionAlarm {
#[serde(rename = "_id")]
pub id: String,
#[serde(default)]
pub key: Option<String>,
#[serde(default)]
pub msg: Option<String>,
#[serde(default)]
pub datetime: Option<String>,
#[serde(default)]
pub archived: Option<bool>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RogueAp {
pub bssid: String,
#[serde(default)]
pub essid: Option<String>,
#[serde(default)]
pub channel: Option<i32>,
#[serde(default)]
pub freq: Option<i32>,
#[serde(default)]
pub signal: Option<i32>,
#[serde(default)]
pub rssi: Option<i32>,
#[serde(default)]
pub noise: Option<i32>,
#[serde(default)]
pub security: Option<String>,
#[serde(default)]
pub radio: Option<String>,
#[serde(default)]
pub age: Option<i64>,
#[serde(default)]
pub is_rogue: bool,
#[serde(default)]
pub ap_mac: Option<String>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChannelAvailability {
#[serde(default)]
pub code: Option<String>,
#[serde(default)]
pub key: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub channels_ng: Option<Vec<i32>>,
#[serde(default)]
pub channels_na: Option<Vec<i32>>,
#[serde(default)]
pub channels_na_dfs: Option<Vec<i32>>,
#[serde(default)]
pub channels_6e: Option<Vec<i32>>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}