unifi_rs/models/
client.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase", tag = "type")]
7pub enum ClientOverview {
8 #[serde(rename = "WIRED")]
9 Wired(WiredClientOverview),
10 #[serde(rename = "WIRELESS")]
11 Wireless(WirelessClientOverview),
12 #[serde(rename = "VPN")]
13 Vpn(VpnClientOverview),
14 #[serde(rename = "TELEPORT")]
15 Teleport(TeleportClientOverview),
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct BaseClientOverview {
21 pub id: Uuid,
22 pub name: Option<String>,
23 pub connected_at: DateTime<Utc>,
24 #[serde(default)]
25 pub ip_address: Option<String>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct WiredClientOverview {
31 #[serde(flatten)]
32 pub base: BaseClientOverview,
33 pub mac_address: String,
34 pub uplink_device_id: Uuid,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct WirelessClientOverview {
40 #[serde(flatten)]
41 pub base: BaseClientOverview,
42 pub mac_address: String,
43 pub uplink_device_id: Uuid,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
47#[serde(rename_all = "camelCase")]
48pub struct VpnClientOverview {
49 #[serde(flatten)]
50 pub base: BaseClientOverview,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
54#[serde(rename_all = "camelCase")]
55pub struct TeleportClientOverview {
56 #[serde(flatten)]
57 pub base: BaseClientOverview,
58}