Skip to main content

eero_api/types/
eero.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Default, Deserialize, Serialize)]
6pub struct EeroNode {
7    pub url: String,
8    #[serde(default)]
9    pub serial: Option<String>,
10    #[serde(default)]
11    pub model: Option<String>,
12    #[serde(default)]
13    pub location: Option<String>,
14    #[serde(default)]
15    pub joined: Option<String>,
16    #[serde(default)]
17    pub os_version: Option<String>,
18    #[serde(default)]
19    pub status: Option<String>,
20    #[serde(default)]
21    pub status_light: Option<StatusLight>,
22    #[serde(default)]
23    pub connected_clients_count: Option<u32>,
24    #[serde(default)]
25    pub nightlight: Option<serde_json::Value>,
26    #[serde(default)]
27    pub gateway: Option<bool>,
28    #[serde(default)]
29    pub ip_address: Option<String>,
30    #[serde(default)]
31    pub mesh_quality_bars: Option<u32>,
32    #[serde(default)]
33    pub wired: Option<bool>,
34    #[serde(default)]
35    pub ethernet_addresses: Option<serde_json::Value>,
36    #[serde(default)]
37    pub update_available: Option<bool>,
38    #[serde(flatten)]
39    pub extra: HashMap<String, serde_json::Value>,
40}
41
42#[derive(Debug, Clone, Deserialize, Serialize)]
43pub struct StatusLight {
44    pub enabled: Option<bool>,
45    pub brightness: Option<u32>,
46}
47
48#[derive(Debug, Clone, Deserialize, Serialize)]
49pub struct Nightlight {
50    pub enabled: Option<bool>,
51    pub schedule: Option<NightlightSchedule>,
52    pub brightness: Option<u32>,
53}
54
55#[derive(Debug, Clone, Deserialize, Serialize)]
56pub struct NightlightSchedule {
57    pub on: Option<String>,
58    pub off: Option<String>,
59}
60
61#[derive(Debug, Clone, Deserialize, Serialize)]
62pub struct EthernetAddress {
63    pub mac: Option<String>,
64}
65
66#[derive(Debug, Clone, Default, Serialize)]
67pub struct EeroUpdate {
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub location: Option<String>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub led_on: Option<bool>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub nightlight: Option<NightlightUpdate>,
74}
75
76#[derive(Debug, Clone, Default, Serialize)]
77pub struct NightlightUpdate {
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub enabled: Option<bool>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub brightness: Option<u32>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub schedule: Option<NightlightScheduleUpdate>,
84}
85
86#[derive(Debug, Clone, Default, Serialize)]
87pub struct NightlightScheduleUpdate {
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub on: Option<String>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub off: Option<String>,
92}