eero_api/types/
profile.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Default, Deserialize, Serialize)]
6pub struct Profile {
7 pub url: String,
8 #[serde(default)]
9 pub name: Option<String>,
10 #[serde(default)]
11 pub paused: Option<bool>,
12 #[serde(default)]
13 pub blocked_applications: Option<serde_json::Value>,
14 #[serde(default)]
15 pub dns_policies: Option<serde_json::Value>,
16 #[serde(default)]
17 pub devices: Option<Vec<ProfileDevice>>,
18 #[serde(default)]
19 pub schedule: Option<serde_json::Value>,
20 #[serde(flatten)]
21 pub extra: HashMap<String, serde_json::Value>,
22}
23
24#[derive(Debug, Clone, Deserialize, Serialize)]
25pub struct DnsPolicies {
26 #[serde(default)]
27 pub block: Option<Vec<String>>,
28 #[serde(default)]
29 pub safe_search_enabled: Option<bool>,
30 #[serde(default)]
31 pub youtube_restricted: Option<bool>,
32 #[serde(flatten)]
33 pub extra: HashMap<String, serde_json::Value>,
34}
35
36#[derive(Debug, Clone, Deserialize, Serialize)]
37pub struct ProfileDevice {
38 pub url: Option<String>,
39 pub mac: Option<String>,
40 pub display_name: Option<String>,
41}
42
43#[derive(Debug, Clone, Deserialize, Serialize)]
44pub struct ProfileSchedule {
45 #[serde(default)]
46 pub enabled: Option<bool>,
47 #[serde(default)]
48 pub time_ranges: Option<Vec<serde_json::Value>>,
49 #[serde(flatten)]
50 pub extra: HashMap<String, serde_json::Value>,
51}
52
53#[derive(Debug, Clone, Default, Serialize)]
54pub struct ProfileUpdate {
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub name: Option<String>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub paused: Option<bool>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub blocked_applications: Option<Vec<String>>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub dns_policies: Option<DnsPoliciesUpdate>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub schedule: Option<ProfileScheduleUpdate>,
65}
66
67#[derive(Debug, Clone, Default, Serialize)]
68pub struct DnsPoliciesUpdate {
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub block: Option<Vec<String>>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub safe_search_enabled: Option<bool>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub youtube_restricted: Option<bool>,
75}
76
77#[derive(Debug, Clone, Default, Serialize)]
78pub struct ProfileScheduleUpdate {
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub enabled: Option<bool>,
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub time_ranges: Option<Vec<serde_json::Value>>,
83}