datadog_api_client/datadogV1/model/
model_shared_dashboard_update_request.rs1use serde::de::{Error, MapAccess, Visitor};
5use serde::{Deserialize, Deserializer, Serialize};
6use serde_with::skip_serializing_none;
7use std::fmt::{self, Formatter};
8
9#[non_exhaustive]
11#[skip_serializing_none]
12#[derive(Clone, Debug, PartialEq, Serialize)]
13pub struct SharedDashboardUpdateRequest {
14 #[serde(rename = "embeddable_domains")]
16 pub embeddable_domains: Option<Vec<String>>,
17 #[serde(
19 rename = "expiration",
20 default,
21 with = "::serde_with::rust::double_option"
22 )]
23 pub expiration: Option<Option<chrono::DateTime<chrono::Utc>>>,
24 #[serde(
26 rename = "global_time",
27 default,
28 with = "::serde_with::rust::double_option"
29 )]
30 pub global_time:
31 Option<Option<crate::datadogV1::model::SharedDashboardUpdateRequestGlobalTime>>,
32 #[serde(
34 rename = "global_time_selectable_enabled",
35 default,
36 with = "::serde_with::rust::double_option"
37 )]
38 pub global_time_selectable_enabled: Option<Option<bool>>,
39 #[serde(rename = "invitees")]
41 pub invitees: Option<Vec<crate::datadogV1::model::SharedDashboardInviteesItems>>,
42 #[serde(
44 rename = "selectable_template_vars",
45 default,
46 with = "::serde_with::rust::double_option"
47 )]
48 pub selectable_template_vars:
49 Option<Option<Vec<crate::datadogV1::model::SelectableTemplateVariableItems>>>,
50 #[deprecated]
52 #[serde(
53 rename = "share_list",
54 default,
55 with = "::serde_with::rust::double_option"
56 )]
57 pub share_list: Option<Option<Vec<String>>>,
58 #[serde(
60 rename = "share_type",
61 default,
62 with = "::serde_with::rust::double_option"
63 )]
64 pub share_type: Option<Option<crate::datadogV1::model::DashboardShareType>>,
65 #[serde(rename = "status")]
67 pub status: Option<crate::datadogV1::model::SharedDashboardStatus>,
68 #[serde(rename = "title")]
70 pub title: Option<String>,
71 #[serde(rename = "viewing_preferences")]
73 pub viewing_preferences: Option<crate::datadogV1::model::ViewingPreferences>,
74 #[serde(flatten)]
75 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
76 #[serde(skip)]
77 #[serde(default)]
78 pub(crate) _unparsed: bool,
79}
80
81impl SharedDashboardUpdateRequest {
82 pub fn new() -> SharedDashboardUpdateRequest {
83 #[allow(deprecated)]
84 SharedDashboardUpdateRequest {
85 embeddable_domains: None,
86 expiration: None,
87 global_time: None,
88 global_time_selectable_enabled: None,
89 invitees: None,
90 selectable_template_vars: None,
91 share_list: None,
92 share_type: None,
93 status: None,
94 title: None,
95 viewing_preferences: None,
96 additional_properties: std::collections::BTreeMap::new(),
97 _unparsed: false,
98 }
99 }
100
101 #[allow(deprecated)]
102 pub fn embeddable_domains(mut self, value: Vec<String>) -> Self {
103 self.embeddable_domains = Some(value);
104 self
105 }
106
107 #[allow(deprecated)]
108 pub fn expiration(mut self, value: Option<chrono::DateTime<chrono::Utc>>) -> Self {
109 self.expiration = Some(value);
110 self
111 }
112
113 #[allow(deprecated)]
114 pub fn global_time(
115 mut self,
116 value: Option<crate::datadogV1::model::SharedDashboardUpdateRequestGlobalTime>,
117 ) -> Self {
118 self.global_time = Some(value);
119 self
120 }
121
122 #[allow(deprecated)]
123 pub fn global_time_selectable_enabled(mut self, value: Option<bool>) -> Self {
124 self.global_time_selectable_enabled = Some(value);
125 self
126 }
127
128 #[allow(deprecated)]
129 pub fn invitees(
130 mut self,
131 value: Vec<crate::datadogV1::model::SharedDashboardInviteesItems>,
132 ) -> Self {
133 self.invitees = Some(value);
134 self
135 }
136
137 #[allow(deprecated)]
138 pub fn selectable_template_vars(
139 mut self,
140 value: Option<Vec<crate::datadogV1::model::SelectableTemplateVariableItems>>,
141 ) -> Self {
142 self.selectable_template_vars = Some(value);
143 self
144 }
145
146 #[allow(deprecated)]
147 pub fn share_list(mut self, value: Option<Vec<String>>) -> Self {
148 self.share_list = Some(value);
149 self
150 }
151
152 #[allow(deprecated)]
153 pub fn share_type(
154 mut self,
155 value: Option<crate::datadogV1::model::DashboardShareType>,
156 ) -> Self {
157 self.share_type = Some(value);
158 self
159 }
160
161 #[allow(deprecated)]
162 pub fn status(mut self, value: crate::datadogV1::model::SharedDashboardStatus) -> Self {
163 self.status = Some(value);
164 self
165 }
166
167 #[allow(deprecated)]
168 pub fn title(mut self, value: String) -> Self {
169 self.title = Some(value);
170 self
171 }
172
173 #[allow(deprecated)]
174 pub fn viewing_preferences(
175 mut self,
176 value: crate::datadogV1::model::ViewingPreferences,
177 ) -> Self {
178 self.viewing_preferences = Some(value);
179 self
180 }
181
182 pub fn additional_properties(
183 mut self,
184 value: std::collections::BTreeMap<String, serde_json::Value>,
185 ) -> Self {
186 self.additional_properties = value;
187 self
188 }
189}
190
191impl Default for SharedDashboardUpdateRequest {
192 fn default() -> Self {
193 Self::new()
194 }
195}
196
197impl<'de> Deserialize<'de> for SharedDashboardUpdateRequest {
198 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
199 where
200 D: Deserializer<'de>,
201 {
202 struct SharedDashboardUpdateRequestVisitor;
203 impl<'a> Visitor<'a> for SharedDashboardUpdateRequestVisitor {
204 type Value = SharedDashboardUpdateRequest;
205
206 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
207 f.write_str("a mapping")
208 }
209
210 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
211 where
212 M: MapAccess<'a>,
213 {
214 let mut embeddable_domains: Option<Vec<String>> = None;
215 let mut expiration: Option<Option<chrono::DateTime<chrono::Utc>>> = None;
216 let mut global_time: Option<
217 Option<crate::datadogV1::model::SharedDashboardUpdateRequestGlobalTime>,
218 > = None;
219 let mut global_time_selectable_enabled: Option<Option<bool>> = None;
220 let mut invitees: Option<
221 Vec<crate::datadogV1::model::SharedDashboardInviteesItems>,
222 > = None;
223 let mut selectable_template_vars: Option<
224 Option<Vec<crate::datadogV1::model::SelectableTemplateVariableItems>>,
225 > = None;
226 let mut share_list: Option<Option<Vec<String>>> = None;
227 let mut share_type: Option<Option<crate::datadogV1::model::DashboardShareType>> =
228 None;
229 let mut status: Option<crate::datadogV1::model::SharedDashboardStatus> = None;
230 let mut title: Option<String> = None;
231 let mut viewing_preferences: Option<crate::datadogV1::model::ViewingPreferences> =
232 None;
233 let mut additional_properties: std::collections::BTreeMap<
234 String,
235 serde_json::Value,
236 > = std::collections::BTreeMap::new();
237 let mut _unparsed = false;
238
239 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
240 match k.as_str() {
241 "embeddable_domains" => {
242 if v.is_null() {
243 continue;
244 }
245 embeddable_domains =
246 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
247 }
248 "expiration" => {
249 expiration = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
250 }
251 "global_time" => {
252 global_time =
253 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
254 }
255 "global_time_selectable_enabled" => {
256 global_time_selectable_enabled =
257 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
258 }
259 "invitees" => {
260 if v.is_null() {
261 continue;
262 }
263 invitees = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
264 }
265 "selectable_template_vars" => {
266 selectable_template_vars =
267 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
268 }
269 "share_list" => {
270 share_list = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
271 }
272 "share_type" => {
273 share_type = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
274 if let Some(ref _share_type) = share_type {
275 match _share_type {
276 Some(
277 crate::datadogV1::model::DashboardShareType::UnparsedObject(
278 _share_type,
279 ),
280 ) => {
281 _unparsed = true;
282 }
283 _ => {}
284 }
285 }
286 }
287 "status" => {
288 if v.is_null() {
289 continue;
290 }
291 status = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
292 if let Some(ref _status) = status {
293 match _status {
294 crate::datadogV1::model::SharedDashboardStatus::UnparsedObject(_status) => {
295 _unparsed = true;
296 },
297 _ => {}
298 }
299 }
300 }
301 "title" => {
302 if v.is_null() {
303 continue;
304 }
305 title = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
306 }
307 "viewing_preferences" => {
308 if v.is_null() {
309 continue;
310 }
311 viewing_preferences =
312 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
313 }
314 &_ => {
315 if let Ok(value) = serde_json::from_value(v.clone()) {
316 additional_properties.insert(k, value);
317 }
318 }
319 }
320 }
321
322 #[allow(deprecated)]
323 let content = SharedDashboardUpdateRequest {
324 embeddable_domains,
325 expiration,
326 global_time,
327 global_time_selectable_enabled,
328 invitees,
329 selectable_template_vars,
330 share_list,
331 share_type,
332 status,
333 title,
334 viewing_preferences,
335 additional_properties,
336 _unparsed,
337 };
338
339 Ok(content)
340 }
341 }
342
343 deserializer.deserialize_any(SharedDashboardUpdateRequestVisitor)
344 }
345}