Skip to main content

eero_api/types/
device.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Default, Deserialize, Serialize)]
6pub struct Device {
7    #[serde(default)]
8    pub url: String,
9    #[serde(default)]
10    pub mac: Option<String>,
11    #[serde(default)]
12    pub manufacturer: Option<String>,
13    #[serde(default)]
14    pub ip: Option<String>,
15    #[serde(default)]
16    pub ips: Option<Vec<String>>,
17    #[serde(default)]
18    pub nickname: Option<String>,
19    #[serde(default)]
20    pub hostname: Option<String>,
21    #[serde(default)]
22    pub display_name: Option<String>,
23    #[serde(default)]
24    pub connected: Option<bool>,
25    #[serde(default)]
26    pub wireless: Option<bool>,
27    #[serde(default)]
28    pub connection_type: Option<String>,
29    #[serde(default)]
30    pub source: Option<DeviceSource>,
31    #[serde(default)]
32    pub profile: Option<DeviceProfile>,
33    #[serde(default)]
34    pub paused: Option<bool>,
35    #[serde(default)]
36    pub blocked: Option<bool>,
37    #[serde(default)]
38    pub is_guest: Option<bool>,
39    #[serde(default)]
40    pub is_private: Option<bool>,
41    #[serde(default)]
42    pub channel: Option<serde_json::Value>,
43    #[serde(default)]
44    pub frequency: Option<String>,
45    #[serde(default)]
46    pub frequency_band: Option<String>,
47    #[serde(default)]
48    pub auth: Option<String>,
49    #[serde(default)]
50    pub usage: Option<DeviceUsage>,
51    #[serde(flatten)]
52    pub extra: HashMap<String, serde_json::Value>,
53}
54
55#[derive(Debug, Clone, Deserialize, Serialize)]
56pub struct DeviceSource {
57    pub location: Option<String>,
58    pub url: Option<String>,
59}
60
61#[derive(Debug, Clone, Deserialize, Serialize)]
62pub struct DeviceProfile {
63    pub url: Option<String>,
64    pub name: Option<String>,
65}
66
67#[derive(Debug, Clone, Deserialize, Serialize)]
68pub struct DeviceUsage {
69    pub down: Option<f64>,
70    pub up: Option<f64>,
71}
72
73#[derive(Debug, Clone, Default, Serialize)]
74pub struct DeviceUpdate {
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub nickname: Option<String>,
77    #[serde(skip_serializing_if = "Option::is_none")]
78    pub blocked: Option<bool>,
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub paused: Option<bool>,
81    #[serde(skip_serializing_if = "Option::is_none")]
82    pub profile: Option<String>,
83}