Skip to main content

box_open_sdk/models/
schemas.rs

1// Code generated by box-gantry 0.1.0 (spec 3fb3510fe12f2f80) for Box API 2024.0. DO NOT EDIT.
2
3use crate::serde_helpers::double_option;
4
5#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6pub struct AccessToken {
7    #[serde(default, skip_serializing_if = "Option::is_none")]
8    pub access_token: Option<String>,
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    pub expires_in: Option<i64>,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub token_type: Option<AccessTokenTokenType>,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub restricted_to: Option<Vec<ResourceScope>>,
15    #[serde(default, skip_serializing_if = "Option::is_none")]
16    pub refresh_token: Option<String>,
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub issued_token_type: Option<AccessTokenIssuedTokenType>,
19}
20
21#[derive(Clone, Debug, PartialEq)]
22pub enum AiAgent {
23    AiAgentAsk(AiAgentAsk),
24    AiAgentTextGen(AiAgentTextGen),
25    AiAgentExtract(AiAgentExtract),
26    AiAgentExtractStructured(AiAgentExtractStructured),
27    /// An unrecognized discriminator, retained verbatim (open union).
28    Unknown(serde_json::Value),
29}
30
31impl Default for AiAgent {
32    fn default() -> Self {
33        Self::Unknown(Default::default())
34    }
35}
36
37impl serde::Serialize for AiAgent {
38    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
39        match self {
40            Self::AiAgentAsk(inner) => inner.serialize(serializer),
41            Self::AiAgentTextGen(inner) => inner.serialize(serializer),
42            Self::AiAgentExtract(inner) => inner.serialize(serializer),
43            Self::AiAgentExtractStructured(inner) => inner.serialize(serializer),
44            Self::Unknown(inner) => inner.serialize(serializer),
45        }
46    }
47}
48
49impl<'de> serde::Deserialize<'de> for AiAgent {
50    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
51        let value = serde_json::Value::deserialize(deserializer)?;
52        let tag = value
53            .get("type")
54            .and_then(serde_json::Value::as_str)
55            .map(str::to_owned);
56        match tag.as_deref() {
57            Some("ai_agent_ask") => Ok(Self::AiAgentAsk(
58                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
59            )),
60            Some("ai_agent_text_gen") => Ok(Self::AiAgentTextGen(
61                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
62            )),
63            Some("ai_agent_extract") => Ok(Self::AiAgentExtract(
64                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
65            )),
66            Some("ai_agent_extract_structured") => Ok(Self::AiAgentExtractStructured(
67                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
68            )),
69            _ => Ok(Self::Unknown(value)),
70        }
71    }
72}
73
74#[derive(Clone, Debug, PartialEq)]
75pub enum AiAgentAllowedEntity {
76    User(UserBase),
77    Group(GroupBase),
78    /// An unrecognized discriminator, retained verbatim (open union).
79    Unknown(serde_json::Value),
80}
81
82impl Default for AiAgentAllowedEntity {
83    fn default() -> Self {
84        Self::Unknown(Default::default())
85    }
86}
87
88impl serde::Serialize for AiAgentAllowedEntity {
89    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
90        match self {
91            Self::User(inner) => inner.serialize(serializer),
92            Self::Group(inner) => inner.serialize(serializer),
93            Self::Unknown(inner) => inner.serialize(serializer),
94        }
95    }
96}
97
98impl<'de> serde::Deserialize<'de> for AiAgentAllowedEntity {
99    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
100        let value = serde_json::Value::deserialize(deserializer)?;
101        let tag = value
102            .get("type")
103            .and_then(serde_json::Value::as_str)
104            .map(str::to_owned);
105        match tag.as_deref() {
106            Some("user") => Ok(Self::User(
107                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
108            )),
109            Some("group") => Ok(Self::Group(
110                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
111            )),
112            _ => Ok(Self::Unknown(value)),
113        }
114    }
115}
116
117#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
118pub struct AiAgentAsk {
119    pub r#type: AiAgentAskType,
120    #[serde(default, skip_serializing_if = "Option::is_none")]
121    pub long_text: Option<AiAgentLongTextTool>,
122    #[serde(default, skip_serializing_if = "Option::is_none")]
123    pub basic_text: Option<AiAgentBasicTextTool>,
124    #[serde(default, skip_serializing_if = "Option::is_none")]
125    pub spreadsheet: Option<AiAgentSpreadsheetTool>,
126    #[serde(default, skip_serializing_if = "Option::is_none")]
127    pub long_text_multi: Option<AiAgentLongTextTool>,
128    #[serde(default, skip_serializing_if = "Option::is_none")]
129    pub basic_text_multi: Option<AiAgentBasicTextTool>,
130    #[serde(default, skip_serializing_if = "Option::is_none")]
131    pub basic_image: Option<AiAgentBasicTextTool>,
132    #[serde(default, skip_serializing_if = "Option::is_none")]
133    pub basic_image_multi: Option<AiAgentBasicTextTool>,
134}
135
136#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
137pub struct AiAgentBasicGenTool {
138    #[serde(default, skip_serializing_if = "Option::is_none")]
139    pub model: Option<String>,
140    #[serde(default, skip_serializing_if = "Option::is_none")]
141    pub num_tokens_for_completion: Option<i64>,
142    #[serde(default, skip_serializing_if = "Option::is_none")]
143    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
144    #[serde(default, skip_serializing_if = "Option::is_none")]
145    pub system_message: Option<String>,
146    #[serde(default, skip_serializing_if = "Option::is_none")]
147    pub prompt_template: Option<String>,
148    #[serde(default, skip_serializing_if = "Option::is_none")]
149    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
150    #[serde(default, skip_serializing_if = "Option::is_none")]
151    pub content_template: Option<String>,
152}
153
154#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
155pub struct AiAgentBasicTextTool {
156    #[serde(default, skip_serializing_if = "Option::is_none")]
157    pub model: Option<String>,
158    #[serde(default, skip_serializing_if = "Option::is_none")]
159    pub num_tokens_for_completion: Option<i64>,
160    #[serde(default, skip_serializing_if = "Option::is_none")]
161    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
162    #[serde(default, skip_serializing_if = "Option::is_none")]
163    pub system_message: Option<String>,
164    #[serde(default, skip_serializing_if = "Option::is_none")]
165    pub prompt_template: Option<String>,
166}
167
168#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
169pub struct AiAgentBasicTextToolBase {
170    #[serde(default, skip_serializing_if = "Option::is_none")]
171    pub model: Option<String>,
172    #[serde(default, skip_serializing_if = "Option::is_none")]
173    pub num_tokens_for_completion: Option<i64>,
174    #[serde(default, skip_serializing_if = "Option::is_none")]
175    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
176}
177
178#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
179pub struct AiAgentBasicTextToolTextGen {
180    #[serde(default, skip_serializing_if = "Option::is_none")]
181    pub model: Option<String>,
182    #[serde(default, skip_serializing_if = "Option::is_none")]
183    pub num_tokens_for_completion: Option<i64>,
184    #[serde(default, skip_serializing_if = "Option::is_none")]
185    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
186    #[serde(default, skip_serializing_if = "Option::is_none")]
187    pub system_message: Option<String>,
188    #[serde(default, skip_serializing_if = "Option::is_none")]
189    pub prompt_template: Option<String>,
190}
191
192#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
193pub struct AiAgentExtract {
194    pub r#type: AiAgentExtractType,
195    #[serde(default, skip_serializing_if = "Option::is_none")]
196    pub long_text: Option<AiAgentLongTextTool>,
197    #[serde(default, skip_serializing_if = "Option::is_none")]
198    pub basic_text: Option<AiAgentBasicTextTool>,
199    #[serde(default, skip_serializing_if = "Option::is_none")]
200    pub basic_image: Option<AiAgentBasicTextTool>,
201}
202
203#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
204pub struct AiAgentExtractStructured {
205    pub r#type: AiAgentExtractStructuredType,
206    #[serde(default, skip_serializing_if = "Option::is_none")]
207    pub long_text: Option<AiAgentLongTextTool>,
208    #[serde(default, skip_serializing_if = "Option::is_none")]
209    pub basic_text: Option<AiAgentBasicTextTool>,
210    #[serde(default, skip_serializing_if = "Option::is_none")]
211    pub basic_image: Option<AiAgentBasicTextTool>,
212}
213
214#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
215pub struct AiAgentInfo {
216    #[serde(default, skip_serializing_if = "Option::is_none")]
217    pub models: Option<Vec<AiAgentInfoModels>>,
218    #[serde(default, skip_serializing_if = "Option::is_none")]
219    pub processor: Option<String>,
220}
221
222#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
223pub struct AiAgentLongTextTool {
224    #[serde(default, skip_serializing_if = "Option::is_none")]
225    pub model: Option<String>,
226    #[serde(default, skip_serializing_if = "Option::is_none")]
227    pub num_tokens_for_completion: Option<i64>,
228    #[serde(default, skip_serializing_if = "Option::is_none")]
229    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
230    #[serde(default, skip_serializing_if = "Option::is_none")]
231    pub system_message: Option<String>,
232    #[serde(default, skip_serializing_if = "Option::is_none")]
233    pub prompt_template: Option<String>,
234    #[serde(default, skip_serializing_if = "Option::is_none")]
235    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
236}
237
238#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
239pub struct AiAgentLongTextToolTextGen {
240    #[serde(default, skip_serializing_if = "Option::is_none")]
241    pub model: Option<String>,
242    #[serde(default, skip_serializing_if = "Option::is_none")]
243    pub num_tokens_for_completion: Option<i64>,
244    #[serde(default, skip_serializing_if = "Option::is_none")]
245    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
246    #[serde(default, skip_serializing_if = "Option::is_none")]
247    pub system_message: Option<String>,
248    #[serde(default, skip_serializing_if = "Option::is_none")]
249    pub prompt_template: Option<String>,
250    #[serde(default, skip_serializing_if = "Option::is_none")]
251    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
252}
253
254#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
255pub struct AiAgentReference {
256    pub r#type: AiAgentReferenceType,
257    pub id: String,
258}
259
260#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
261pub struct AiAgentSpreadsheetTool {
262    #[serde(default, skip_serializing_if = "Option::is_none")]
263    pub model: Option<String>,
264    #[serde(default, skip_serializing_if = "Option::is_none")]
265    pub num_tokens_for_completion: Option<i64>,
266    #[serde(default, skip_serializing_if = "Option::is_none")]
267    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
268}
269
270#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
271pub struct AiAgentTextGen {
272    pub r#type: AiAgentTextGenType,
273    #[serde(default, skip_serializing_if = "Option::is_none")]
274    pub basic_gen: Option<AiAgentBasicGenTool>,
275}
276
277#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
278pub struct AiAsk {
279    pub mode: AiAskMode,
280    pub prompt: String,
281    pub items: Vec<AiItemAsk>,
282    #[serde(default, skip_serializing_if = "Option::is_none")]
283    pub dialogue_history: Option<Vec<AiDialogueHistory>>,
284    #[serde(default, skip_serializing_if = "Option::is_none")]
285    pub include_citations: Option<bool>,
286    #[serde(default, skip_serializing_if = "Option::is_none")]
287    pub ai_agent: Option<AiAskAgent>,
288}
289
290#[derive(Clone, Debug, PartialEq)]
291pub enum AiAskAgent {
292    AiAgentId(AiAgentReference),
293    AiAgentAsk(AiAgentAsk),
294    /// An unrecognized discriminator, retained verbatim (open union).
295    Unknown(serde_json::Value),
296}
297
298impl Default for AiAskAgent {
299    fn default() -> Self {
300        Self::Unknown(Default::default())
301    }
302}
303
304impl serde::Serialize for AiAskAgent {
305    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
306        match self {
307            Self::AiAgentId(inner) => inner.serialize(serializer),
308            Self::AiAgentAsk(inner) => inner.serialize(serializer),
309            Self::Unknown(inner) => inner.serialize(serializer),
310        }
311    }
312}
313
314impl<'de> serde::Deserialize<'de> for AiAskAgent {
315    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
316        let value = serde_json::Value::deserialize(deserializer)?;
317        let tag = value
318            .get("type")
319            .and_then(serde_json::Value::as_str)
320            .map(str::to_owned);
321        match tag.as_deref() {
322            Some("ai_agent_id") => Ok(Self::AiAgentId(
323                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
324            )),
325            Some("ai_agent_ask") => Ok(Self::AiAgentAsk(
326                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
327            )),
328            _ => Ok(Self::Unknown(value)),
329        }
330    }
331}
332
333#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
334pub struct AiCitation {
335    #[serde(default, skip_serializing_if = "Option::is_none")]
336    pub content: Option<String>,
337    #[serde(default, skip_serializing_if = "Option::is_none")]
338    pub id: Option<String>,
339    #[serde(default, skip_serializing_if = "Option::is_none")]
340    pub r#type: Option<AiCitationType>,
341    #[serde(default, skip_serializing_if = "Option::is_none")]
342    pub name: Option<String>,
343}
344
345#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
346pub struct AiDialogueHistory {
347    #[serde(default, skip_serializing_if = "Option::is_none")]
348    pub prompt: Option<String>,
349    #[serde(default, skip_serializing_if = "Option::is_none")]
350    pub answer: Option<String>,
351    #[serde(default, skip_serializing_if = "Option::is_none")]
352    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
353}
354
355#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
356pub struct AiExtract {
357    pub prompt: String,
358    pub items: Vec<AiItemBase>,
359    #[serde(default, skip_serializing_if = "Option::is_none")]
360    pub ai_agent: Option<AiExtractAgent>,
361}
362
363#[derive(Clone, Debug, PartialEq)]
364pub enum AiExtractAgent {
365    AiAgentId(AiAgentReference),
366    AiAgentExtract(AiAgentExtract),
367    /// An unrecognized discriminator, retained verbatim (open union).
368    Unknown(serde_json::Value),
369}
370
371impl Default for AiExtractAgent {
372    fn default() -> Self {
373        Self::Unknown(Default::default())
374    }
375}
376
377impl serde::Serialize for AiExtractAgent {
378    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
379        match self {
380            Self::AiAgentId(inner) => inner.serialize(serializer),
381            Self::AiAgentExtract(inner) => inner.serialize(serializer),
382            Self::Unknown(inner) => inner.serialize(serializer),
383        }
384    }
385}
386
387impl<'de> serde::Deserialize<'de> for AiExtractAgent {
388    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
389        let value = serde_json::Value::deserialize(deserializer)?;
390        let tag = value
391            .get("type")
392            .and_then(serde_json::Value::as_str)
393            .map(str::to_owned);
394        match tag.as_deref() {
395            Some("ai_agent_id") => Ok(Self::AiAgentId(
396                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
397            )),
398            Some("ai_agent_extract") => Ok(Self::AiAgentExtract(
399                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
400            )),
401            _ => Ok(Self::Unknown(value)),
402        }
403    }
404}
405
406#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
407pub struct AiExtractFieldOption {
408    pub key: String,
409}
410
411#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
412pub struct AiExtractResponse {
413    #[serde(flatten)]
414    pub extra: std::collections::HashMap<String, serde_json::Value>,
415}
416
417#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
418pub struct AiExtractStructured {
419    pub items: Vec<AiItemBase>,
420    #[serde(default, skip_serializing_if = "Option::is_none")]
421    pub metadata_template: Option<AiExtractStructuredMetadataTemplate>,
422    #[serde(default, skip_serializing_if = "Option::is_none")]
423    pub fields: Option<Vec<AiExtractStructuredFields>>,
424    #[serde(default, skip_serializing_if = "Option::is_none")]
425    pub ai_agent: Option<AiExtractStructuredAgent>,
426    #[serde(default, skip_serializing_if = "Option::is_none")]
427    pub include_confidence_score: Option<bool>,
428    #[serde(default, skip_serializing_if = "Option::is_none")]
429    pub include_reference: Option<bool>,
430    #[serde(default, skip_serializing_if = "Option::is_none")]
431    pub taxonomy_sources: Option<Vec<AiTaxonomySource>>,
432}
433
434#[derive(Clone, Debug, PartialEq)]
435pub enum AiExtractStructuredAgent {
436    AiAgentId(AiAgentReference),
437    AiAgentExtractStructured(AiAgentExtractStructured),
438    /// An unrecognized discriminator, retained verbatim (open union).
439    Unknown(serde_json::Value),
440}
441
442impl Default for AiExtractStructuredAgent {
443    fn default() -> Self {
444        Self::Unknown(Default::default())
445    }
446}
447
448impl serde::Serialize for AiExtractStructuredAgent {
449    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
450        match self {
451            Self::AiAgentId(inner) => inner.serialize(serializer),
452            Self::AiAgentExtractStructured(inner) => inner.serialize(serializer),
453            Self::Unknown(inner) => inner.serialize(serializer),
454        }
455    }
456}
457
458impl<'de> serde::Deserialize<'de> for AiExtractStructuredAgent {
459    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
460        let value = serde_json::Value::deserialize(deserializer)?;
461        let tag = value
462            .get("type")
463            .and_then(serde_json::Value::as_str)
464            .map(str::to_owned);
465        match tag.as_deref() {
466            Some("ai_agent_id") => Ok(Self::AiAgentId(
467                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
468            )),
469            Some("ai_agent_extract_structured") => Ok(Self::AiAgentExtractStructured(
470                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
471            )),
472            _ => Ok(Self::Unknown(value)),
473        }
474    }
475}
476
477#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
478pub struct AiExtractStructuredResponse {
479    pub answer: AiExtractResponse,
480    pub created_at: chrono::DateTime<chrono::Utc>,
481    #[serde(default, skip_serializing_if = "Option::is_none")]
482    pub completion_reason: Option<String>,
483    #[serde(default, skip_serializing_if = "Option::is_none")]
484    pub confidence_score: Option<std::collections::HashMap<String, serde_json::Value>>,
485    #[serde(default, skip_serializing_if = "Option::is_none")]
486    pub reference: Option<std::collections::HashMap<String, serde_json::Value>>,
487    #[serde(default, skip_serializing_if = "Option::is_none")]
488    pub ai_agent_info: Option<AiAgentInfo>,
489}
490
491#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
492pub struct AiExtractSubField {
493    pub key: String,
494    #[serde(default, skip_serializing_if = "Option::is_none")]
495    pub description: Option<String>,
496    #[serde(
497        rename = "displayName",
498        default,
499        skip_serializing_if = "Option::is_none"
500    )]
501    pub display_name: Option<String>,
502    #[serde(default, skip_serializing_if = "Option::is_none")]
503    pub prompt: Option<String>,
504    #[serde(default, skip_serializing_if = "Option::is_none")]
505    pub r#type: Option<String>,
506    #[serde(default, skip_serializing_if = "Option::is_none")]
507    pub options: Option<Vec<AiExtractFieldOption>>,
508}
509
510#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
511pub struct AiItemBase {
512    pub id: String,
513    pub r#type: AiCitationType,
514    #[serde(default, skip_serializing_if = "Option::is_none")]
515    pub content: Option<String>,
516}
517
518#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
519pub struct AiItemAsk {
520    pub id: String,
521    pub r#type: AiItemAskType,
522    #[serde(default, skip_serializing_if = "Option::is_none")]
523    pub content: Option<String>,
524}
525
526#[derive(Clone, Debug, PartialEq)]
527pub enum AiLlmEndpointParams {
528    OpenaiParams(AiLlmEndpointParamsOpenAi),
529    GoogleParams(AiLlmEndpointParamsGoogle),
530    AwsParams(AiLlmEndpointParamsAWS),
531    IbmParams(AiLlmEndpointParamsIBM),
532    /// An unrecognized discriminator, retained verbatim (open union).
533    Unknown(serde_json::Value),
534}
535
536impl Default for AiLlmEndpointParams {
537    fn default() -> Self {
538        Self::Unknown(Default::default())
539    }
540}
541
542impl serde::Serialize for AiLlmEndpointParams {
543    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
544        match self {
545            Self::OpenaiParams(inner) => inner.serialize(serializer),
546            Self::GoogleParams(inner) => inner.serialize(serializer),
547            Self::AwsParams(inner) => inner.serialize(serializer),
548            Self::IbmParams(inner) => inner.serialize(serializer),
549            Self::Unknown(inner) => inner.serialize(serializer),
550        }
551    }
552}
553
554impl<'de> serde::Deserialize<'de> for AiLlmEndpointParams {
555    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
556        let value = serde_json::Value::deserialize(deserializer)?;
557        let tag = value
558            .get("type")
559            .and_then(serde_json::Value::as_str)
560            .map(str::to_owned);
561        match tag.as_deref() {
562            Some("openai_params") => Ok(Self::OpenaiParams(
563                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
564            )),
565            Some("google_params") => Ok(Self::GoogleParams(
566                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
567            )),
568            Some("aws_params") => Ok(Self::AwsParams(
569                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
570            )),
571            Some("ibm_params") => Ok(Self::IbmParams(
572                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
573            )),
574            _ => Ok(Self::Unknown(value)),
575        }
576    }
577}
578
579#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
580pub struct AiLlmEndpointParamsAWS {
581    pub r#type: AiLlmEndpointParamsAWSType,
582    #[serde(
583        default,
584        skip_serializing_if = "Option::is_none",
585        deserialize_with = "double_option"
586    )]
587    pub temperature: Option<Option<f64>>,
588    #[serde(
589        default,
590        skip_serializing_if = "Option::is_none",
591        deserialize_with = "double_option"
592    )]
593    pub top_p: Option<Option<f64>>,
594}
595
596#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
597pub struct AiLlmEndpointParamsGoogle {
598    pub r#type: AiLlmEndpointParamsGoogleType,
599    #[serde(
600        default,
601        skip_serializing_if = "Option::is_none",
602        deserialize_with = "double_option"
603    )]
604    pub temperature: Option<Option<f64>>,
605    #[serde(
606        default,
607        skip_serializing_if = "Option::is_none",
608        deserialize_with = "double_option"
609    )]
610    pub top_p: Option<Option<f64>>,
611    #[serde(
612        default,
613        skip_serializing_if = "Option::is_none",
614        deserialize_with = "double_option"
615    )]
616    pub top_k: Option<Option<f64>>,
617}
618
619#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
620pub struct AiLlmEndpointParamsIBM {
621    pub r#type: AiLlmEndpointParamsIBMType,
622    #[serde(
623        default,
624        skip_serializing_if = "Option::is_none",
625        deserialize_with = "double_option"
626    )]
627    pub temperature: Option<Option<f64>>,
628    #[serde(
629        default,
630        skip_serializing_if = "Option::is_none",
631        deserialize_with = "double_option"
632    )]
633    pub top_p: Option<Option<f64>>,
634    #[serde(
635        default,
636        skip_serializing_if = "Option::is_none",
637        deserialize_with = "double_option"
638    )]
639    pub top_k: Option<Option<f64>>,
640}
641
642#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
643pub struct AiLlmEndpointParamsOpenAi {
644    pub r#type: AiLlmEndpointParamsOpenAiType,
645    #[serde(
646        default,
647        skip_serializing_if = "Option::is_none",
648        deserialize_with = "double_option"
649    )]
650    pub temperature: Option<Option<f64>>,
651    #[serde(
652        default,
653        skip_serializing_if = "Option::is_none",
654        deserialize_with = "double_option"
655    )]
656    pub top_p: Option<Option<f64>>,
657    #[serde(
658        default,
659        skip_serializing_if = "Option::is_none",
660        deserialize_with = "double_option"
661    )]
662    pub frequency_penalty: Option<Option<f64>>,
663    #[serde(
664        default,
665        skip_serializing_if = "Option::is_none",
666        deserialize_with = "double_option"
667    )]
668    pub presence_penalty: Option<Option<f64>>,
669    #[serde(
670        default,
671        skip_serializing_if = "Option::is_none",
672        deserialize_with = "double_option"
673    )]
674    pub stop: Option<Option<String>>,
675}
676
677#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
678pub struct AiMultipleAgentResponse {
679    #[serde(default, skip_serializing_if = "Option::is_none")]
680    pub limit: Option<i64>,
681    #[serde(
682        default,
683        skip_serializing_if = "Option::is_none",
684        deserialize_with = "double_option"
685    )]
686    pub next_marker: Option<Option<String>>,
687    #[serde(
688        default,
689        skip_serializing_if = "Option::is_none",
690        deserialize_with = "double_option"
691    )]
692    pub prev_marker: Option<Option<String>>,
693    pub entries: Vec<AiSingleAgentResponseFull>,
694}
695
696#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
697pub struct AiOptionsRules {
698    #[serde(default, skip_serializing_if = "Option::is_none")]
699    pub multi_select: Option<bool>,
700    #[serde(default, skip_serializing_if = "Option::is_none")]
701    pub selectable_levels: Option<Vec<i64>>,
702}
703
704#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
705pub struct AiResponse {
706    pub answer: String,
707    pub created_at: chrono::DateTime<chrono::Utc>,
708    #[serde(default, skip_serializing_if = "Option::is_none")]
709    pub completion_reason: Option<String>,
710    #[serde(default, skip_serializing_if = "Option::is_none")]
711    pub ai_agent_info: Option<AiAgentInfo>,
712}
713
714#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
715pub struct AiResponseFull {
716    pub answer: String,
717    pub created_at: chrono::DateTime<chrono::Utc>,
718    #[serde(default, skip_serializing_if = "Option::is_none")]
719    pub completion_reason: Option<String>,
720    #[serde(default, skip_serializing_if = "Option::is_none")]
721    pub ai_agent_info: Option<AiAgentInfo>,
722    #[serde(default, skip_serializing_if = "Option::is_none")]
723    pub citations: Option<Vec<AiCitation>>,
724}
725
726#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
727pub struct AiSingleAgentResponse {
728    pub id: String,
729    #[serde(default, skip_serializing_if = "Option::is_none")]
730    pub r#type: Option<AiSingleAgentResponseType>,
731    pub origin: String,
732    pub name: String,
733    pub access_state: String,
734    #[serde(default, skip_serializing_if = "Option::is_none")]
735    pub created_by: Option<UserBase>,
736    #[serde(default, skip_serializing_if = "Option::is_none")]
737    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
738    #[serde(default, skip_serializing_if = "Option::is_none")]
739    pub modified_by: Option<UserBase>,
740    #[serde(default, skip_serializing_if = "Option::is_none")]
741    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
742    #[serde(default, skip_serializing_if = "Option::is_none")]
743    pub icon_reference: Option<String>,
744    #[serde(default, skip_serializing_if = "Option::is_none")]
745    pub allowed_entities: Option<Vec<AiAgentAllowedEntity>>,
746}
747
748#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
749pub struct AiSingleAgentResponseFull {
750    pub id: String,
751    #[serde(default, skip_serializing_if = "Option::is_none")]
752    pub r#type: Option<AiSingleAgentResponseType>,
753    pub origin: String,
754    pub name: String,
755    pub access_state: String,
756    #[serde(default, skip_serializing_if = "Option::is_none")]
757    pub created_by: Option<UserBase>,
758    #[serde(default, skip_serializing_if = "Option::is_none")]
759    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
760    #[serde(default, skip_serializing_if = "Option::is_none")]
761    pub modified_by: Option<UserBase>,
762    #[serde(default, skip_serializing_if = "Option::is_none")]
763    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
764    #[serde(default, skip_serializing_if = "Option::is_none")]
765    pub icon_reference: Option<String>,
766    #[serde(default, skip_serializing_if = "Option::is_none")]
767    pub allowed_entities: Option<Vec<AiAgentAllowedEntity>>,
768    #[serde(default, skip_serializing_if = "Option::is_none")]
769    pub ask: Option<AiStudioAgentAskResponse>,
770    #[serde(default, skip_serializing_if = "Option::is_none")]
771    pub text_gen: Option<AiStudioAgentTextGenResponse>,
772    #[serde(default, skip_serializing_if = "Option::is_none")]
773    pub extract: Option<AiStudioAgentExtractResponse>,
774}
775
776#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
777pub struct AiStudioAgentAsk {
778    pub r#type: AiAgentAskType,
779    pub access_state: String,
780    pub description: String,
781    #[serde(
782        default,
783        skip_serializing_if = "Option::is_none",
784        deserialize_with = "double_option"
785    )]
786    pub custom_instructions: Option<Option<String>>,
787    #[serde(default, skip_serializing_if = "Option::is_none")]
788    pub suggested_questions: Option<Vec<String>>,
789    #[serde(default, skip_serializing_if = "Option::is_none")]
790    pub long_text: Option<AiStudioAgentLongTextTool>,
791    #[serde(default, skip_serializing_if = "Option::is_none")]
792    pub basic_text: Option<AiStudioAgentBasicTextTool>,
793    #[serde(default, skip_serializing_if = "Option::is_none")]
794    pub basic_image: Option<AiStudioAgentBasicTextTool>,
795    #[serde(default, skip_serializing_if = "Option::is_none")]
796    pub spreadsheet: Option<AiStudioAgentSpreadsheetTool>,
797    #[serde(default, skip_serializing_if = "Option::is_none")]
798    pub long_text_multi: Option<AiStudioAgentLongTextTool>,
799    #[serde(default, skip_serializing_if = "Option::is_none")]
800    pub basic_text_multi: Option<AiStudioAgentBasicTextTool>,
801    #[serde(default, skip_serializing_if = "Option::is_none")]
802    pub basic_image_multi: Option<AiStudioAgentBasicTextTool>,
803}
804
805#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
806pub struct AiStudioAgentAskResponse {
807    pub r#type: AiAgentAskType,
808    pub access_state: String,
809    pub description: String,
810    #[serde(
811        default,
812        skip_serializing_if = "Option::is_none",
813        deserialize_with = "double_option"
814    )]
815    pub custom_instructions: Option<Option<String>>,
816    #[serde(default, skip_serializing_if = "Option::is_none")]
817    pub suggested_questions: Option<Vec<String>>,
818    #[serde(default, skip_serializing_if = "Option::is_none")]
819    pub long_text: Option<AiStudioAgentLongTextToolResponse>,
820    #[serde(default, skip_serializing_if = "Option::is_none")]
821    pub basic_text: Option<AiStudioAgentBasicTextToolResponse>,
822    #[serde(default, skip_serializing_if = "Option::is_none")]
823    pub basic_image: Option<AiStudioAgentBasicTextToolResponse>,
824    #[serde(default, skip_serializing_if = "Option::is_none")]
825    pub spreadsheet: Option<AiStudioAgentSpreadsheetToolResponse>,
826    #[serde(default, skip_serializing_if = "Option::is_none")]
827    pub long_text_multi: Option<AiStudioAgentLongTextToolResponse>,
828    #[serde(default, skip_serializing_if = "Option::is_none")]
829    pub basic_text_multi: Option<AiStudioAgentBasicTextToolResponse>,
830    #[serde(default, skip_serializing_if = "Option::is_none")]
831    pub basic_image_multi: Option<AiStudioAgentBasicTextToolResponse>,
832}
833
834#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
835pub struct AiStudioAgentBasicGenTool {
836    #[serde(default, skip_serializing_if = "Option::is_none")]
837    pub model: Option<String>,
838    #[serde(default, skip_serializing_if = "Option::is_none")]
839    pub num_tokens_for_completion: Option<i64>,
840    #[serde(default, skip_serializing_if = "Option::is_none")]
841    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
842    #[serde(default, skip_serializing_if = "Option::is_none")]
843    pub system_message: Option<String>,
844    #[serde(default, skip_serializing_if = "Option::is_none")]
845    pub prompt_template: Option<String>,
846    #[serde(default, skip_serializing_if = "Option::is_none")]
847    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
848    #[serde(default, skip_serializing_if = "Option::is_none")]
849    pub content_template: Option<String>,
850    #[serde(default, skip_serializing_if = "Option::is_none")]
851    pub is_custom_instructions_included: Option<bool>,
852}
853
854#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
855pub struct AiStudioAgentBasicGenToolResponse {
856    #[serde(default, skip_serializing_if = "Option::is_none")]
857    pub model: Option<String>,
858    #[serde(default, skip_serializing_if = "Option::is_none")]
859    pub num_tokens_for_completion: Option<i64>,
860    #[serde(default, skip_serializing_if = "Option::is_none")]
861    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
862    #[serde(default, skip_serializing_if = "Option::is_none")]
863    pub system_message: Option<String>,
864    #[serde(default, skip_serializing_if = "Option::is_none")]
865    pub prompt_template: Option<String>,
866    #[serde(default, skip_serializing_if = "Option::is_none")]
867    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
868    #[serde(default, skip_serializing_if = "Option::is_none")]
869    pub content_template: Option<String>,
870    #[serde(default, skip_serializing_if = "Option::is_none")]
871    pub is_custom_instructions_included: Option<bool>,
872    #[serde(default, skip_serializing_if = "Option::is_none")]
873    pub warnings: Option<Vec<String>>,
874}
875
876#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
877pub struct AiStudioAgentBasicTextTool {
878    #[serde(default, skip_serializing_if = "Option::is_none")]
879    pub model: Option<String>,
880    #[serde(default, skip_serializing_if = "Option::is_none")]
881    pub num_tokens_for_completion: Option<i64>,
882    #[serde(default, skip_serializing_if = "Option::is_none")]
883    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
884    #[serde(default, skip_serializing_if = "Option::is_none")]
885    pub system_message: Option<String>,
886    #[serde(default, skip_serializing_if = "Option::is_none")]
887    pub prompt_template: Option<String>,
888    #[serde(default, skip_serializing_if = "Option::is_none")]
889    pub is_custom_instructions_included: Option<bool>,
890}
891
892#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
893pub struct AiStudioAgentBasicTextToolResponse {
894    #[serde(default, skip_serializing_if = "Option::is_none")]
895    pub model: Option<String>,
896    #[serde(default, skip_serializing_if = "Option::is_none")]
897    pub num_tokens_for_completion: Option<i64>,
898    #[serde(default, skip_serializing_if = "Option::is_none")]
899    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
900    #[serde(default, skip_serializing_if = "Option::is_none")]
901    pub system_message: Option<String>,
902    #[serde(default, skip_serializing_if = "Option::is_none")]
903    pub prompt_template: Option<String>,
904    #[serde(default, skip_serializing_if = "Option::is_none")]
905    pub is_custom_instructions_included: Option<bool>,
906    #[serde(default, skip_serializing_if = "Option::is_none")]
907    pub warnings: Option<Vec<String>>,
908}
909
910#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
911pub struct AiStudioAgentExtract {
912    pub r#type: AiAgentExtractType,
913    pub access_state: String,
914    pub description: String,
915    #[serde(
916        default,
917        skip_serializing_if = "Option::is_none",
918        deserialize_with = "double_option"
919    )]
920    pub custom_instructions: Option<Option<String>>,
921    #[serde(default, skip_serializing_if = "Option::is_none")]
922    pub long_text: Option<AiStudioAgentLongTextTool>,
923    #[serde(default, skip_serializing_if = "Option::is_none")]
924    pub basic_text: Option<AiStudioAgentBasicTextTool>,
925    #[serde(default, skip_serializing_if = "Option::is_none")]
926    pub basic_image: Option<AiStudioAgentBasicTextTool>,
927}
928
929#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
930pub struct AiStudioAgentExtractResponse {
931    pub r#type: AiAgentExtractType,
932    pub access_state: String,
933    pub description: String,
934    #[serde(
935        default,
936        skip_serializing_if = "Option::is_none",
937        deserialize_with = "double_option"
938    )]
939    pub custom_instructions: Option<Option<String>>,
940    #[serde(default, skip_serializing_if = "Option::is_none")]
941    pub long_text: Option<AiStudioAgentLongTextToolResponse>,
942    #[serde(default, skip_serializing_if = "Option::is_none")]
943    pub basic_text: Option<AiStudioAgentBasicTextToolResponse>,
944    #[serde(default, skip_serializing_if = "Option::is_none")]
945    pub basic_image: Option<AiStudioAgentBasicTextToolResponse>,
946}
947
948#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
949pub struct AiStudioAgentLongTextTool {
950    #[serde(default, skip_serializing_if = "Option::is_none")]
951    pub model: Option<String>,
952    #[serde(default, skip_serializing_if = "Option::is_none")]
953    pub num_tokens_for_completion: Option<i64>,
954    #[serde(default, skip_serializing_if = "Option::is_none")]
955    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
956    #[serde(default, skip_serializing_if = "Option::is_none")]
957    pub system_message: Option<String>,
958    #[serde(default, skip_serializing_if = "Option::is_none")]
959    pub prompt_template: Option<String>,
960    #[serde(default, skip_serializing_if = "Option::is_none")]
961    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
962    #[serde(default, skip_serializing_if = "Option::is_none")]
963    pub is_custom_instructions_included: Option<bool>,
964}
965
966#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
967pub struct AiStudioAgentLongTextToolResponse {
968    #[serde(default, skip_serializing_if = "Option::is_none")]
969    pub model: Option<String>,
970    #[serde(default, skip_serializing_if = "Option::is_none")]
971    pub num_tokens_for_completion: Option<i64>,
972    #[serde(default, skip_serializing_if = "Option::is_none")]
973    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
974    #[serde(default, skip_serializing_if = "Option::is_none")]
975    pub system_message: Option<String>,
976    #[serde(default, skip_serializing_if = "Option::is_none")]
977    pub prompt_template: Option<String>,
978    #[serde(default, skip_serializing_if = "Option::is_none")]
979    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
980    #[serde(default, skip_serializing_if = "Option::is_none")]
981    pub is_custom_instructions_included: Option<bool>,
982    #[serde(default, skip_serializing_if = "Option::is_none")]
983    pub warnings: Option<Vec<String>>,
984}
985
986pub type AiStudioAgentSpreadsheetTool = AiAgentSpreadsheetTool;
987
988#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
989pub struct AiStudioAgentSpreadsheetToolResponse {
990    #[serde(default, skip_serializing_if = "Option::is_none")]
991    pub model: Option<String>,
992    #[serde(default, skip_serializing_if = "Option::is_none")]
993    pub num_tokens_for_completion: Option<i64>,
994    #[serde(default, skip_serializing_if = "Option::is_none")]
995    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
996    #[serde(default, skip_serializing_if = "Option::is_none")]
997    pub warnings: Option<Vec<String>>,
998}
999
1000#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1001pub struct AiStudioAgentTextGen {
1002    pub r#type: AiAgentTextGenType,
1003    pub access_state: String,
1004    pub description: String,
1005    #[serde(
1006        default,
1007        skip_serializing_if = "Option::is_none",
1008        deserialize_with = "double_option"
1009    )]
1010    pub custom_instructions: Option<Option<String>>,
1011    #[serde(default, skip_serializing_if = "Option::is_none")]
1012    pub suggested_questions: Option<Vec<String>>,
1013    #[serde(default, skip_serializing_if = "Option::is_none")]
1014    pub basic_gen: Option<AiStudioAgentBasicGenTool>,
1015}
1016
1017#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1018pub struct AiStudioAgentTextGenResponse {
1019    pub r#type: AiAgentTextGenType,
1020    pub access_state: String,
1021    pub description: String,
1022    #[serde(
1023        default,
1024        skip_serializing_if = "Option::is_none",
1025        deserialize_with = "double_option"
1026    )]
1027    pub custom_instructions: Option<Option<String>>,
1028    #[serde(default, skip_serializing_if = "Option::is_none")]
1029    pub suggested_questions: Option<Vec<String>>,
1030    #[serde(default, skip_serializing_if = "Option::is_none")]
1031    pub basic_gen: Option<AiStudioAgentBasicGenToolResponse>,
1032}
1033
1034#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1035pub struct AiTaxonomyFileReference {
1036    #[serde(default, skip_serializing_if = "Option::is_none")]
1037    pub r#type: Option<AiCitationType>,
1038    #[serde(default, skip_serializing_if = "Option::is_none")]
1039    pub taxonomy_key: Option<String>,
1040    #[serde(default, skip_serializing_if = "Option::is_none")]
1041    pub id: Option<String>,
1042}
1043
1044#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1045pub struct AiTaxonomyReference {
1046    #[serde(default, skip_serializing_if = "Option::is_none")]
1047    pub r#type: Option<AiTaxonomyReferenceType>,
1048    #[serde(default, skip_serializing_if = "Option::is_none")]
1049    pub taxonomy_key: Option<String>,
1050    #[serde(default, skip_serializing_if = "Option::is_none")]
1051    pub namespace: Option<String>,
1052}
1053
1054#[derive(Clone, Debug, PartialEq)]
1055pub enum AiTaxonomySource {
1056    Taxonomy(AiTaxonomyReference),
1057    File(AiTaxonomyFileReference),
1058    /// An unrecognized discriminator, retained verbatim (open union).
1059    Unknown(serde_json::Value),
1060}
1061
1062impl Default for AiTaxonomySource {
1063    fn default() -> Self {
1064        Self::Unknown(Default::default())
1065    }
1066}
1067
1068impl serde::Serialize for AiTaxonomySource {
1069    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1070        match self {
1071            Self::Taxonomy(inner) => inner.serialize(serializer),
1072            Self::File(inner) => inner.serialize(serializer),
1073            Self::Unknown(inner) => inner.serialize(serializer),
1074        }
1075    }
1076}
1077
1078impl<'de> serde::Deserialize<'de> for AiTaxonomySource {
1079    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1080        let value = serde_json::Value::deserialize(deserializer)?;
1081        let tag = value
1082            .get("type")
1083            .and_then(serde_json::Value::as_str)
1084            .map(str::to_owned);
1085        match tag.as_deref() {
1086            Some("taxonomy") => Ok(Self::Taxonomy(
1087                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1088            )),
1089            Some("file") => Ok(Self::File(
1090                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1091            )),
1092            _ => Ok(Self::Unknown(value)),
1093        }
1094    }
1095}
1096
1097#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1098pub struct AiTextGen {
1099    pub prompt: String,
1100    pub items: Vec<AiTextGenItems>,
1101    #[serde(default, skip_serializing_if = "Option::is_none")]
1102    pub dialogue_history: Option<Vec<AiDialogueHistory>>,
1103    #[serde(default, skip_serializing_if = "Option::is_none")]
1104    pub ai_agent: Option<AiTextGenAgent>,
1105}
1106
1107#[derive(Clone, Debug, PartialEq)]
1108pub enum AiTextGenAgent {
1109    AiAgentId(AiAgentReference),
1110    AiAgentTextGen(AiAgentTextGen),
1111    /// An unrecognized discriminator, retained verbatim (open union).
1112    Unknown(serde_json::Value),
1113}
1114
1115impl Default for AiTextGenAgent {
1116    fn default() -> Self {
1117        Self::Unknown(Default::default())
1118    }
1119}
1120
1121impl serde::Serialize for AiTextGenAgent {
1122    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1123        match self {
1124            Self::AiAgentId(inner) => inner.serialize(serializer),
1125            Self::AiAgentTextGen(inner) => inner.serialize(serializer),
1126            Self::Unknown(inner) => inner.serialize(serializer),
1127        }
1128    }
1129}
1130
1131impl<'de> serde::Deserialize<'de> for AiTextGenAgent {
1132    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1133        let value = serde_json::Value::deserialize(deserializer)?;
1134        let tag = value
1135            .get("type")
1136            .and_then(serde_json::Value::as_str)
1137            .map(str::to_owned);
1138        match tag.as_deref() {
1139            Some("ai_agent_id") => Ok(Self::AiAgentId(
1140                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1141            )),
1142            Some("ai_agent_text_gen") => Ok(Self::AiAgentTextGen(
1143                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1144            )),
1145            _ => Ok(Self::Unknown(value)),
1146        }
1147    }
1148}
1149
1150#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1151pub struct AppItem {
1152    pub id: String,
1153    pub r#type: AppItemType,
1154    pub application_type: String,
1155}
1156
1157#[derive(Clone, Debug, PartialEq)]
1158pub enum AppItemAssociatedItem {
1159    File(FileBase),
1160    Folder(FolderBase),
1161    WebLink(WebLinkBase),
1162    /// An unrecognized discriminator, retained verbatim (open union).
1163    Unknown(serde_json::Value),
1164}
1165
1166impl Default for AppItemAssociatedItem {
1167    fn default() -> Self {
1168        Self::Unknown(Default::default())
1169    }
1170}
1171
1172impl serde::Serialize for AppItemAssociatedItem {
1173    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1174        match self {
1175            Self::File(inner) => inner.serialize(serializer),
1176            Self::Folder(inner) => inner.serialize(serializer),
1177            Self::WebLink(inner) => inner.serialize(serializer),
1178            Self::Unknown(inner) => inner.serialize(serializer),
1179        }
1180    }
1181}
1182
1183impl<'de> serde::Deserialize<'de> for AppItemAssociatedItem {
1184    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1185        let value = serde_json::Value::deserialize(deserializer)?;
1186        let tag = value
1187            .get("type")
1188            .and_then(serde_json::Value::as_str)
1189            .map(str::to_owned);
1190        match tag.as_deref() {
1191            Some("file") => Ok(Self::File(
1192                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1193            )),
1194            Some("folder") => Ok(Self::Folder(
1195                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1196            )),
1197            Some("web_link") => Ok(Self::WebLink(
1198                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1199            )),
1200            _ => Ok(Self::Unknown(value)),
1201        }
1202    }
1203}
1204
1205#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1206pub struct AppItemAssociation {
1207    pub id: String,
1208    pub r#type: AppItemAssociationType,
1209    pub app_item: AppItem,
1210    pub item: AppItemAssociatedItem,
1211}
1212
1213#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1214pub struct AppItemAssociations {
1215    #[serde(default, skip_serializing_if = "Option::is_none")]
1216    pub limit: Option<i64>,
1217    #[serde(
1218        default,
1219        skip_serializing_if = "Option::is_none",
1220        deserialize_with = "double_option"
1221    )]
1222    pub next_marker: Option<Option<String>>,
1223    #[serde(
1224        default,
1225        skip_serializing_if = "Option::is_none",
1226        deserialize_with = "double_option"
1227    )]
1228    pub prev_marker: Option<Option<String>>,
1229    #[serde(default, skip_serializing_if = "Option::is_none")]
1230    pub entries: Option<Vec<AppItemAssociation>>,
1231}
1232
1233#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1234pub struct AppItemEventSource {
1235    pub id: String,
1236    pub r#type: AppItemType,
1237    pub app_item_type: String,
1238    #[serde(default, skip_serializing_if = "Option::is_none")]
1239    pub user: Option<UserMini>,
1240    #[serde(default, skip_serializing_if = "Option::is_none")]
1241    pub group: Option<GroupMini>,
1242}
1243
1244#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1245pub struct Classification {
1246    #[serde(
1247        rename = "Box__Security__Classification__Key",
1248        default,
1249        skip_serializing_if = "Option::is_none"
1250    )]
1251    pub box_security_classification_key: Option<String>,
1252    #[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
1253    pub parent: Option<String>,
1254    #[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
1255    pub template: Option<ClassificationTemplate2>,
1256    #[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
1257    pub scope: Option<String>,
1258    #[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
1259    pub version: Option<i64>,
1260    #[serde(rename = "$type", default, skip_serializing_if = "Option::is_none")]
1261    pub r#type: Option<String>,
1262    #[serde(
1263        rename = "$typeVersion",
1264        default,
1265        skip_serializing_if = "Option::is_none"
1266    )]
1267    pub type_version: Option<f64>,
1268    #[serde(rename = "$canEdit", default, skip_serializing_if = "Option::is_none")]
1269    pub can_edit: Option<bool>,
1270}
1271
1272#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1273pub struct ClassificationTemplate {
1274    pub id: String,
1275    pub r#type: MetadataTemplateType,
1276    pub scope: String,
1277    #[serde(rename = "templateKey")]
1278    pub template_key: ClassificationTemplate2,
1279    #[serde(rename = "displayName")]
1280    pub display_name: ClassificationTemplateDisplayName,
1281    #[serde(default, skip_serializing_if = "Option::is_none")]
1282    pub hidden: Option<bool>,
1283    #[serde(
1284        rename = "copyInstanceOnItemCopy",
1285        default,
1286        skip_serializing_if = "Option::is_none"
1287    )]
1288    pub copy_instance_on_item_copy: Option<bool>,
1289    pub fields: Vec<ClassificationTemplateFields>,
1290}
1291
1292#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1293pub struct ClientError {
1294    #[serde(default, skip_serializing_if = "Option::is_none")]
1295    pub r#type: Option<ClientErrorType>,
1296    #[serde(default, skip_serializing_if = "Option::is_none")]
1297    pub status: Option<i64>,
1298    #[serde(default, skip_serializing_if = "Option::is_none")]
1299    pub code: Option<ClientErrorCode>,
1300    #[serde(default, skip_serializing_if = "Option::is_none")]
1301    pub message: Option<String>,
1302    #[serde(
1303        default,
1304        skip_serializing_if = "Option::is_none",
1305        deserialize_with = "double_option"
1306    )]
1307    pub context_info: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
1308    #[serde(default, skip_serializing_if = "Option::is_none")]
1309    pub help_url: Option<String>,
1310    #[serde(default, skip_serializing_if = "Option::is_none")]
1311    pub request_id: Option<String>,
1312}
1313
1314#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1315pub struct Collaboration {
1316    pub id: String,
1317    pub r#type: CollaborationType,
1318    #[serde(
1319        default,
1320        skip_serializing_if = "Option::is_none",
1321        deserialize_with = "double_option"
1322    )]
1323    pub item: Option<Option<CollaborationItem>>,
1324    #[serde(
1325        default,
1326        skip_serializing_if = "Option::is_none",
1327        deserialize_with = "double_option"
1328    )]
1329    pub app_item: Option<Option<AppItem>>,
1330    #[serde(default, skip_serializing_if = "Option::is_none")]
1331    pub accessible_by: Option<CollaborationAccessGrantee>,
1332    #[serde(
1333        default,
1334        skip_serializing_if = "Option::is_none",
1335        deserialize_with = "double_option"
1336    )]
1337    pub invite_email: Option<Option<String>>,
1338    #[serde(default, skip_serializing_if = "Option::is_none")]
1339    pub role: Option<CollaborationRole>,
1340    #[serde(
1341        default,
1342        skip_serializing_if = "Option::is_none",
1343        deserialize_with = "double_option"
1344    )]
1345    pub expires_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1346    #[serde(default, skip_serializing_if = "Option::is_none")]
1347    pub is_access_only: Option<bool>,
1348    #[serde(default, skip_serializing_if = "Option::is_none")]
1349    pub status: Option<CollaborationStatus>,
1350    #[serde(default, skip_serializing_if = "Option::is_none")]
1351    pub acknowledged_at: Option<chrono::DateTime<chrono::Utc>>,
1352    #[serde(default, skip_serializing_if = "Option::is_none")]
1353    pub created_by: Option<UserCollaborations>,
1354    #[serde(default, skip_serializing_if = "Option::is_none")]
1355    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1356    #[serde(default, skip_serializing_if = "Option::is_none")]
1357    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
1358    #[serde(default, skip_serializing_if = "Option::is_none")]
1359    pub acceptance_requirements_status: Option<CollaborationAcceptanceRequirementsStatus>,
1360}
1361
1362#[derive(Clone, Debug, PartialEq)]
1363pub enum CollaborationAccessGrantee {
1364    User(UserCollaborations),
1365    Group(GroupMini),
1366    /// An unrecognized discriminator, retained verbatim (open union).
1367    Unknown(serde_json::Value),
1368}
1369
1370impl Default for CollaborationAccessGrantee {
1371    fn default() -> Self {
1372        Self::Unknown(Default::default())
1373    }
1374}
1375
1376impl serde::Serialize for CollaborationAccessGrantee {
1377    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1378        match self {
1379            Self::User(inner) => inner.serialize(serializer),
1380            Self::Group(inner) => inner.serialize(serializer),
1381            Self::Unknown(inner) => inner.serialize(serializer),
1382        }
1383    }
1384}
1385
1386impl<'de> serde::Deserialize<'de> for CollaborationAccessGrantee {
1387    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1388        let value = serde_json::Value::deserialize(deserializer)?;
1389        let tag = value
1390            .get("type")
1391            .and_then(serde_json::Value::as_str)
1392            .map(str::to_owned);
1393        match tag.as_deref() {
1394            Some("user") => Ok(Self::User(
1395                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1396            )),
1397            Some("group") => Ok(Self::Group(
1398                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1399            )),
1400            _ => Ok(Self::Unknown(value)),
1401        }
1402    }
1403}
1404
1405#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1406pub struct CollaborationAllowlistEntries {
1407    #[serde(default, skip_serializing_if = "Option::is_none")]
1408    pub limit: Option<i64>,
1409    #[serde(
1410        default,
1411        skip_serializing_if = "Option::is_none",
1412        deserialize_with = "double_option"
1413    )]
1414    pub next_marker: Option<Option<String>>,
1415    #[serde(
1416        default,
1417        skip_serializing_if = "Option::is_none",
1418        deserialize_with = "double_option"
1419    )]
1420    pub prev_marker: Option<Option<String>>,
1421    #[serde(default, skip_serializing_if = "Option::is_none")]
1422    pub entries: Option<Vec<CollaborationAllowlistEntry>>,
1423}
1424
1425#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1426pub struct CollaborationAllowlistEntry {
1427    #[serde(default, skip_serializing_if = "Option::is_none")]
1428    pub id: Option<String>,
1429    #[serde(default, skip_serializing_if = "Option::is_none")]
1430    pub r#type: Option<CollaborationAllowlistEntryType>,
1431    #[serde(default, skip_serializing_if = "Option::is_none")]
1432    pub domain: Option<String>,
1433    #[serde(default, skip_serializing_if = "Option::is_none")]
1434    pub direction: Option<CollaborationAllowlistEntryDirection>,
1435    #[serde(default, skip_serializing_if = "Option::is_none")]
1436    pub enterprise: Option<CollaborationAllowlistEntryEnterprise>,
1437    #[serde(default, skip_serializing_if = "Option::is_none")]
1438    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1439}
1440
1441#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1442pub struct CollaborationAllowlistExemptTarget {
1443    #[serde(default, skip_serializing_if = "Option::is_none")]
1444    pub id: Option<String>,
1445    #[serde(default, skip_serializing_if = "Option::is_none")]
1446    pub r#type: Option<CollaborationAllowlistExemptTargetType>,
1447    #[serde(default, skip_serializing_if = "Option::is_none")]
1448    pub enterprise: Option<CollaborationAllowlistEntryEnterprise>,
1449    #[serde(default, skip_serializing_if = "Option::is_none")]
1450    pub user: Option<UserMini>,
1451    #[serde(default, skip_serializing_if = "Option::is_none")]
1452    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1453    #[serde(default, skip_serializing_if = "Option::is_none")]
1454    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
1455}
1456
1457#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1458pub struct CollaborationAllowlistExemptTargets {
1459    #[serde(default, skip_serializing_if = "Option::is_none")]
1460    pub limit: Option<i64>,
1461    #[serde(
1462        default,
1463        skip_serializing_if = "Option::is_none",
1464        deserialize_with = "double_option"
1465    )]
1466    pub next_marker: Option<Option<String>>,
1467    #[serde(
1468        default,
1469        skip_serializing_if = "Option::is_none",
1470        deserialize_with = "double_option"
1471    )]
1472    pub prev_marker: Option<Option<String>>,
1473    #[serde(default, skip_serializing_if = "Option::is_none")]
1474    pub entries: Option<Vec<CollaborationAllowlistExemptTarget>>,
1475}
1476
1477#[derive(Clone, Debug, PartialEq)]
1478pub enum CollaborationItem {
1479    File(File),
1480    Folder(Folder),
1481    WebLink(WebLink),
1482    /// An unrecognized discriminator, retained verbatim (open union).
1483    Unknown(serde_json::Value),
1484}
1485
1486impl Default for CollaborationItem {
1487    fn default() -> Self {
1488        Self::Unknown(Default::default())
1489    }
1490}
1491
1492impl serde::Serialize for CollaborationItem {
1493    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1494        match self {
1495            Self::File(inner) => inner.serialize(serializer),
1496            Self::Folder(inner) => inner.serialize(serializer),
1497            Self::WebLink(inner) => inner.serialize(serializer),
1498            Self::Unknown(inner) => inner.serialize(serializer),
1499        }
1500    }
1501}
1502
1503impl<'de> serde::Deserialize<'de> for CollaborationItem {
1504    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1505        let value = serde_json::Value::deserialize(deserializer)?;
1506        let tag = value
1507            .get("type")
1508            .and_then(serde_json::Value::as_str)
1509            .map(str::to_owned);
1510        match tag.as_deref() {
1511            Some("file") => Ok(Self::File(
1512                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1513            )),
1514            Some("folder") => Ok(Self::Folder(
1515                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1516            )),
1517            Some("web_link") => Ok(Self::WebLink(
1518                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
1519            )),
1520            _ => Ok(Self::Unknown(value)),
1521        }
1522    }
1523}
1524
1525#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1526pub struct Collaborations {
1527    #[serde(default, skip_serializing_if = "Option::is_none")]
1528    pub limit: Option<i64>,
1529    #[serde(
1530        default,
1531        skip_serializing_if = "Option::is_none",
1532        deserialize_with = "double_option"
1533    )]
1534    pub next_marker: Option<Option<String>>,
1535    #[serde(
1536        default,
1537        skip_serializing_if = "Option::is_none",
1538        deserialize_with = "double_option"
1539    )]
1540    pub prev_marker: Option<Option<String>>,
1541    #[serde(default, skip_serializing_if = "Option::is_none")]
1542    pub entries: Option<Vec<Collaboration>>,
1543}
1544
1545#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1546pub struct CollaborationsOffsetPaginated {
1547    #[serde(default, skip_serializing_if = "Option::is_none")]
1548    pub total_count: Option<i64>,
1549    #[serde(default, skip_serializing_if = "Option::is_none")]
1550    pub limit: Option<i64>,
1551    #[serde(default, skip_serializing_if = "Option::is_none")]
1552    pub offset: Option<i64>,
1553    #[serde(default, skip_serializing_if = "Option::is_none")]
1554    pub entries: Option<Vec<Collaboration>>,
1555}
1556
1557#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1558pub struct CollaboratorVariable {
1559    pub r#type: CollaboratorVariableType,
1560    pub variable_type: CollaboratorVariableVariableType,
1561    pub variable_value: Vec<CollaboratorVariableVariableValue>,
1562}
1563
1564#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1565pub struct Collection {
1566    #[serde(default, skip_serializing_if = "Option::is_none")]
1567    pub id: Option<String>,
1568    #[serde(default, skip_serializing_if = "Option::is_none")]
1569    pub r#type: Option<CollectionType>,
1570    #[serde(default, skip_serializing_if = "Option::is_none")]
1571    pub name: Option<CollectionName>,
1572    #[serde(default, skip_serializing_if = "Option::is_none")]
1573    pub collection_type: Option<CollectionCollectionType>,
1574}
1575
1576#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1577pub struct Collections {
1578    #[serde(default, skip_serializing_if = "Option::is_none")]
1579    pub total_count: Option<i64>,
1580    #[serde(default, skip_serializing_if = "Option::is_none")]
1581    pub limit: Option<i64>,
1582    #[serde(default, skip_serializing_if = "Option::is_none")]
1583    pub offset: Option<i64>,
1584    #[serde(default, skip_serializing_if = "Option::is_none")]
1585    pub order: Option<Vec<CollectionsOrder>>,
1586    #[serde(default, skip_serializing_if = "Option::is_none")]
1587    pub entries: Option<Vec<Collection>>,
1588}
1589
1590#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1591pub struct Comment {
1592    #[serde(default, skip_serializing_if = "Option::is_none")]
1593    pub id: Option<String>,
1594    #[serde(default, skip_serializing_if = "Option::is_none")]
1595    pub r#type: Option<CommentType>,
1596    #[serde(default, skip_serializing_if = "Option::is_none")]
1597    pub is_reply_comment: Option<bool>,
1598    #[serde(default, skip_serializing_if = "Option::is_none")]
1599    pub message: Option<String>,
1600    #[serde(default, skip_serializing_if = "Option::is_none")]
1601    pub created_by: Option<UserMini>,
1602    #[serde(default, skip_serializing_if = "Option::is_none")]
1603    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1604    #[serde(default, skip_serializing_if = "Option::is_none")]
1605    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
1606    #[serde(default, skip_serializing_if = "Option::is_none")]
1607    pub item: Option<CommentItem>,
1608}
1609
1610#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1611pub struct CommentBase {
1612    #[serde(default, skip_serializing_if = "Option::is_none")]
1613    pub id: Option<String>,
1614    #[serde(default, skip_serializing_if = "Option::is_none")]
1615    pub r#type: Option<CommentType>,
1616}
1617
1618#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1619pub struct CommentFull {
1620    #[serde(default, skip_serializing_if = "Option::is_none")]
1621    pub id: Option<String>,
1622    #[serde(default, skip_serializing_if = "Option::is_none")]
1623    pub r#type: Option<CommentType>,
1624    #[serde(default, skip_serializing_if = "Option::is_none")]
1625    pub is_reply_comment: Option<bool>,
1626    #[serde(default, skip_serializing_if = "Option::is_none")]
1627    pub message: Option<String>,
1628    #[serde(default, skip_serializing_if = "Option::is_none")]
1629    pub created_by: Option<UserMini>,
1630    #[serde(default, skip_serializing_if = "Option::is_none")]
1631    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1632    #[serde(default, skip_serializing_if = "Option::is_none")]
1633    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
1634    #[serde(default, skip_serializing_if = "Option::is_none")]
1635    pub item: Option<CommentItem>,
1636    #[serde(default, skip_serializing_if = "Option::is_none")]
1637    pub tagged_message: Option<String>,
1638}
1639
1640#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1641pub struct Comments {
1642    #[serde(default, skip_serializing_if = "Option::is_none")]
1643    pub total_count: Option<i64>,
1644    #[serde(default, skip_serializing_if = "Option::is_none")]
1645    pub limit: Option<i64>,
1646    #[serde(default, skip_serializing_if = "Option::is_none")]
1647    pub offset: Option<i64>,
1648    #[serde(default, skip_serializing_if = "Option::is_none")]
1649    pub order: Option<Vec<CollectionsOrder>>,
1650    #[serde(default, skip_serializing_if = "Option::is_none")]
1651    pub entries: Option<Vec<CommentFull>>,
1652}
1653
1654#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1655pub struct CompletionRuleVariable {
1656    pub r#type: CollaboratorVariableType,
1657    pub variable_type: CompletionRuleVariableVariableType,
1658    pub variable_value: CompletionRuleVariableVariableValue,
1659}
1660
1661#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1662pub struct ConflictError {
1663    #[serde(default, skip_serializing_if = "Option::is_none")]
1664    pub r#type: Option<ClientErrorType>,
1665    #[serde(default, skip_serializing_if = "Option::is_none")]
1666    pub status: Option<i64>,
1667    #[serde(default, skip_serializing_if = "Option::is_none")]
1668    pub code: Option<ClientErrorCode>,
1669    #[serde(default, skip_serializing_if = "Option::is_none")]
1670    pub message: Option<String>,
1671    #[serde(default, skip_serializing_if = "Option::is_none")]
1672    pub context_info: Option<ConflictErrorContextInfo>,
1673    #[serde(default, skip_serializing_if = "Option::is_none")]
1674    pub help_url: Option<String>,
1675    #[serde(default, skip_serializing_if = "Option::is_none")]
1676    pub request_id: Option<String>,
1677}
1678
1679#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1680pub struct CreateAiAgent {
1681    pub r#type: AiSingleAgentResponseType,
1682    pub name: String,
1683    pub access_state: String,
1684    #[serde(default, skip_serializing_if = "Option::is_none")]
1685    pub icon_reference: Option<String>,
1686    #[serde(default, skip_serializing_if = "Option::is_none")]
1687    pub allowed_entities: Option<Vec<AiAgentAllowedEntity>>,
1688    #[serde(default, skip_serializing_if = "Option::is_none")]
1689    pub ask: Option<AiStudioAgentAsk>,
1690    #[serde(default, skip_serializing_if = "Option::is_none")]
1691    pub text_gen: Option<AiStudioAgentTextGen>,
1692    #[serde(default, skip_serializing_if = "Option::is_none")]
1693    pub extract: Option<AiStudioAgentExtract>,
1694}
1695
1696#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1697pub struct DevicePinner {
1698    #[serde(default, skip_serializing_if = "Option::is_none")]
1699    pub id: Option<String>,
1700    #[serde(default, skip_serializing_if = "Option::is_none")]
1701    pub r#type: Option<DevicePinnerType>,
1702    #[serde(default, skip_serializing_if = "Option::is_none")]
1703    pub owned_by: Option<UserMini>,
1704    #[serde(default, skip_serializing_if = "Option::is_none")]
1705    pub product_name: Option<String>,
1706}
1707
1708#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1709pub struct DevicePinners {
1710    #[serde(default, skip_serializing_if = "Option::is_none")]
1711    pub entries: Option<Vec<DevicePinner>>,
1712    #[serde(default, skip_serializing_if = "Option::is_none")]
1713    pub limit: Option<i64>,
1714    #[serde(default, skip_serializing_if = "Option::is_none")]
1715    pub next_marker: Option<i64>,
1716    #[serde(default, skip_serializing_if = "Option::is_none")]
1717    pub order: Option<Vec<DevicePinnersOrder>>,
1718}
1719
1720#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1721pub struct EmailAlias {
1722    #[serde(default, skip_serializing_if = "Option::is_none")]
1723    pub id: Option<String>,
1724    #[serde(default, skip_serializing_if = "Option::is_none")]
1725    pub r#type: Option<EmailAliasType>,
1726    #[serde(default, skip_serializing_if = "Option::is_none")]
1727    pub email: Option<String>,
1728    #[serde(default, skip_serializing_if = "Option::is_none")]
1729    pub is_confirmed: Option<bool>,
1730}
1731
1732#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1733pub struct EmailAliases {
1734    #[serde(default, skip_serializing_if = "Option::is_none")]
1735    pub total_count: Option<i64>,
1736    #[serde(default, skip_serializing_if = "Option::is_none")]
1737    pub entries: Option<Vec<EmailAlias>>,
1738}
1739
1740#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1741pub struct EnterpriseBase {
1742    #[serde(default, skip_serializing_if = "Option::is_none")]
1743    pub id: Option<String>,
1744    #[serde(default, skip_serializing_if = "Option::is_none")]
1745    pub r#type: Option<EnterpriseType>,
1746}
1747
1748#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1749pub struct Event {
1750    #[serde(default, skip_serializing_if = "Option::is_none")]
1751    pub r#type: Option<String>,
1752    #[serde(default, skip_serializing_if = "Option::is_none")]
1753    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1754    #[serde(default, skip_serializing_if = "Option::is_none")]
1755    pub recorded_at: Option<chrono::DateTime<chrono::Utc>>,
1756    #[serde(default, skip_serializing_if = "Option::is_none")]
1757    pub event_id: Option<String>,
1758    #[serde(default, skip_serializing_if = "Option::is_none")]
1759    pub created_by: Option<UserMini>,
1760    #[serde(default, skip_serializing_if = "Option::is_none")]
1761    pub event_type: Option<EventEventType>,
1762    #[serde(default, skip_serializing_if = "Option::is_none")]
1763    pub session_id: Option<String>,
1764    #[serde(default, skip_serializing_if = "Option::is_none")]
1765    pub source: Option<EventSourceResource>,
1766    #[serde(default, skip_serializing_if = "Option::is_none")]
1767    pub additional_details: Option<std::collections::HashMap<String, serde_json::Value>>,
1768}
1769
1770#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1771pub struct Events {
1772    #[serde(default, skip_serializing_if = "Option::is_none")]
1773    pub chunk_size: Option<i64>,
1774    #[serde(default, skip_serializing_if = "Option::is_none")]
1775    pub next_stream_position: Option<EventsNextStreamPosition>,
1776    #[serde(default, skip_serializing_if = "Option::is_none")]
1777    pub entries: Option<Vec<Event>>,
1778}
1779
1780#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1781pub struct EventSource {
1782    pub item_type: EventSourceItemType,
1783    pub item_id: String,
1784    pub item_name: String,
1785    #[serde(default, skip_serializing_if = "Option::is_none")]
1786    pub classification: Option<EventSourceClassification>,
1787    #[serde(
1788        default,
1789        skip_serializing_if = "Option::is_none",
1790        deserialize_with = "double_option"
1791    )]
1792    pub parent: Option<Option<FolderMini>>,
1793    #[serde(default, skip_serializing_if = "Option::is_none")]
1794    pub owned_by: Option<UserMini>,
1795}
1796
1797#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1798#[serde(transparent)]
1799pub struct EventSourceResource(pub serde_json::Value);
1800
1801#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1802pub struct File {
1803    pub id: String,
1804    #[serde(
1805        default,
1806        skip_serializing_if = "Option::is_none",
1807        deserialize_with = "double_option"
1808    )]
1809    pub etag: Option<Option<String>>,
1810    pub r#type: AiCitationType,
1811    #[serde(default, skip_serializing_if = "Option::is_none")]
1812    pub sequence_id: Option<String>,
1813    #[serde(default, skip_serializing_if = "Option::is_none")]
1814    pub name: Option<String>,
1815    #[serde(default, skip_serializing_if = "Option::is_none")]
1816    pub sha1: Option<String>,
1817    #[serde(default, skip_serializing_if = "Option::is_none")]
1818    pub file_version: Option<FileVersionMini>,
1819    #[serde(default, skip_serializing_if = "Option::is_none")]
1820    pub description: Option<String>,
1821    #[serde(default, skip_serializing_if = "Option::is_none")]
1822    pub size: Option<i64>,
1823    #[serde(default, skip_serializing_if = "Option::is_none")]
1824    pub path_collection: Option<FilePathCollection>,
1825    #[serde(default, skip_serializing_if = "Option::is_none")]
1826    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1827    #[serde(default, skip_serializing_if = "Option::is_none")]
1828    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
1829    #[serde(
1830        default,
1831        skip_serializing_if = "Option::is_none",
1832        deserialize_with = "double_option"
1833    )]
1834    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1835    #[serde(
1836        default,
1837        skip_serializing_if = "Option::is_none",
1838        deserialize_with = "double_option"
1839    )]
1840    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1841    #[serde(
1842        default,
1843        skip_serializing_if = "Option::is_none",
1844        deserialize_with = "double_option"
1845    )]
1846    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1847    #[serde(
1848        default,
1849        skip_serializing_if = "Option::is_none",
1850        deserialize_with = "double_option"
1851    )]
1852    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1853    #[serde(default, skip_serializing_if = "Option::is_none")]
1854    pub created_by: Option<UserMini>,
1855    #[serde(default, skip_serializing_if = "Option::is_none")]
1856    pub modified_by: Option<UserMini>,
1857    #[serde(default, skip_serializing_if = "Option::is_none")]
1858    pub owned_by: Option<UserMini>,
1859    #[serde(
1860        default,
1861        skip_serializing_if = "Option::is_none",
1862        deserialize_with = "double_option"
1863    )]
1864    pub shared_link: Option<Option<FileSharedLink>>,
1865    #[serde(
1866        default,
1867        skip_serializing_if = "Option::is_none",
1868        deserialize_with = "double_option"
1869    )]
1870    pub parent: Option<Option<FolderMini>>,
1871    #[serde(default, skip_serializing_if = "Option::is_none")]
1872    pub item_status: Option<FileItemStatus>,
1873}
1874
1875#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1876pub struct FileBase {
1877    pub id: String,
1878    #[serde(
1879        default,
1880        skip_serializing_if = "Option::is_none",
1881        deserialize_with = "double_option"
1882    )]
1883    pub etag: Option<Option<String>>,
1884    pub r#type: AiCitationType,
1885}
1886
1887#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
1888pub struct FileFull {
1889    pub id: String,
1890    #[serde(
1891        default,
1892        skip_serializing_if = "Option::is_none",
1893        deserialize_with = "double_option"
1894    )]
1895    pub etag: Option<Option<String>>,
1896    pub r#type: AiCitationType,
1897    #[serde(default, skip_serializing_if = "Option::is_none")]
1898    pub sequence_id: Option<String>,
1899    #[serde(default, skip_serializing_if = "Option::is_none")]
1900    pub name: Option<String>,
1901    #[serde(default, skip_serializing_if = "Option::is_none")]
1902    pub sha1: Option<String>,
1903    #[serde(default, skip_serializing_if = "Option::is_none")]
1904    pub file_version: Option<FileVersionMini>,
1905    #[serde(default, skip_serializing_if = "Option::is_none")]
1906    pub description: Option<String>,
1907    #[serde(default, skip_serializing_if = "Option::is_none")]
1908    pub size: Option<i64>,
1909    #[serde(default, skip_serializing_if = "Option::is_none")]
1910    pub path_collection: Option<FilePathCollection>,
1911    #[serde(default, skip_serializing_if = "Option::is_none")]
1912    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1913    #[serde(default, skip_serializing_if = "Option::is_none")]
1914    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
1915    #[serde(
1916        default,
1917        skip_serializing_if = "Option::is_none",
1918        deserialize_with = "double_option"
1919    )]
1920    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1921    #[serde(
1922        default,
1923        skip_serializing_if = "Option::is_none",
1924        deserialize_with = "double_option"
1925    )]
1926    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1927    #[serde(
1928        default,
1929        skip_serializing_if = "Option::is_none",
1930        deserialize_with = "double_option"
1931    )]
1932    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1933    #[serde(
1934        default,
1935        skip_serializing_if = "Option::is_none",
1936        deserialize_with = "double_option"
1937    )]
1938    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1939    #[serde(default, skip_serializing_if = "Option::is_none")]
1940    pub created_by: Option<UserMini>,
1941    #[serde(default, skip_serializing_if = "Option::is_none")]
1942    pub modified_by: Option<UserMini>,
1943    #[serde(default, skip_serializing_if = "Option::is_none")]
1944    pub owned_by: Option<UserMini>,
1945    #[serde(
1946        default,
1947        skip_serializing_if = "Option::is_none",
1948        deserialize_with = "double_option"
1949    )]
1950    pub shared_link: Option<Option<FileSharedLink>>,
1951    #[serde(
1952        default,
1953        skip_serializing_if = "Option::is_none",
1954        deserialize_with = "double_option"
1955    )]
1956    pub parent: Option<Option<FolderMini>>,
1957    #[serde(default, skip_serializing_if = "Option::is_none")]
1958    pub item_status: Option<FileItemStatus>,
1959    #[serde(default, skip_serializing_if = "Option::is_none")]
1960    pub version_number: Option<String>,
1961    #[serde(default, skip_serializing_if = "Option::is_none")]
1962    pub comment_count: Option<i64>,
1963    #[serde(default, skip_serializing_if = "Option::is_none")]
1964    pub permissions: Option<FileFullPermissions>,
1965    #[serde(default, skip_serializing_if = "Option::is_none")]
1966    pub tags: Option<Vec<String>>,
1967    #[serde(
1968        default,
1969        skip_serializing_if = "Option::is_none",
1970        deserialize_with = "double_option"
1971    )]
1972    pub lock: Option<Option<FileFullLock>>,
1973    #[serde(default, skip_serializing_if = "Option::is_none")]
1974    pub extension: Option<String>,
1975    #[serde(default, skip_serializing_if = "Option::is_none")]
1976    pub is_package: Option<bool>,
1977    #[serde(default, skip_serializing_if = "Option::is_none")]
1978    pub expiring_embed_link: Option<FileFullExpiringEmbedLink>,
1979    #[serde(default, skip_serializing_if = "Option::is_none")]
1980    pub watermark_info: Option<FileFullWatermarkInfo>,
1981    #[serde(default, skip_serializing_if = "Option::is_none")]
1982    pub is_accessible_via_shared_link: Option<bool>,
1983    #[serde(default, skip_serializing_if = "Option::is_none")]
1984    pub allowed_invitee_roles: Option<Vec<FileFullAllowedInviteeRoles>>,
1985    #[serde(default, skip_serializing_if = "Option::is_none")]
1986    pub is_externally_owned: Option<bool>,
1987    #[serde(default, skip_serializing_if = "Option::is_none")]
1988    pub has_collaborations: Option<bool>,
1989    #[serde(default, skip_serializing_if = "Option::is_none")]
1990    pub metadata:
1991        Option<std::collections::HashMap<String, std::collections::HashMap<String, MetadataFull>>>,
1992    #[serde(
1993        default,
1994        skip_serializing_if = "Option::is_none",
1995        deserialize_with = "double_option"
1996    )]
1997    pub expires_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
1998    #[serde(default, skip_serializing_if = "Option::is_none")]
1999    pub representations: Option<FileFullRepresentations>,
2000    #[serde(
2001        default,
2002        skip_serializing_if = "Option::is_none",
2003        deserialize_with = "double_option"
2004    )]
2005    pub classification: Option<Option<FileFullClassification>>,
2006    #[serde(default, skip_serializing_if = "Option::is_none")]
2007    pub uploader_display_name: Option<String>,
2008    #[serde(
2009        default,
2010        skip_serializing_if = "Option::is_none",
2011        deserialize_with = "double_option"
2012    )]
2013    pub disposition_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2014    #[serde(
2015        default,
2016        skip_serializing_if = "Option::is_none",
2017        deserialize_with = "double_option"
2018    )]
2019    pub shared_link_permission_options: Option<Option<Vec<FileFullSharedLinkPermissionOptions>>>,
2020    #[serde(default, skip_serializing_if = "Option::is_none")]
2021    pub is_associated_with_app_item: Option<bool>,
2022    #[serde(default, skip_serializing_if = "Option::is_none")]
2023    pub collections: Option<Vec<Collection>>,
2024    #[serde(default, skip_serializing_if = "Option::is_none")]
2025    pub is_download_available: Option<bool>,
2026    #[serde(default, skip_serializing_if = "Option::is_none")]
2027    pub download_url: Option<String>,
2028    #[serde(default, skip_serializing_if = "Option::is_none")]
2029    pub authenticated_download_url: Option<String>,
2030    #[serde(default, skip_serializing_if = "Option::is_none")]
2031    pub allowed_shared_link_access_levels: Option<Vec<SharedLinkAccess>>,
2032}
2033
2034#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2035pub struct FileMini {
2036    pub id: String,
2037    #[serde(
2038        default,
2039        skip_serializing_if = "Option::is_none",
2040        deserialize_with = "double_option"
2041    )]
2042    pub etag: Option<Option<String>>,
2043    pub r#type: AiCitationType,
2044    #[serde(default, skip_serializing_if = "Option::is_none")]
2045    pub sequence_id: Option<String>,
2046    #[serde(default, skip_serializing_if = "Option::is_none")]
2047    pub name: Option<String>,
2048    #[serde(default, skip_serializing_if = "Option::is_none")]
2049    pub sha1: Option<String>,
2050    #[serde(default, skip_serializing_if = "Option::is_none")]
2051    pub file_version: Option<FileVersionMini>,
2052}
2053
2054#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2055pub struct FileConflict {
2056    pub id: String,
2057    #[serde(
2058        default,
2059        skip_serializing_if = "Option::is_none",
2060        deserialize_with = "double_option"
2061    )]
2062    pub etag: Option<Option<String>>,
2063    pub r#type: AiCitationType,
2064    #[serde(default, skip_serializing_if = "Option::is_none")]
2065    pub sequence_id: Option<String>,
2066    #[serde(default, skip_serializing_if = "Option::is_none")]
2067    pub name: Option<String>,
2068    #[serde(default, skip_serializing_if = "Option::is_none")]
2069    pub sha1: Option<String>,
2070    #[serde(default, skip_serializing_if = "Option::is_none")]
2071    pub file_version: Option<FileVersionMini>,
2072}
2073
2074#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2075pub struct FileRequest {
2076    pub id: String,
2077    pub r#type: FileRequestType,
2078    #[serde(default, skip_serializing_if = "Option::is_none")]
2079    pub title: Option<String>,
2080    #[serde(
2081        default,
2082        skip_serializing_if = "Option::is_none",
2083        deserialize_with = "double_option"
2084    )]
2085    pub description: Option<Option<String>>,
2086    #[serde(default, skip_serializing_if = "Option::is_none")]
2087    pub status: Option<FileRequestStatus>,
2088    #[serde(default, skip_serializing_if = "Option::is_none")]
2089    pub is_email_required: Option<bool>,
2090    #[serde(default, skip_serializing_if = "Option::is_none")]
2091    pub is_description_required: Option<bool>,
2092    #[serde(default, skip_serializing_if = "Option::is_none")]
2093    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
2094    pub folder: FolderMini,
2095    #[serde(default, skip_serializing_if = "Option::is_none")]
2096    pub url: Option<String>,
2097    #[serde(
2098        default,
2099        skip_serializing_if = "Option::is_none",
2100        deserialize_with = "double_option"
2101    )]
2102    pub etag: Option<Option<String>>,
2103    #[serde(default, skip_serializing_if = "Option::is_none")]
2104    pub created_by: Option<UserMini>,
2105    pub created_at: chrono::DateTime<chrono::Utc>,
2106    #[serde(default, skip_serializing_if = "Option::is_none")]
2107    pub updated_by: Option<UserMini>,
2108    pub updated_at: chrono::DateTime<chrono::Utc>,
2109}
2110
2111#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2112pub struct FileRequestCopyRequest {
2113    #[serde(default, skip_serializing_if = "Option::is_none")]
2114    pub title: Option<String>,
2115    #[serde(default, skip_serializing_if = "Option::is_none")]
2116    pub description: Option<String>,
2117    #[serde(default, skip_serializing_if = "Option::is_none")]
2118    pub status: Option<FileRequestStatus>,
2119    #[serde(default, skip_serializing_if = "Option::is_none")]
2120    pub is_email_required: Option<bool>,
2121    #[serde(default, skip_serializing_if = "Option::is_none")]
2122    pub is_description_required: Option<bool>,
2123    #[serde(default, skip_serializing_if = "Option::is_none")]
2124    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
2125    pub folder: FileRequestCopyRequestFolder,
2126}
2127
2128#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2129pub struct FileRequestUpdateRequest {
2130    #[serde(default, skip_serializing_if = "Option::is_none")]
2131    pub title: Option<String>,
2132    #[serde(default, skip_serializing_if = "Option::is_none")]
2133    pub description: Option<String>,
2134    #[serde(default, skip_serializing_if = "Option::is_none")]
2135    pub status: Option<FileRequestStatus>,
2136    #[serde(default, skip_serializing_if = "Option::is_none")]
2137    pub is_email_required: Option<bool>,
2138    #[serde(default, skip_serializing_if = "Option::is_none")]
2139    pub is_description_required: Option<bool>,
2140    #[serde(default, skip_serializing_if = "Option::is_none")]
2141    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
2142}
2143
2144#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2145pub struct Files {
2146    #[serde(default, skip_serializing_if = "Option::is_none")]
2147    pub total_count: Option<i64>,
2148    #[serde(default, skip_serializing_if = "Option::is_none")]
2149    pub entries: Option<Vec<FileFull>>,
2150}
2151
2152#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2153pub struct FilesOnHold {
2154    #[serde(default, skip_serializing_if = "Option::is_none")]
2155    pub limit: Option<i64>,
2156    #[serde(
2157        default,
2158        skip_serializing_if = "Option::is_none",
2159        deserialize_with = "double_option"
2160    )]
2161    pub next_marker: Option<Option<String>>,
2162    #[serde(
2163        default,
2164        skip_serializing_if = "Option::is_none",
2165        deserialize_with = "double_option"
2166    )]
2167    pub prev_marker: Option<Option<String>>,
2168    #[serde(default, skip_serializing_if = "Option::is_none")]
2169    pub entries: Option<Vec<FileMini>>,
2170}
2171
2172#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2173pub struct FilesUnderRetention {
2174    #[serde(default, skip_serializing_if = "Option::is_none")]
2175    pub limit: Option<i64>,
2176    #[serde(
2177        default,
2178        skip_serializing_if = "Option::is_none",
2179        deserialize_with = "double_option"
2180    )]
2181    pub next_marker: Option<Option<String>>,
2182    #[serde(
2183        default,
2184        skip_serializing_if = "Option::is_none",
2185        deserialize_with = "double_option"
2186    )]
2187    pub prev_marker: Option<Option<String>>,
2188    #[serde(default, skip_serializing_if = "Option::is_none")]
2189    pub entries: Option<Vec<FileMini>>,
2190}
2191
2192#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2193pub struct FileVersion {
2194    pub id: String,
2195    pub r#type: FileVersionType,
2196    #[serde(default, skip_serializing_if = "Option::is_none")]
2197    pub sha1: Option<String>,
2198    #[serde(default, skip_serializing_if = "Option::is_none")]
2199    pub name: Option<String>,
2200    #[serde(default, skip_serializing_if = "Option::is_none")]
2201    pub size: Option<i64>,
2202    #[serde(default, skip_serializing_if = "Option::is_none")]
2203    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2204    #[serde(default, skip_serializing_if = "Option::is_none")]
2205    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2206    #[serde(default, skip_serializing_if = "Option::is_none")]
2207    pub modified_by: Option<UserMini>,
2208    #[serde(
2209        default,
2210        skip_serializing_if = "Option::is_none",
2211        deserialize_with = "double_option"
2212    )]
2213    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2214    #[serde(default, skip_serializing_if = "Option::is_none")]
2215    pub trashed_by: Option<UserMini>,
2216    #[serde(
2217        default,
2218        skip_serializing_if = "Option::is_none",
2219        deserialize_with = "double_option"
2220    )]
2221    pub restored_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2222    #[serde(default, skip_serializing_if = "Option::is_none")]
2223    pub restored_by: Option<UserMini>,
2224    #[serde(
2225        default,
2226        skip_serializing_if = "Option::is_none",
2227        deserialize_with = "double_option"
2228    )]
2229    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2230    #[serde(default, skip_serializing_if = "Option::is_none")]
2231    pub uploader_display_name: Option<String>,
2232}
2233
2234#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2235pub struct FileVersionBase {
2236    pub id: String,
2237    pub r#type: FileVersionType,
2238}
2239
2240#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2241pub struct FileVersionFull {
2242    pub id: String,
2243    pub r#type: FileVersionType,
2244    #[serde(default, skip_serializing_if = "Option::is_none")]
2245    pub sha1: Option<String>,
2246    #[serde(default, skip_serializing_if = "Option::is_none")]
2247    pub name: Option<String>,
2248    #[serde(default, skip_serializing_if = "Option::is_none")]
2249    pub size: Option<i64>,
2250    #[serde(default, skip_serializing_if = "Option::is_none")]
2251    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2252    #[serde(default, skip_serializing_if = "Option::is_none")]
2253    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2254    #[serde(default, skip_serializing_if = "Option::is_none")]
2255    pub modified_by: Option<UserMini>,
2256    #[serde(
2257        default,
2258        skip_serializing_if = "Option::is_none",
2259        deserialize_with = "double_option"
2260    )]
2261    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2262    #[serde(default, skip_serializing_if = "Option::is_none")]
2263    pub trashed_by: Option<UserMini>,
2264    #[serde(
2265        default,
2266        skip_serializing_if = "Option::is_none",
2267        deserialize_with = "double_option"
2268    )]
2269    pub restored_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2270    #[serde(default, skip_serializing_if = "Option::is_none")]
2271    pub restored_by: Option<UserMini>,
2272    #[serde(
2273        default,
2274        skip_serializing_if = "Option::is_none",
2275        deserialize_with = "double_option"
2276    )]
2277    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2278    #[serde(default, skip_serializing_if = "Option::is_none")]
2279    pub uploader_display_name: Option<String>,
2280    #[serde(default, skip_serializing_if = "Option::is_none")]
2281    pub version_number: Option<String>,
2282}
2283
2284#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2285pub struct FileVersionMini {
2286    pub id: String,
2287    pub r#type: FileVersionType,
2288    #[serde(default, skip_serializing_if = "Option::is_none")]
2289    pub sha1: Option<String>,
2290}
2291
2292#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2293pub struct FileVersionLegalHold {
2294    #[serde(default, skip_serializing_if = "Option::is_none")]
2295    pub id: Option<String>,
2296    #[serde(default, skip_serializing_if = "Option::is_none")]
2297    pub r#type: Option<FileVersionLegalHoldType>,
2298    #[serde(default, skip_serializing_if = "Option::is_none")]
2299    pub file_version: Option<FileVersionMini>,
2300    #[serde(default, skip_serializing_if = "Option::is_none")]
2301    pub file: Option<FileMini>,
2302    #[serde(default, skip_serializing_if = "Option::is_none")]
2303    pub legal_hold_policy_assignments: Option<Vec<LegalHoldPolicyAssignment>>,
2304    #[serde(default, skip_serializing_if = "Option::is_none")]
2305    pub deleted_at: Option<chrono::DateTime<chrono::Utc>>,
2306}
2307
2308#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2309pub struct FileVersionLegalHolds {
2310    #[serde(default, skip_serializing_if = "Option::is_none")]
2311    pub limit: Option<i64>,
2312    #[serde(
2313        default,
2314        skip_serializing_if = "Option::is_none",
2315        deserialize_with = "double_option"
2316    )]
2317    pub next_marker: Option<Option<String>>,
2318    #[serde(
2319        default,
2320        skip_serializing_if = "Option::is_none",
2321        deserialize_with = "double_option"
2322    )]
2323    pub prev_marker: Option<Option<String>>,
2324    #[serde(default, skip_serializing_if = "Option::is_none")]
2325    pub entries: Option<Vec<FileVersionLegalHold>>,
2326}
2327
2328#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2329pub struct FileVersionRetention {
2330    #[serde(default, skip_serializing_if = "Option::is_none")]
2331    pub id: Option<String>,
2332    #[serde(default, skip_serializing_if = "Option::is_none")]
2333    pub r#type: Option<FileVersionRetentionType>,
2334    #[serde(default, skip_serializing_if = "Option::is_none")]
2335    pub file_version: Option<FileVersionMini>,
2336    #[serde(default, skip_serializing_if = "Option::is_none")]
2337    pub file: Option<FileMini>,
2338    #[serde(default, skip_serializing_if = "Option::is_none")]
2339    pub applied_at: Option<chrono::DateTime<chrono::Utc>>,
2340    #[serde(default, skip_serializing_if = "Option::is_none")]
2341    pub disposition_at: Option<chrono::DateTime<chrono::Utc>>,
2342    #[serde(default, skip_serializing_if = "Option::is_none")]
2343    pub winning_retention_policy: Option<RetentionPolicyMini>,
2344}
2345
2346#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2347pub struct FileVersionRetentions {
2348    #[serde(default, skip_serializing_if = "Option::is_none")]
2349    pub limit: Option<i64>,
2350    #[serde(
2351        default,
2352        skip_serializing_if = "Option::is_none",
2353        deserialize_with = "double_option"
2354    )]
2355    pub next_marker: Option<Option<String>>,
2356    #[serde(
2357        default,
2358        skip_serializing_if = "Option::is_none",
2359        deserialize_with = "double_option"
2360    )]
2361    pub prev_marker: Option<Option<String>>,
2362    #[serde(default, skip_serializing_if = "Option::is_none")]
2363    pub entries: Option<Vec<FileVersionRetention>>,
2364}
2365
2366#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2367pub struct FileVersions {
2368    #[serde(default, skip_serializing_if = "Option::is_none")]
2369    pub total_count: Option<i64>,
2370    #[serde(default, skip_serializing_if = "Option::is_none")]
2371    pub limit: Option<i64>,
2372    #[serde(default, skip_serializing_if = "Option::is_none")]
2373    pub offset: Option<i64>,
2374    #[serde(default, skip_serializing_if = "Option::is_none")]
2375    pub order: Option<Vec<CollectionsOrder>>,
2376    #[serde(default, skip_serializing_if = "Option::is_none")]
2377    pub entries: Option<Vec<FileVersionFull>>,
2378}
2379
2380#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2381pub struct FileVersionsOnHold {
2382    #[serde(default, skip_serializing_if = "Option::is_none")]
2383    pub limit: Option<i64>,
2384    #[serde(
2385        default,
2386        skip_serializing_if = "Option::is_none",
2387        deserialize_with = "double_option"
2388    )]
2389    pub next_marker: Option<Option<String>>,
2390    #[serde(
2391        default,
2392        skip_serializing_if = "Option::is_none",
2393        deserialize_with = "double_option"
2394    )]
2395    pub prev_marker: Option<Option<String>>,
2396    #[serde(default, skip_serializing_if = "Option::is_none")]
2397    pub entries: Option<Vec<FileVersion>>,
2398}
2399
2400#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2401pub struct Folder {
2402    pub id: String,
2403    #[serde(
2404        default,
2405        skip_serializing_if = "Option::is_none",
2406        deserialize_with = "double_option"
2407    )]
2408    pub etag: Option<Option<String>>,
2409    pub r#type: FolderType,
2410    #[serde(default, skip_serializing_if = "Option::is_none")]
2411    pub sequence_id: Option<String>,
2412    #[serde(default, skip_serializing_if = "Option::is_none")]
2413    pub name: Option<String>,
2414    #[serde(
2415        default,
2416        skip_serializing_if = "Option::is_none",
2417        deserialize_with = "double_option"
2418    )]
2419    pub created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2420    #[serde(
2421        default,
2422        skip_serializing_if = "Option::is_none",
2423        deserialize_with = "double_option"
2424    )]
2425    pub modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2426    #[serde(default, skip_serializing_if = "Option::is_none")]
2427    pub description: Option<String>,
2428    #[serde(default, skip_serializing_if = "Option::is_none")]
2429    pub size: Option<i64>,
2430    #[serde(default, skip_serializing_if = "Option::is_none")]
2431    pub path_collection: Option<FilePathCollection>,
2432    #[serde(default, skip_serializing_if = "Option::is_none")]
2433    pub created_by: Option<UserMini>,
2434    #[serde(default, skip_serializing_if = "Option::is_none")]
2435    pub modified_by: Option<UserMini>,
2436    #[serde(
2437        default,
2438        skip_serializing_if = "Option::is_none",
2439        deserialize_with = "double_option"
2440    )]
2441    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2442    #[serde(
2443        default,
2444        skip_serializing_if = "Option::is_none",
2445        deserialize_with = "double_option"
2446    )]
2447    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2448    #[serde(
2449        default,
2450        skip_serializing_if = "Option::is_none",
2451        deserialize_with = "double_option"
2452    )]
2453    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2454    #[serde(
2455        default,
2456        skip_serializing_if = "Option::is_none",
2457        deserialize_with = "double_option"
2458    )]
2459    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2460    #[serde(default, skip_serializing_if = "Option::is_none")]
2461    pub owned_by: Option<UserMini>,
2462    #[serde(
2463        default,
2464        skip_serializing_if = "Option::is_none",
2465        deserialize_with = "double_option"
2466    )]
2467    pub shared_link: Option<Option<FileSharedLink>>,
2468    #[serde(
2469        default,
2470        skip_serializing_if = "Option::is_none",
2471        deserialize_with = "double_option"
2472    )]
2473    pub folder_upload_email: Option<Option<FolderFolderUploadEmail>>,
2474    #[serde(
2475        default,
2476        skip_serializing_if = "Option::is_none",
2477        deserialize_with = "double_option"
2478    )]
2479    pub parent: Option<Option<FolderMini>>,
2480    #[serde(default, skip_serializing_if = "Option::is_none")]
2481    pub item_status: Option<FileItemStatus>,
2482    #[serde(default, skip_serializing_if = "Option::is_none")]
2483    pub item_collection: Option<Items>,
2484}
2485
2486#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2487pub struct FolderBase {
2488    pub id: String,
2489    #[serde(
2490        default,
2491        skip_serializing_if = "Option::is_none",
2492        deserialize_with = "double_option"
2493    )]
2494    pub etag: Option<Option<String>>,
2495    pub r#type: FolderType,
2496}
2497
2498#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2499pub struct FolderFull {
2500    pub id: String,
2501    #[serde(
2502        default,
2503        skip_serializing_if = "Option::is_none",
2504        deserialize_with = "double_option"
2505    )]
2506    pub etag: Option<Option<String>>,
2507    pub r#type: FolderType,
2508    #[serde(default, skip_serializing_if = "Option::is_none")]
2509    pub sequence_id: Option<String>,
2510    #[serde(default, skip_serializing_if = "Option::is_none")]
2511    pub name: Option<String>,
2512    #[serde(
2513        default,
2514        skip_serializing_if = "Option::is_none",
2515        deserialize_with = "double_option"
2516    )]
2517    pub created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2518    #[serde(
2519        default,
2520        skip_serializing_if = "Option::is_none",
2521        deserialize_with = "double_option"
2522    )]
2523    pub modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2524    #[serde(default, skip_serializing_if = "Option::is_none")]
2525    pub description: Option<String>,
2526    #[serde(default, skip_serializing_if = "Option::is_none")]
2527    pub size: Option<i64>,
2528    #[serde(default, skip_serializing_if = "Option::is_none")]
2529    pub path_collection: Option<FilePathCollection>,
2530    #[serde(default, skip_serializing_if = "Option::is_none")]
2531    pub created_by: Option<UserMini>,
2532    #[serde(default, skip_serializing_if = "Option::is_none")]
2533    pub modified_by: Option<UserMini>,
2534    #[serde(
2535        default,
2536        skip_serializing_if = "Option::is_none",
2537        deserialize_with = "double_option"
2538    )]
2539    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2540    #[serde(
2541        default,
2542        skip_serializing_if = "Option::is_none",
2543        deserialize_with = "double_option"
2544    )]
2545    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2546    #[serde(
2547        default,
2548        skip_serializing_if = "Option::is_none",
2549        deserialize_with = "double_option"
2550    )]
2551    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2552    #[serde(
2553        default,
2554        skip_serializing_if = "Option::is_none",
2555        deserialize_with = "double_option"
2556    )]
2557    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
2558    #[serde(default, skip_serializing_if = "Option::is_none")]
2559    pub owned_by: Option<UserMini>,
2560    #[serde(
2561        default,
2562        skip_serializing_if = "Option::is_none",
2563        deserialize_with = "double_option"
2564    )]
2565    pub shared_link: Option<Option<FileSharedLink>>,
2566    #[serde(
2567        default,
2568        skip_serializing_if = "Option::is_none",
2569        deserialize_with = "double_option"
2570    )]
2571    pub folder_upload_email: Option<Option<FolderFolderUploadEmail>>,
2572    #[serde(
2573        default,
2574        skip_serializing_if = "Option::is_none",
2575        deserialize_with = "double_option"
2576    )]
2577    pub parent: Option<Option<FolderMini>>,
2578    #[serde(default, skip_serializing_if = "Option::is_none")]
2579    pub item_status: Option<FileItemStatus>,
2580    #[serde(default, skip_serializing_if = "Option::is_none")]
2581    pub item_collection: Option<Items>,
2582    #[serde(default, skip_serializing_if = "Option::is_none")]
2583    pub sync_state: Option<FolderFullSyncState>,
2584    #[serde(default, skip_serializing_if = "Option::is_none")]
2585    pub has_collaborations: Option<bool>,
2586    #[serde(default, skip_serializing_if = "Option::is_none")]
2587    pub permissions: Option<FolderFullPermissions>,
2588    #[serde(default, skip_serializing_if = "Option::is_none")]
2589    pub tags: Option<Vec<String>>,
2590    #[serde(default, skip_serializing_if = "Option::is_none")]
2591    pub can_non_owners_invite: Option<bool>,
2592    #[serde(default, skip_serializing_if = "Option::is_none")]
2593    pub is_externally_owned: Option<bool>,
2594    #[serde(default, skip_serializing_if = "Option::is_none")]
2595    pub metadata:
2596        Option<std::collections::HashMap<String, std::collections::HashMap<String, MetadataFull>>>,
2597    #[serde(default, skip_serializing_if = "Option::is_none")]
2598    pub is_collaboration_restricted_to_enterprise: Option<bool>,
2599    #[serde(default, skip_serializing_if = "Option::is_none")]
2600    pub allowed_shared_link_access_levels: Option<Vec<SharedLinkAccess>>,
2601    #[serde(default, skip_serializing_if = "Option::is_none")]
2602    pub allowed_invitee_roles: Option<Vec<FileFullAllowedInviteeRoles>>,
2603    #[serde(default, skip_serializing_if = "Option::is_none")]
2604    pub watermark_info: Option<FileFullWatermarkInfo>,
2605    #[serde(default, skip_serializing_if = "Option::is_none")]
2606    pub is_accessible_via_shared_link: Option<bool>,
2607    #[serde(default, skip_serializing_if = "Option::is_none")]
2608    pub can_non_owners_view_collaborators: Option<bool>,
2609    #[serde(
2610        default,
2611        skip_serializing_if = "Option::is_none",
2612        deserialize_with = "double_option"
2613    )]
2614    pub classification: Option<Option<FileFullClassification>>,
2615    #[serde(default, skip_serializing_if = "Option::is_none")]
2616    pub is_associated_with_app_item: Option<bool>,
2617    #[serde(default, skip_serializing_if = "Option::is_none")]
2618    pub collections: Option<Vec<Collection>>,
2619}
2620
2621#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2622pub struct FolderMini {
2623    pub id: String,
2624    #[serde(
2625        default,
2626        skip_serializing_if = "Option::is_none",
2627        deserialize_with = "double_option"
2628    )]
2629    pub etag: Option<Option<String>>,
2630    pub r#type: FolderType,
2631    #[serde(default, skip_serializing_if = "Option::is_none")]
2632    pub sequence_id: Option<String>,
2633    #[serde(default, skip_serializing_if = "Option::is_none")]
2634    pub name: Option<String>,
2635}
2636
2637#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2638pub struct FolderLock {
2639    #[serde(default, skip_serializing_if = "Option::is_none")]
2640    pub folder: Option<FolderMini>,
2641    #[serde(default, skip_serializing_if = "Option::is_none")]
2642    pub id: Option<String>,
2643    #[serde(default, skip_serializing_if = "Option::is_none")]
2644    pub r#type: Option<String>,
2645    #[serde(default, skip_serializing_if = "Option::is_none")]
2646    pub created_by: Option<UserBase>,
2647    #[serde(default, skip_serializing_if = "Option::is_none")]
2648    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2649    #[serde(default, skip_serializing_if = "Option::is_none")]
2650    pub locked_operations: Option<FolderLockLockedOperations>,
2651    #[serde(default, skip_serializing_if = "Option::is_none")]
2652    pub lock_type: Option<String>,
2653}
2654
2655#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2656pub struct FolderLocks {
2657    #[serde(default, skip_serializing_if = "Option::is_none")]
2658    pub entries: Option<Vec<FolderLock>>,
2659    #[serde(default, skip_serializing_if = "Option::is_none")]
2660    pub limit: Option<String>,
2661    #[serde(
2662        default,
2663        skip_serializing_if = "Option::is_none",
2664        deserialize_with = "double_option"
2665    )]
2666    pub next_marker: Option<Option<String>>,
2667}
2668
2669#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2670pub struct FolderReference {
2671    pub r#type: FolderType,
2672    pub id: String,
2673}
2674
2675#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2676pub struct GenericSource {
2677    #[serde(flatten)]
2678    pub extra: std::collections::HashMap<String, serde_json::Value>,
2679}
2680
2681#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2682pub struct Group {
2683    pub id: String,
2684    pub r#type: GroupType,
2685    #[serde(default, skip_serializing_if = "Option::is_none")]
2686    pub name: Option<String>,
2687    #[serde(default, skip_serializing_if = "Option::is_none")]
2688    pub group_type: Option<GroupGroupType>,
2689    #[serde(default, skip_serializing_if = "Option::is_none")]
2690    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2691    #[serde(default, skip_serializing_if = "Option::is_none")]
2692    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2693}
2694
2695#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2696pub struct GroupBase {
2697    pub id: String,
2698    pub r#type: GroupType,
2699}
2700
2701#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2702pub struct GroupFull {
2703    pub id: String,
2704    pub r#type: GroupType,
2705    #[serde(default, skip_serializing_if = "Option::is_none")]
2706    pub name: Option<String>,
2707    #[serde(default, skip_serializing_if = "Option::is_none")]
2708    pub group_type: Option<GroupGroupType>,
2709    #[serde(default, skip_serializing_if = "Option::is_none")]
2710    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2711    #[serde(default, skip_serializing_if = "Option::is_none")]
2712    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2713    #[serde(default, skip_serializing_if = "Option::is_none")]
2714    pub provenance: Option<String>,
2715    #[serde(default, skip_serializing_if = "Option::is_none")]
2716    pub external_sync_identifier: Option<String>,
2717    #[serde(default, skip_serializing_if = "Option::is_none")]
2718    pub description: Option<String>,
2719    #[serde(default, skip_serializing_if = "Option::is_none")]
2720    pub invitability_level: Option<GroupFullInvitabilityLevel>,
2721    #[serde(default, skip_serializing_if = "Option::is_none")]
2722    pub member_viewability_level: Option<GroupFullInvitabilityLevel>,
2723    #[serde(default, skip_serializing_if = "Option::is_none")]
2724    pub permissions: Option<GroupFullPermissions>,
2725}
2726
2727#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2728pub struct GroupMini {
2729    pub id: String,
2730    pub r#type: GroupType,
2731    #[serde(default, skip_serializing_if = "Option::is_none")]
2732    pub name: Option<String>,
2733    #[serde(default, skip_serializing_if = "Option::is_none")]
2734    pub group_type: Option<GroupGroupType>,
2735}
2736
2737#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2738pub struct GroupMembership {
2739    #[serde(default, skip_serializing_if = "Option::is_none")]
2740    pub id: Option<String>,
2741    #[serde(default, skip_serializing_if = "Option::is_none")]
2742    pub r#type: Option<GroupMembershipType>,
2743    #[serde(default, skip_serializing_if = "Option::is_none")]
2744    pub user: Option<UserMini>,
2745    #[serde(default, skip_serializing_if = "Option::is_none")]
2746    pub group: Option<GroupMini>,
2747    #[serde(default, skip_serializing_if = "Option::is_none")]
2748    pub role: Option<GroupMembershipRole>,
2749    #[serde(default, skip_serializing_if = "Option::is_none")]
2750    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2751    #[serde(default, skip_serializing_if = "Option::is_none")]
2752    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2753}
2754
2755#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2756pub struct GroupMemberships {
2757    #[serde(default, skip_serializing_if = "Option::is_none")]
2758    pub total_count: Option<i64>,
2759    #[serde(default, skip_serializing_if = "Option::is_none")]
2760    pub limit: Option<i64>,
2761    #[serde(default, skip_serializing_if = "Option::is_none")]
2762    pub offset: Option<i64>,
2763    #[serde(default, skip_serializing_if = "Option::is_none")]
2764    pub order: Option<Vec<CollectionsOrder>>,
2765    #[serde(default, skip_serializing_if = "Option::is_none")]
2766    pub entries: Option<Vec<GroupMembership>>,
2767}
2768
2769#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2770pub struct Groups {
2771    #[serde(default, skip_serializing_if = "Option::is_none")]
2772    pub total_count: Option<i64>,
2773    #[serde(default, skip_serializing_if = "Option::is_none")]
2774    pub limit: Option<i64>,
2775    #[serde(default, skip_serializing_if = "Option::is_none")]
2776    pub offset: Option<i64>,
2777    #[serde(default, skip_serializing_if = "Option::is_none")]
2778    pub order: Option<Vec<CollectionsOrder>>,
2779    #[serde(default, skip_serializing_if = "Option::is_none")]
2780    pub entries: Option<Vec<GroupFull>>,
2781}
2782
2783#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2784pub struct IntegrationMapping {
2785    pub id: String,
2786    pub r#type: IntegrationMappingType,
2787    #[serde(default, skip_serializing_if = "Option::is_none")]
2788    pub integration_type: Option<IntegrationMappingIntegrationType>,
2789    #[serde(default, skip_serializing_if = "Option::is_none")]
2790    pub is_manually_created: Option<bool>,
2791    #[serde(default, skip_serializing_if = "Option::is_none")]
2792    pub options: Option<IntegrationMappingSlackOptions>,
2793    #[serde(default, skip_serializing_if = "Option::is_none")]
2794    pub created_by: Option<UserIntegrationMappings>,
2795    #[serde(default, skip_serializing_if = "Option::is_none")]
2796    pub modified_by: Option<UserIntegrationMappings>,
2797    pub partner_item: IntegrationMappingPartnerItemSlack,
2798    pub box_item: FolderMini,
2799    #[serde(default, skip_serializing_if = "Option::is_none")]
2800    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2801    #[serde(default, skip_serializing_if = "Option::is_none")]
2802    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2803}
2804
2805#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2806pub struct IntegrationMappingBase {
2807    pub id: String,
2808    pub r#type: IntegrationMappingType,
2809}
2810
2811#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2812pub struct IntegrationMappingBoxItemSlack {
2813    pub r#type: FolderType,
2814    pub id: String,
2815}
2816
2817#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2818pub struct IntegrationMappingPartnerItemSlack {
2819    pub r#type: IntegrationMappingPartnerItemSlackType,
2820    pub id: String,
2821    #[serde(
2822        default,
2823        skip_serializing_if = "Option::is_none",
2824        deserialize_with = "double_option"
2825    )]
2826    pub slack_workspace_id: Option<Option<String>>,
2827    #[serde(
2828        default,
2829        skip_serializing_if = "Option::is_none",
2830        deserialize_with = "double_option"
2831    )]
2832    pub slack_org_id: Option<Option<String>>,
2833}
2834
2835#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2836pub struct IntegrationMappingPartnerItemTeams {
2837    pub r#type: IntegrationMappingPartnerItemTeamsType,
2838    pub id: String,
2839    pub tenant_id: String,
2840}
2841
2842#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2843pub struct IntegrationMappingPartnerItemTeamsCreateRequest {
2844    pub r#type: IntegrationMappingPartnerItemTeamsType,
2845    pub id: String,
2846    pub tenant_id: String,
2847    pub team_id: String,
2848}
2849
2850#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2851pub struct IntegrationMappings {
2852    #[serde(default, skip_serializing_if = "Option::is_none")]
2853    pub limit: Option<i64>,
2854    #[serde(
2855        default,
2856        skip_serializing_if = "Option::is_none",
2857        deserialize_with = "double_option"
2858    )]
2859    pub next_marker: Option<Option<String>>,
2860    #[serde(default, skip_serializing_if = "Option::is_none")]
2861    pub entries: Option<Vec<IntegrationMapping>>,
2862}
2863
2864#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2865pub struct IntegrationMappingSlackCreateRequest {
2866    pub partner_item: IntegrationMappingPartnerItemSlack,
2867    pub box_item: IntegrationMappingBoxItemSlack,
2868    #[serde(default, skip_serializing_if = "Option::is_none")]
2869    pub options: Option<IntegrationMappingSlackOptions>,
2870}
2871
2872#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2873pub struct IntegrationMappingSlackOptions {
2874    #[serde(default, skip_serializing_if = "Option::is_none")]
2875    pub is_access_management_disabled: Option<bool>,
2876}
2877
2878#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2879pub struct IntegrationMappingsTeams {
2880    #[serde(default, skip_serializing_if = "Option::is_none")]
2881    pub entries: Option<Vec<IntegrationMappingTeams>>,
2882}
2883
2884#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2885pub struct IntegrationMappingTeams {
2886    pub id: String,
2887    pub r#type: IntegrationMappingType,
2888    #[serde(default, skip_serializing_if = "Option::is_none")]
2889    pub integration_type: Option<IntegrationMappingTeamsIntegrationType>,
2890    #[serde(default, skip_serializing_if = "Option::is_none")]
2891    pub is_overridden_by_manual_mapping: Option<bool>,
2892    pub partner_item: IntegrationMappingPartnerItemTeams,
2893    pub box_item: FolderReference,
2894    #[serde(default, skip_serializing_if = "Option::is_none")]
2895    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2896    #[serde(default, skip_serializing_if = "Option::is_none")]
2897    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2898}
2899
2900#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2901pub struct IntegrationMappingTeamsCreateRequest {
2902    pub partner_item: IntegrationMappingPartnerItemTeamsCreateRequest,
2903    pub box_item: FolderReference,
2904}
2905
2906#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2907pub struct Invite {
2908    pub id: String,
2909    pub r#type: InviteType,
2910    #[serde(default, skip_serializing_if = "Option::is_none")]
2911    pub invited_to: Option<CollaborationAllowlistEntryEnterprise>,
2912    #[serde(default, skip_serializing_if = "Option::is_none")]
2913    pub actionable_by: Option<UserMini>,
2914    #[serde(default, skip_serializing_if = "Option::is_none")]
2915    pub invited_by: Option<UserMini>,
2916    #[serde(default, skip_serializing_if = "Option::is_none")]
2917    pub status: Option<String>,
2918    #[serde(default, skip_serializing_if = "Option::is_none")]
2919    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2920    #[serde(default, skip_serializing_if = "Option::is_none")]
2921    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
2922}
2923
2924#[derive(Clone, Debug, PartialEq)]
2925pub enum Item {
2926    File(FileFull),
2927    Folder(FolderMini),
2928    WebLink(WebLink),
2929    /// An unrecognized discriminator, retained verbatim (open union).
2930    Unknown(serde_json::Value),
2931}
2932
2933impl Default for Item {
2934    fn default() -> Self {
2935        Self::Unknown(Default::default())
2936    }
2937}
2938
2939impl serde::Serialize for Item {
2940    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2941        match self {
2942            Self::File(inner) => inner.serialize(serializer),
2943            Self::Folder(inner) => inner.serialize(serializer),
2944            Self::WebLink(inner) => inner.serialize(serializer),
2945            Self::Unknown(inner) => inner.serialize(serializer),
2946        }
2947    }
2948}
2949
2950impl<'de> serde::Deserialize<'de> for Item {
2951    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2952        let value = serde_json::Value::deserialize(deserializer)?;
2953        let tag = value
2954            .get("type")
2955            .and_then(serde_json::Value::as_str)
2956            .map(str::to_owned);
2957        match tag.as_deref() {
2958            Some("file") => Ok(Self::File(
2959                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
2960            )),
2961            Some("folder") => Ok(Self::Folder(
2962                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
2963            )),
2964            Some("web_link") => Ok(Self::WebLink(
2965                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
2966            )),
2967            _ => Ok(Self::Unknown(value)),
2968        }
2969    }
2970}
2971
2972#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2973pub struct Items {
2974    #[serde(default, skip_serializing_if = "Option::is_none")]
2975    pub limit: Option<i64>,
2976    #[serde(
2977        default,
2978        skip_serializing_if = "Option::is_none",
2979        deserialize_with = "double_option"
2980    )]
2981    pub next_marker: Option<Option<String>>,
2982    #[serde(
2983        default,
2984        skip_serializing_if = "Option::is_none",
2985        deserialize_with = "double_option"
2986    )]
2987    pub prev_marker: Option<Option<String>>,
2988    #[serde(default, skip_serializing_if = "Option::is_none")]
2989    pub total_count: Option<i64>,
2990    #[serde(default, skip_serializing_if = "Option::is_none")]
2991    pub offset: Option<i64>,
2992    #[serde(default, skip_serializing_if = "Option::is_none")]
2993    pub order: Option<Vec<CollectionsOrder>>,
2994    #[serde(default, skip_serializing_if = "Option::is_none")]
2995    pub entries: Option<Vec<Item>>,
2996}
2997
2998#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
2999pub struct ItemsOffsetPaginated {
3000    #[serde(default, skip_serializing_if = "Option::is_none")]
3001    pub total_count: Option<i64>,
3002    #[serde(default, skip_serializing_if = "Option::is_none")]
3003    pub limit: Option<i64>,
3004    #[serde(default, skip_serializing_if = "Option::is_none")]
3005    pub offset: Option<i64>,
3006    #[serde(default, skip_serializing_if = "Option::is_none")]
3007    pub order: Option<Vec<CollectionsOrder>>,
3008    #[serde(default, skip_serializing_if = "Option::is_none")]
3009    pub entries: Option<Vec<Item>>,
3010}
3011
3012#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3013pub struct KeywordSkillCard {
3014    #[serde(default, skip_serializing_if = "Option::is_none")]
3015    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3016    pub r#type: KeywordSkillCardType,
3017    pub skill_card_type: KeywordSkillCardSkillCardType,
3018    #[serde(default, skip_serializing_if = "Option::is_none")]
3019    pub skill_card_title: Option<KeywordSkillCardSkillCardTitle>,
3020    pub skill: KeywordSkillCardSkill,
3021    pub invocation: KeywordSkillCardInvocation,
3022    pub entries: Vec<KeywordSkillCardEntries>,
3023}
3024
3025#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3026pub struct LegalHoldPolicies {
3027    #[serde(default, skip_serializing_if = "Option::is_none")]
3028    pub limit: Option<i64>,
3029    #[serde(
3030        default,
3031        skip_serializing_if = "Option::is_none",
3032        deserialize_with = "double_option"
3033    )]
3034    pub next_marker: Option<Option<String>>,
3035    #[serde(
3036        default,
3037        skip_serializing_if = "Option::is_none",
3038        deserialize_with = "double_option"
3039    )]
3040    pub prev_marker: Option<Option<String>>,
3041    #[serde(default, skip_serializing_if = "Option::is_none")]
3042    pub entries: Option<Vec<LegalHoldPolicy>>,
3043}
3044
3045#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3046pub struct LegalHoldPolicy {
3047    pub id: String,
3048    pub r#type: LegalHoldPolicyType,
3049    #[serde(default, skip_serializing_if = "Option::is_none")]
3050    pub policy_name: Option<String>,
3051    #[serde(default, skip_serializing_if = "Option::is_none")]
3052    pub description: Option<String>,
3053    #[serde(default, skip_serializing_if = "Option::is_none")]
3054    pub status: Option<LegalHoldPolicyStatus>,
3055    #[serde(default, skip_serializing_if = "Option::is_none")]
3056    pub assignment_counts: Option<LegalHoldPolicyAssignmentCounts>,
3057    #[serde(default, skip_serializing_if = "Option::is_none")]
3058    pub created_by: Option<UserMini>,
3059    #[serde(default, skip_serializing_if = "Option::is_none")]
3060    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3061    #[serde(default, skip_serializing_if = "Option::is_none")]
3062    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
3063    #[serde(default, skip_serializing_if = "Option::is_none")]
3064    pub deleted_at: Option<chrono::DateTime<chrono::Utc>>,
3065    #[serde(default, skip_serializing_if = "Option::is_none")]
3066    pub filter_started_at: Option<chrono::DateTime<chrono::Utc>>,
3067    #[serde(default, skip_serializing_if = "Option::is_none")]
3068    pub filter_ended_at: Option<chrono::DateTime<chrono::Utc>>,
3069    #[serde(default, skip_serializing_if = "Option::is_none")]
3070    pub release_notes: Option<String>,
3071}
3072
3073#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3074pub struct LegalHoldPolicyMini {
3075    pub id: String,
3076    pub r#type: LegalHoldPolicyType,
3077}
3078
3079#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3080pub struct LegalHoldPolicyAssignedItem {
3081    pub r#type: LegalHoldPolicyAssignedItemType,
3082    pub id: String,
3083}
3084
3085#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3086pub struct LegalHoldPolicyAssignment {
3087    #[serde(default, skip_serializing_if = "Option::is_none")]
3088    pub id: Option<String>,
3089    #[serde(default, skip_serializing_if = "Option::is_none")]
3090    pub r#type: Option<LegalHoldPolicyAssignmentType>,
3091    #[serde(default, skip_serializing_if = "Option::is_none")]
3092    pub legal_hold_policy: Option<LegalHoldPolicyMini>,
3093    #[serde(default, skip_serializing_if = "Option::is_none")]
3094    pub assigned_to: Option<LegalHoldPolicyAssignedItem>,
3095    #[serde(default, skip_serializing_if = "Option::is_none")]
3096    pub assigned_by: Option<UserMini>,
3097    #[serde(default, skip_serializing_if = "Option::is_none")]
3098    pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
3099    #[serde(default, skip_serializing_if = "Option::is_none")]
3100    pub deleted_at: Option<chrono::DateTime<chrono::Utc>>,
3101}
3102
3103#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3104pub struct LegalHoldPolicyAssignmentBase {
3105    #[serde(default, skip_serializing_if = "Option::is_none")]
3106    pub id: Option<String>,
3107    #[serde(default, skip_serializing_if = "Option::is_none")]
3108    pub r#type: Option<LegalHoldPolicyAssignmentType>,
3109}
3110
3111#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3112pub struct LegalHoldPolicyAssignments {
3113    #[serde(default, skip_serializing_if = "Option::is_none")]
3114    pub limit: Option<i64>,
3115    #[serde(
3116        default,
3117        skip_serializing_if = "Option::is_none",
3118        deserialize_with = "double_option"
3119    )]
3120    pub next_marker: Option<Option<String>>,
3121    #[serde(
3122        default,
3123        skip_serializing_if = "Option::is_none",
3124        deserialize_with = "double_option"
3125    )]
3126    pub prev_marker: Option<Option<String>>,
3127    #[serde(default, skip_serializing_if = "Option::is_none")]
3128    pub entries: Option<Vec<LegalHoldPolicyAssignment>>,
3129}
3130
3131pub type Metadata = MetadataBase;
3132
3133#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3134pub struct MetadataBase {
3135    #[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
3136    pub parent: Option<String>,
3137    #[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
3138    pub template: Option<String>,
3139    #[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
3140    pub scope: Option<String>,
3141    #[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
3142    pub version: Option<i64>,
3143}
3144
3145#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3146pub struct MetadataFull {
3147    #[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
3148    pub parent: Option<String>,
3149    #[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
3150    pub template: Option<String>,
3151    #[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
3152    pub scope: Option<String>,
3153    #[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
3154    pub version: Option<i64>,
3155    #[serde(rename = "$canEdit", default, skip_serializing_if = "Option::is_none")]
3156    pub can_edit: Option<bool>,
3157    #[serde(rename = "$id", default, skip_serializing_if = "Option::is_none")]
3158    pub id: Option<String>,
3159    #[serde(rename = "$type", default, skip_serializing_if = "Option::is_none")]
3160    pub r#type: Option<String>,
3161    #[serde(
3162        rename = "$typeVersion",
3163        default,
3164        skip_serializing_if = "Option::is_none"
3165    )]
3166    pub type_version: Option<i64>,
3167}
3168
3169#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3170pub struct MetadataCascadePolicies {
3171    #[serde(default, skip_serializing_if = "Option::is_none")]
3172    pub limit: Option<i64>,
3173    #[serde(
3174        default,
3175        skip_serializing_if = "Option::is_none",
3176        deserialize_with = "double_option"
3177    )]
3178    pub next_marker: Option<Option<String>>,
3179    #[serde(
3180        default,
3181        skip_serializing_if = "Option::is_none",
3182        deserialize_with = "double_option"
3183    )]
3184    pub prev_marker: Option<Option<String>>,
3185    #[serde(default, skip_serializing_if = "Option::is_none")]
3186    pub entries: Option<Vec<MetadataCascadePolicy>>,
3187}
3188
3189#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3190pub struct MetadataCascadePolicy {
3191    pub id: String,
3192    pub r#type: MetadataCascadePolicyType,
3193    #[serde(default, skip_serializing_if = "Option::is_none")]
3194    pub owner_enterprise: Option<MetadataCascadePolicyOwnerEnterprise>,
3195    #[serde(default, skip_serializing_if = "Option::is_none")]
3196    pub parent: Option<MetadataCascadePolicyParent>,
3197    #[serde(default, skip_serializing_if = "Option::is_none")]
3198    pub scope: Option<String>,
3199    #[serde(
3200        rename = "templateKey",
3201        default,
3202        skip_serializing_if = "Option::is_none"
3203    )]
3204    pub template_key: Option<String>,
3205}
3206
3207#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3208pub struct MetadataError {
3209    #[serde(default, skip_serializing_if = "Option::is_none")]
3210    pub code: Option<String>,
3211    #[serde(default, skip_serializing_if = "Option::is_none")]
3212    pub message: Option<String>,
3213    #[serde(default, skip_serializing_if = "Option::is_none")]
3214    pub request_id: Option<String>,
3215}
3216
3217#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3218pub struct MetadataFieldFilterDateRange {
3219    #[serde(default, skip_serializing_if = "Option::is_none")]
3220    pub lt: Option<chrono::DateTime<chrono::Utc>>,
3221    #[serde(default, skip_serializing_if = "Option::is_none")]
3222    pub gt: Option<chrono::DateTime<chrono::Utc>>,
3223}
3224
3225#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3226pub struct MetadataFieldFilterFloatRange {
3227    #[serde(default, skip_serializing_if = "Option::is_none")]
3228    pub lt: Option<f64>,
3229    #[serde(default, skip_serializing_if = "Option::is_none")]
3230    pub gt: Option<f64>,
3231}
3232
3233#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3234pub struct MetadataFilter {
3235    #[serde(default, skip_serializing_if = "Option::is_none")]
3236    pub scope: Option<MetadataFilterScope>,
3237    #[serde(
3238        rename = "templateKey",
3239        default,
3240        skip_serializing_if = "Option::is_none"
3241    )]
3242    pub template_key: Option<String>,
3243    #[serde(default, skip_serializing_if = "Option::is_none")]
3244    pub filters: Option<std::collections::HashMap<String, MetadataFilterValue>>,
3245}
3246
3247#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3248#[serde(transparent)]
3249pub struct MetadataFilterValue(pub serde_json::Value);
3250
3251#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3252#[serde(transparent)]
3253pub struct MetadataInstanceValue(pub serde_json::Value);
3254
3255#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3256pub struct MetadataQuery {
3257    pub from: String,
3258    #[serde(default, skip_serializing_if = "Option::is_none")]
3259    pub query: Option<String>,
3260    #[serde(default, skip_serializing_if = "Option::is_none")]
3261    pub query_params: Option<std::collections::HashMap<String, serde_json::Value>>,
3262    pub ancestor_folder_id: String,
3263    #[serde(default, skip_serializing_if = "Option::is_none")]
3264    pub order_by: Option<Vec<MetadataQueryOrderBy>>,
3265    #[serde(default, skip_serializing_if = "Option::is_none")]
3266    pub limit: Option<i64>,
3267    #[serde(default, skip_serializing_if = "Option::is_none")]
3268    pub marker: Option<String>,
3269    #[serde(default, skip_serializing_if = "Option::is_none")]
3270    pub fields: Option<Vec<String>>,
3271}
3272
3273#[derive(Clone, Debug, PartialEq)]
3274pub enum MetadataQueryResultItem {
3275    File(FileFull),
3276    Folder(FolderFull),
3277    /// An unrecognized discriminator, retained verbatim (open union).
3278    Unknown(serde_json::Value),
3279}
3280
3281impl Default for MetadataQueryResultItem {
3282    fn default() -> Self {
3283        Self::Unknown(Default::default())
3284    }
3285}
3286
3287impl serde::Serialize for MetadataQueryResultItem {
3288    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3289        match self {
3290            Self::File(inner) => inner.serialize(serializer),
3291            Self::Folder(inner) => inner.serialize(serializer),
3292            Self::Unknown(inner) => inner.serialize(serializer),
3293        }
3294    }
3295}
3296
3297impl<'de> serde::Deserialize<'de> for MetadataQueryResultItem {
3298    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3299        let value = serde_json::Value::deserialize(deserializer)?;
3300        let tag = value
3301            .get("type")
3302            .and_then(serde_json::Value::as_str)
3303            .map(str::to_owned);
3304        match tag.as_deref() {
3305            Some("file") => Ok(Self::File(
3306                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3307            )),
3308            Some("folder") => Ok(Self::Folder(
3309                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3310            )),
3311            _ => Ok(Self::Unknown(value)),
3312        }
3313    }
3314}
3315
3316#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3317pub struct MetadataQueryResults {
3318    #[serde(default, skip_serializing_if = "Option::is_none")]
3319    pub entries: Option<Vec<MetadataQueryResultItem>>,
3320    #[serde(default, skip_serializing_if = "Option::is_none")]
3321    pub limit: Option<i64>,
3322    #[serde(default, skip_serializing_if = "Option::is_none")]
3323    pub next_marker: Option<String>,
3324}
3325
3326#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3327pub struct Metadatas {
3328    #[serde(default, skip_serializing_if = "Option::is_none")]
3329    pub entries: Option<Vec<Metadata>>,
3330    #[serde(default, skip_serializing_if = "Option::is_none")]
3331    pub limit: Option<i64>,
3332}
3333
3334#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3335pub struct MetadataTaxonomies {
3336    #[serde(default, skip_serializing_if = "Option::is_none")]
3337    pub limit: Option<i64>,
3338    #[serde(
3339        default,
3340        skip_serializing_if = "Option::is_none",
3341        deserialize_with = "double_option"
3342    )]
3343    pub next_marker: Option<Option<String>>,
3344    #[serde(
3345        default,
3346        skip_serializing_if = "Option::is_none",
3347        deserialize_with = "double_option"
3348    )]
3349    pub prev_marker: Option<Option<String>>,
3350    #[serde(default, skip_serializing_if = "Option::is_none")]
3351    pub entries: Option<Vec<MetadataTaxonomy>>,
3352}
3353
3354#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3355pub struct MetadataTaxonomy {
3356    pub id: String,
3357    #[serde(default, skip_serializing_if = "Option::is_none")]
3358    pub key: Option<String>,
3359    #[serde(rename = "displayName")]
3360    pub display_name: String,
3361    pub namespace: String,
3362    #[serde(default, skip_serializing_if = "Option::is_none")]
3363    pub levels: Option<Vec<MetadataTaxonomyLevel>>,
3364}
3365
3366#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3367pub struct MetadataTaxonomyAncestor {
3368    #[serde(default, skip_serializing_if = "Option::is_none")]
3369    pub id: Option<String>,
3370    #[serde(
3371        rename = "displayName",
3372        default,
3373        skip_serializing_if = "Option::is_none"
3374    )]
3375    pub display_name: Option<String>,
3376    #[serde(default, skip_serializing_if = "Option::is_none")]
3377    pub level: Option<i64>,
3378}
3379
3380#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3381pub struct MetadataTaxonomyLevel {
3382    #[serde(
3383        rename = "displayName",
3384        default,
3385        skip_serializing_if = "Option::is_none"
3386    )]
3387    pub display_name: Option<String>,
3388    #[serde(default, skip_serializing_if = "Option::is_none")]
3389    pub description: Option<String>,
3390    #[serde(default, skip_serializing_if = "Option::is_none")]
3391    pub level: Option<i64>,
3392}
3393
3394#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3395pub struct MetadataTaxonomyLevels {
3396    #[serde(default, skip_serializing_if = "Option::is_none")]
3397    pub entries: Option<Vec<MetadataTaxonomyLevel>>,
3398}
3399
3400#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3401pub struct MetadataTaxonomyNode {
3402    pub id: String,
3403    #[serde(rename = "displayName")]
3404    pub display_name: String,
3405    pub level: i64,
3406    #[serde(rename = "parentId", default, skip_serializing_if = "Option::is_none")]
3407    pub parent_id: Option<String>,
3408    #[serde(rename = "nodePath", default, skip_serializing_if = "Option::is_none")]
3409    pub node_path: Option<Vec<String>>,
3410    #[serde(default, skip_serializing_if = "Option::is_none")]
3411    pub ancestors: Option<Vec<MetadataTaxonomyAncestor>>,
3412}
3413
3414#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3415pub struct MetadataTaxonomyNodes {
3416    #[serde(default, skip_serializing_if = "Option::is_none")]
3417    pub limit: Option<i64>,
3418    #[serde(
3419        default,
3420        skip_serializing_if = "Option::is_none",
3421        deserialize_with = "double_option"
3422    )]
3423    pub next_marker: Option<Option<String>>,
3424    #[serde(
3425        default,
3426        skip_serializing_if = "Option::is_none",
3427        deserialize_with = "double_option"
3428    )]
3429    pub prev_marker: Option<Option<String>>,
3430    #[serde(default, skip_serializing_if = "Option::is_none")]
3431    pub entries: Option<Vec<MetadataTaxonomyNode>>,
3432}
3433
3434#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3435pub struct MetadataTemplate {
3436    pub id: String,
3437    pub r#type: MetadataTemplateType,
3438    #[serde(default, skip_serializing_if = "Option::is_none")]
3439    pub scope: Option<String>,
3440    #[serde(
3441        rename = "templateKey",
3442        default,
3443        skip_serializing_if = "Option::is_none"
3444    )]
3445    pub template_key: Option<String>,
3446    #[serde(
3447        rename = "displayName",
3448        default,
3449        skip_serializing_if = "Option::is_none"
3450    )]
3451    pub display_name: Option<String>,
3452    #[serde(default, skip_serializing_if = "Option::is_none")]
3453    pub hidden: Option<bool>,
3454    #[serde(default, skip_serializing_if = "Option::is_none")]
3455    pub fields: Option<Vec<MetadataTemplateFields>>,
3456    #[serde(
3457        rename = "copyInstanceOnItemCopy",
3458        default,
3459        skip_serializing_if = "Option::is_none"
3460    )]
3461    pub copy_instance_on_item_copy: Option<bool>,
3462}
3463
3464#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3465pub struct MetadataTemplates {
3466    #[serde(default, skip_serializing_if = "Option::is_none")]
3467    pub limit: Option<i64>,
3468    #[serde(
3469        default,
3470        skip_serializing_if = "Option::is_none",
3471        deserialize_with = "double_option"
3472    )]
3473    pub next_marker: Option<Option<String>>,
3474    #[serde(
3475        default,
3476        skip_serializing_if = "Option::is_none",
3477        deserialize_with = "double_option"
3478    )]
3479    pub prev_marker: Option<Option<String>>,
3480    #[serde(default, skip_serializing_if = "Option::is_none")]
3481    pub entries: Option<Vec<MetadataTemplate>>,
3482}
3483
3484#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3485pub struct OAuth2Error {
3486    #[serde(default, skip_serializing_if = "Option::is_none")]
3487    pub error: Option<String>,
3488    #[serde(default, skip_serializing_if = "Option::is_none")]
3489    pub error_description: Option<String>,
3490}
3491
3492#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3493pub struct Outcome {
3494    pub id: String,
3495    #[serde(default, skip_serializing_if = "Option::is_none")]
3496    pub collaborators: Option<CollaboratorVariable>,
3497    #[serde(default, skip_serializing_if = "Option::is_none")]
3498    pub completion_rule: Option<CompletionRuleVariable>,
3499    #[serde(default, skip_serializing_if = "Option::is_none")]
3500    pub file_collaborator_role: Option<RoleVariable>,
3501    #[serde(default, skip_serializing_if = "Option::is_none")]
3502    pub task_collaborators: Option<CollaboratorVariable>,
3503    #[serde(default, skip_serializing_if = "Option::is_none")]
3504    pub role: Option<RoleVariable>,
3505}
3506
3507#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3508pub struct PostOAuth2Revoke {
3509    #[serde(default, skip_serializing_if = "Option::is_none")]
3510    pub client_id: Option<String>,
3511    #[serde(default, skip_serializing_if = "Option::is_none")]
3512    pub client_secret: Option<String>,
3513    #[serde(default, skip_serializing_if = "Option::is_none")]
3514    pub token: Option<String>,
3515}
3516
3517#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3518pub struct PostOAuth2Token {
3519    pub grant_type: PostOAuth2TokenGrantType,
3520    #[serde(default, skip_serializing_if = "Option::is_none")]
3521    pub client_id: Option<String>,
3522    #[serde(default, skip_serializing_if = "Option::is_none")]
3523    pub client_secret: Option<String>,
3524    #[serde(default, skip_serializing_if = "Option::is_none")]
3525    pub code: Option<String>,
3526    #[serde(default, skip_serializing_if = "Option::is_none")]
3527    pub refresh_token: Option<String>,
3528    #[serde(default, skip_serializing_if = "Option::is_none")]
3529    pub assertion: Option<String>,
3530    #[serde(default, skip_serializing_if = "Option::is_none")]
3531    pub subject_token: Option<String>,
3532    #[serde(default, skip_serializing_if = "Option::is_none")]
3533    pub subject_token_type: Option<AccessTokenIssuedTokenType>,
3534    #[serde(default, skip_serializing_if = "Option::is_none")]
3535    pub actor_token: Option<String>,
3536    #[serde(default, skip_serializing_if = "Option::is_none")]
3537    pub actor_token_type: Option<PostOAuth2TokenActorTokenType>,
3538    #[serde(default, skip_serializing_if = "Option::is_none")]
3539    pub scope: Option<String>,
3540    #[serde(default, skip_serializing_if = "Option::is_none")]
3541    pub resource: Option<String>,
3542    #[serde(default, skip_serializing_if = "Option::is_none")]
3543    pub box_subject_type: Option<PostOAuth2TokenBoxSubjectType>,
3544    #[serde(default, skip_serializing_if = "Option::is_none")]
3545    pub box_subject_id: Option<String>,
3546    #[serde(default, skip_serializing_if = "Option::is_none")]
3547    pub box_shared_link: Option<String>,
3548}
3549
3550#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3551pub struct PostOAuth2TokenRefreshAccessToken {
3552    pub grant_type: PostOAuth2TokenRefreshAccessTokenGrantType,
3553    pub client_id: String,
3554    pub client_secret: String,
3555    pub refresh_token: String,
3556}
3557
3558#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3559pub struct RealtimeServer {
3560    #[serde(default, skip_serializing_if = "Option::is_none")]
3561    pub r#type: Option<String>,
3562    #[serde(default, skip_serializing_if = "Option::is_none")]
3563    pub url: Option<String>,
3564    #[serde(default, skip_serializing_if = "Option::is_none")]
3565    pub ttl: Option<String>,
3566    #[serde(default, skip_serializing_if = "Option::is_none")]
3567    pub max_retries: Option<String>,
3568    #[serde(default, skip_serializing_if = "Option::is_none")]
3569    pub retry_timeout: Option<i64>,
3570}
3571
3572#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3573pub struct RealtimeServers {
3574    #[serde(default, skip_serializing_if = "Option::is_none")]
3575    pub chunk_size: Option<i64>,
3576    #[serde(default, skip_serializing_if = "Option::is_none")]
3577    pub entries: Option<Vec<RealtimeServer>>,
3578}
3579
3580#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3581pub struct RecentItem {
3582    #[serde(default, skip_serializing_if = "Option::is_none")]
3583    pub r#type: Option<String>,
3584    #[serde(default, skip_serializing_if = "Option::is_none")]
3585    pub item: Option<RecentItemResource>,
3586    #[serde(default, skip_serializing_if = "Option::is_none")]
3587    pub interaction_type: Option<RecentItemInteractionType>,
3588    #[serde(default, skip_serializing_if = "Option::is_none")]
3589    pub interacted_at: Option<chrono::DateTime<chrono::Utc>>,
3590    #[serde(default, skip_serializing_if = "Option::is_none")]
3591    pub interaction_shared_link: Option<String>,
3592}
3593
3594#[derive(Clone, Debug, PartialEq)]
3595pub enum RecentItemResource {
3596    File(FileFull),
3597    Folder(FolderFull),
3598    WebLink(WebLink),
3599    /// An unrecognized discriminator, retained verbatim (open union).
3600    Unknown(serde_json::Value),
3601}
3602
3603impl Default for RecentItemResource {
3604    fn default() -> Self {
3605        Self::Unknown(Default::default())
3606    }
3607}
3608
3609impl serde::Serialize for RecentItemResource {
3610    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3611        match self {
3612            Self::File(inner) => inner.serialize(serializer),
3613            Self::Folder(inner) => inner.serialize(serializer),
3614            Self::WebLink(inner) => inner.serialize(serializer),
3615            Self::Unknown(inner) => inner.serialize(serializer),
3616        }
3617    }
3618}
3619
3620impl<'de> serde::Deserialize<'de> for RecentItemResource {
3621    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3622        let value = serde_json::Value::deserialize(deserializer)?;
3623        let tag = value
3624            .get("type")
3625            .and_then(serde_json::Value::as_str)
3626            .map(str::to_owned);
3627        match tag.as_deref() {
3628            Some("file") => Ok(Self::File(
3629                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3630            )),
3631            Some("folder") => Ok(Self::Folder(
3632                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3633            )),
3634            Some("web_link") => Ok(Self::WebLink(
3635                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3636            )),
3637            _ => Ok(Self::Unknown(value)),
3638        }
3639    }
3640}
3641
3642#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3643pub struct RecentItems {
3644    #[serde(default, skip_serializing_if = "Option::is_none")]
3645    pub limit: Option<i64>,
3646    #[serde(
3647        default,
3648        skip_serializing_if = "Option::is_none",
3649        deserialize_with = "double_option"
3650    )]
3651    pub next_marker: Option<Option<String>>,
3652    #[serde(
3653        default,
3654        skip_serializing_if = "Option::is_none",
3655        deserialize_with = "double_option"
3656    )]
3657    pub prev_marker: Option<Option<String>>,
3658    #[serde(default, skip_serializing_if = "Option::is_none")]
3659    pub entries: Option<Vec<RecentItem>>,
3660}
3661
3662#[derive(Clone, Debug, PartialEq)]
3663pub enum Resource {
3664    Folder(FolderMini),
3665    File(FileMini),
3666    /// An unrecognized discriminator, retained verbatim (open union).
3667    Unknown(serde_json::Value),
3668}
3669
3670impl Default for Resource {
3671    fn default() -> Self {
3672        Self::Unknown(Default::default())
3673    }
3674}
3675
3676impl serde::Serialize for Resource {
3677    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3678        match self {
3679            Self::Folder(inner) => inner.serialize(serializer),
3680            Self::File(inner) => inner.serialize(serializer),
3681            Self::Unknown(inner) => inner.serialize(serializer),
3682        }
3683    }
3684}
3685
3686impl<'de> serde::Deserialize<'de> for Resource {
3687    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3688        let value = serde_json::Value::deserialize(deserializer)?;
3689        let tag = value
3690            .get("type")
3691            .and_then(serde_json::Value::as_str)
3692            .map(str::to_owned);
3693        match tag.as_deref() {
3694            Some("folder") => Ok(Self::Folder(
3695                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3696            )),
3697            Some("file") => Ok(Self::File(
3698                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3699            )),
3700            _ => Ok(Self::Unknown(value)),
3701        }
3702    }
3703}
3704
3705#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3706pub struct ResourceScope {
3707    #[serde(default, skip_serializing_if = "Option::is_none")]
3708    pub scope: Option<ResourceScopeScope>,
3709    #[serde(default, skip_serializing_if = "Option::is_none")]
3710    pub object: Option<Resource>,
3711}
3712
3713#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3714pub struct RetentionPolicies {
3715    #[serde(default, skip_serializing_if = "Option::is_none")]
3716    pub entries: Option<Vec<RetentionPolicy>>,
3717    #[serde(default, skip_serializing_if = "Option::is_none")]
3718    pub limit: Option<i64>,
3719    #[serde(
3720        default,
3721        skip_serializing_if = "Option::is_none",
3722        deserialize_with = "double_option"
3723    )]
3724    pub next_marker: Option<Option<String>>,
3725}
3726
3727#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3728pub struct RetentionPolicy {
3729    pub id: String,
3730    pub r#type: RetentionPolicyType,
3731    #[serde(default, skip_serializing_if = "Option::is_none")]
3732    pub policy_name: Option<String>,
3733    #[serde(default, skip_serializing_if = "Option::is_none")]
3734    pub retention_length: Option<String>,
3735    #[serde(default, skip_serializing_if = "Option::is_none")]
3736    pub disposition_action: Option<RetentionPolicyDispositionAction>,
3737    #[serde(default, skip_serializing_if = "Option::is_none")]
3738    pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthResponse>,
3739    #[serde(default, skip_serializing_if = "Option::is_none")]
3740    pub description: Option<String>,
3741    #[serde(default, skip_serializing_if = "Option::is_none")]
3742    pub policy_type: Option<RetentionPolicyPolicyType>,
3743    #[serde(default, skip_serializing_if = "Option::is_none")]
3744    pub retention_type: Option<RetentionPolicyRetentionType>,
3745    #[serde(default, skip_serializing_if = "Option::is_none")]
3746    pub status: Option<RetentionPolicyStatus>,
3747    #[serde(default, skip_serializing_if = "Option::is_none")]
3748    pub created_by: Option<UserMini>,
3749    #[serde(default, skip_serializing_if = "Option::is_none")]
3750    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3751    #[serde(default, skip_serializing_if = "Option::is_none")]
3752    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
3753    #[serde(default, skip_serializing_if = "Option::is_none")]
3754    pub can_owner_extend_retention: Option<bool>,
3755    #[serde(default, skip_serializing_if = "Option::is_none")]
3756    pub are_owners_notified: Option<bool>,
3757    #[serde(default, skip_serializing_if = "Option::is_none")]
3758    pub custom_notification_recipients: Option<Vec<UserMini>>,
3759    #[serde(default, skip_serializing_if = "Option::is_none")]
3760    pub assignment_counts: Option<RetentionPolicyAssignmentCounts>,
3761}
3762
3763#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3764pub struct RetentionPolicyBase {
3765    pub id: String,
3766    pub r#type: RetentionPolicyType,
3767}
3768
3769#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3770pub struct RetentionPolicyMini {
3771    pub id: String,
3772    pub r#type: RetentionPolicyType,
3773    #[serde(default, skip_serializing_if = "Option::is_none")]
3774    pub policy_name: Option<String>,
3775    #[serde(default, skip_serializing_if = "Option::is_none")]
3776    pub retention_length: Option<String>,
3777    #[serde(default, skip_serializing_if = "Option::is_none")]
3778    pub disposition_action: Option<RetentionPolicyDispositionAction>,
3779    #[serde(default, skip_serializing_if = "Option::is_none")]
3780    pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthResponse>,
3781}
3782
3783#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3784pub struct RetentionPolicyAssignment {
3785    pub id: String,
3786    pub r#type: RetentionPolicyAssignmentType,
3787    #[serde(default, skip_serializing_if = "Option::is_none")]
3788    pub retention_policy: Option<RetentionPolicyMini>,
3789    #[serde(default, skip_serializing_if = "Option::is_none")]
3790    pub assigned_to: Option<RetentionPolicyAssignmentAssignedTo>,
3791    #[serde(
3792        default,
3793        skip_serializing_if = "Option::is_none",
3794        deserialize_with = "double_option"
3795    )]
3796    pub filter_fields: Option<Option<Vec<RetentionPolicyAssignmentFilterFields>>>,
3797    #[serde(default, skip_serializing_if = "Option::is_none")]
3798    pub assigned_by: Option<UserMini>,
3799    #[serde(default, skip_serializing_if = "Option::is_none")]
3800    pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
3801    #[serde(default, skip_serializing_if = "Option::is_none")]
3802    pub start_date_field: Option<String>,
3803}
3804
3805#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3806pub struct RetentionPolicyAssignments {
3807    #[serde(default, skip_serializing_if = "Option::is_none")]
3808    pub entries: Option<Vec<RetentionPolicyAssignment>>,
3809    #[serde(default, skip_serializing_if = "Option::is_none")]
3810    pub limit: Option<i64>,
3811    #[serde(
3812        default,
3813        skip_serializing_if = "Option::is_none",
3814        deserialize_with = "double_option"
3815    )]
3816    pub next_marker: Option<Option<String>>,
3817}
3818
3819#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3820#[serde(transparent)]
3821pub struct RetentionPolicyMaxExtensionLengthRequest(pub serde_json::Value);
3822
3823#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3824#[serde(transparent)]
3825pub struct RetentionPolicyMaxExtensionLengthResponse(pub serde_json::Value);
3826
3827#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3828pub struct RoleVariable {
3829    pub r#type: CollaboratorVariableType,
3830    pub variable_type: RoleVariableVariableType,
3831    pub variable_value: FileFullAllowedInviteeRoles,
3832}
3833
3834#[derive(Clone, Debug, PartialEq)]
3835pub enum SearchResultItem {
3836    File(FileFull),
3837    Folder(FolderFull),
3838    WebLink(WebLink),
3839    /// An unrecognized discriminator, retained verbatim (open union).
3840    Unknown(serde_json::Value),
3841}
3842
3843impl Default for SearchResultItem {
3844    fn default() -> Self {
3845        Self::Unknown(Default::default())
3846    }
3847}
3848
3849impl serde::Serialize for SearchResultItem {
3850    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3851        match self {
3852            Self::File(inner) => inner.serialize(serializer),
3853            Self::Folder(inner) => inner.serialize(serializer),
3854            Self::WebLink(inner) => inner.serialize(serializer),
3855            Self::Unknown(inner) => inner.serialize(serializer),
3856        }
3857    }
3858}
3859
3860impl<'de> serde::Deserialize<'de> for SearchResultItem {
3861    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3862        let value = serde_json::Value::deserialize(deserializer)?;
3863        let tag = value
3864            .get("type")
3865            .and_then(serde_json::Value::as_str)
3866            .map(str::to_owned);
3867        match tag.as_deref() {
3868            Some("file") => Ok(Self::File(
3869                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3870            )),
3871            Some("folder") => Ok(Self::Folder(
3872                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3873            )),
3874            Some("web_link") => Ok(Self::WebLink(
3875                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3876            )),
3877            _ => Ok(Self::Unknown(value)),
3878        }
3879    }
3880}
3881
3882#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3883pub struct SearchResults {
3884    #[serde(default, skip_serializing_if = "Option::is_none")]
3885    pub total_count: Option<i64>,
3886    #[serde(default, skip_serializing_if = "Option::is_none")]
3887    pub limit: Option<i64>,
3888    #[serde(default, skip_serializing_if = "Option::is_none")]
3889    pub offset: Option<i64>,
3890    pub r#type: SearchResultsType,
3891    #[serde(default, skip_serializing_if = "Option::is_none")]
3892    pub entries: Option<Vec<SearchResultItem>>,
3893}
3894
3895#[derive(Clone, Debug, PartialEq)]
3896pub enum SearchResultsResponse {
3897    SearchResultsItems(SearchResults),
3898    SearchResultsWithSharedLinks(SearchResultsWithSharedLinks),
3899    /// An unrecognized discriminator, retained verbatim (open union).
3900    Unknown(serde_json::Value),
3901}
3902
3903impl Default for SearchResultsResponse {
3904    fn default() -> Self {
3905        Self::Unknown(Default::default())
3906    }
3907}
3908
3909impl serde::Serialize for SearchResultsResponse {
3910    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3911        match self {
3912            Self::SearchResultsItems(inner) => inner.serialize(serializer),
3913            Self::SearchResultsWithSharedLinks(inner) => inner.serialize(serializer),
3914            Self::Unknown(inner) => inner.serialize(serializer),
3915        }
3916    }
3917}
3918
3919impl<'de> serde::Deserialize<'de> for SearchResultsResponse {
3920    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3921        let value = serde_json::Value::deserialize(deserializer)?;
3922        let tag = value
3923            .get("type")
3924            .and_then(serde_json::Value::as_str)
3925            .map(str::to_owned);
3926        match tag.as_deref() {
3927            Some("search_results_items") => Ok(Self::SearchResultsItems(
3928                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3929            )),
3930            Some("search_results_with_shared_links") => Ok(Self::SearchResultsWithSharedLinks(
3931                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3932            )),
3933            _ => Ok(Self::Unknown(value)),
3934        }
3935    }
3936}
3937
3938#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3939pub struct SearchResultsWithSharedLinks {
3940    #[serde(default, skip_serializing_if = "Option::is_none")]
3941    pub total_count: Option<i64>,
3942    #[serde(default, skip_serializing_if = "Option::is_none")]
3943    pub limit: Option<i64>,
3944    #[serde(default, skip_serializing_if = "Option::is_none")]
3945    pub offset: Option<i64>,
3946    pub r#type: SearchResultsWithSharedLinksType,
3947    #[serde(default, skip_serializing_if = "Option::is_none")]
3948    pub entries: Option<Vec<SearchResultWithSharedLink>>,
3949}
3950
3951#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
3952pub struct SearchResultWithSharedLink {
3953    #[serde(default, skip_serializing_if = "Option::is_none")]
3954    pub accessible_via_shared_link: Option<String>,
3955    #[serde(default, skip_serializing_if = "Option::is_none")]
3956    pub item: Option<SearchResultWithSharedLinkItem>,
3957    #[serde(default, skip_serializing_if = "Option::is_none")]
3958    pub r#type: Option<String>,
3959}
3960
3961#[derive(Clone, Debug, PartialEq)]
3962pub enum SearchResultWithSharedLinkItem {
3963    File(FileFull),
3964    Folder(FolderFull),
3965    WebLink(WebLink),
3966    /// An unrecognized discriminator, retained verbatim (open union).
3967    Unknown(serde_json::Value),
3968}
3969
3970impl Default for SearchResultWithSharedLinkItem {
3971    fn default() -> Self {
3972        Self::Unknown(Default::default())
3973    }
3974}
3975
3976impl serde::Serialize for SearchResultWithSharedLinkItem {
3977    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3978        match self {
3979            Self::File(inner) => inner.serialize(serializer),
3980            Self::Folder(inner) => inner.serialize(serializer),
3981            Self::WebLink(inner) => inner.serialize(serializer),
3982            Self::Unknown(inner) => inner.serialize(serializer),
3983        }
3984    }
3985}
3986
3987impl<'de> serde::Deserialize<'de> for SearchResultWithSharedLinkItem {
3988    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3989        let value = serde_json::Value::deserialize(deserializer)?;
3990        let tag = value
3991            .get("type")
3992            .and_then(serde_json::Value::as_str)
3993            .map(str::to_owned);
3994        match tag.as_deref() {
3995            Some("file") => Ok(Self::File(
3996                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
3997            )),
3998            Some("folder") => Ok(Self::Folder(
3999                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
4000            )),
4001            Some("web_link") => Ok(Self::WebLink(
4002                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
4003            )),
4004            _ => Ok(Self::Unknown(value)),
4005        }
4006    }
4007}
4008
4009#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4010pub struct SessionTerminationMessage {
4011    #[serde(default, skip_serializing_if = "Option::is_none")]
4012    pub message: Option<String>,
4013}
4014
4015#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4016pub struct ShieldInformationBarrier {
4017    #[serde(default, skip_serializing_if = "Option::is_none")]
4018    pub id: Option<String>,
4019    #[serde(default, skip_serializing_if = "Option::is_none")]
4020    pub r#type: Option<ShieldInformationBarrierType>,
4021    #[serde(default, skip_serializing_if = "Option::is_none")]
4022    pub enterprise: Option<EnterpriseBase>,
4023    #[serde(default, skip_serializing_if = "Option::is_none")]
4024    pub status: Option<ShieldInformationBarrierStatus>,
4025    #[serde(default, skip_serializing_if = "Option::is_none")]
4026    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4027    #[serde(default, skip_serializing_if = "Option::is_none")]
4028    pub created_by: Option<UserBase>,
4029    #[serde(default, skip_serializing_if = "Option::is_none")]
4030    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4031    #[serde(default, skip_serializing_if = "Option::is_none")]
4032    pub updated_by: Option<UserBase>,
4033    #[serde(default, skip_serializing_if = "Option::is_none")]
4034    pub enabled_at: Option<chrono::DateTime<chrono::Utc>>,
4035    #[serde(default, skip_serializing_if = "Option::is_none")]
4036    pub enabled_by: Option<UserBase>,
4037}
4038
4039#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4040pub struct ShieldInformationBarrierBase {
4041    #[serde(default, skip_serializing_if = "Option::is_none")]
4042    pub id: Option<String>,
4043    #[serde(default, skip_serializing_if = "Option::is_none")]
4044    pub r#type: Option<ShieldInformationBarrierType>,
4045}
4046
4047#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4048pub struct ShieldInformationBarrierReference {
4049    #[serde(default, skip_serializing_if = "Option::is_none")]
4050    pub shield_information_barrier: Option<ShieldInformationBarrierBase>,
4051}
4052
4053#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4054pub struct ShieldInformationBarrierReport {
4055    #[serde(default, skip_serializing_if = "Option::is_none")]
4056    pub id: Option<String>,
4057    #[serde(default, skip_serializing_if = "Option::is_none")]
4058    pub r#type: Option<ShieldInformationBarrierReportType>,
4059    #[serde(default, skip_serializing_if = "Option::is_none")]
4060    pub shield_information_barrier: Option<ShieldInformationBarrierReference>,
4061    #[serde(default, skip_serializing_if = "Option::is_none")]
4062    pub status: Option<ShieldInformationBarrierReportStatus>,
4063    #[serde(default, skip_serializing_if = "Option::is_none")]
4064    pub details: Option<ShieldInformationBarrierReportDetails>,
4065    #[serde(default, skip_serializing_if = "Option::is_none")]
4066    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4067    #[serde(default, skip_serializing_if = "Option::is_none")]
4068    pub created_by: Option<UserBase>,
4069    #[serde(default, skip_serializing_if = "Option::is_none")]
4070    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4071}
4072
4073#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4074pub struct ShieldInformationBarrierReportBase {
4075    #[serde(default, skip_serializing_if = "Option::is_none")]
4076    pub id: Option<String>,
4077    #[serde(default, skip_serializing_if = "Option::is_none")]
4078    pub r#type: Option<ShieldInformationBarrierReportType>,
4079}
4080
4081#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4082pub struct ShieldInformationBarrierReportDetails {
4083    #[serde(default, skip_serializing_if = "Option::is_none")]
4084    pub details: Option<ShieldInformationBarrierReportDetailsDetails>,
4085}
4086
4087#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4088pub struct ShieldInformationBarrierReports {
4089    #[serde(default, skip_serializing_if = "Option::is_none")]
4090    pub limit: Option<i64>,
4091    #[serde(
4092        default,
4093        skip_serializing_if = "Option::is_none",
4094        deserialize_with = "double_option"
4095    )]
4096    pub next_marker: Option<Option<String>>,
4097    #[serde(default, skip_serializing_if = "Option::is_none")]
4098    pub entries: Option<Vec<ShieldInformationBarrierReport>>,
4099}
4100
4101#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4102pub struct ShieldInformationBarriers {
4103    #[serde(default, skip_serializing_if = "Option::is_none")]
4104    pub limit: Option<i64>,
4105    #[serde(
4106        default,
4107        skip_serializing_if = "Option::is_none",
4108        deserialize_with = "double_option"
4109    )]
4110    pub next_marker: Option<Option<String>>,
4111    #[serde(default, skip_serializing_if = "Option::is_none")]
4112    pub entries: Option<Vec<ShieldInformationBarrier>>,
4113}
4114
4115#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4116pub struct ShieldInformationBarrierSegment {
4117    #[serde(default, skip_serializing_if = "Option::is_none")]
4118    pub id: Option<String>,
4119    #[serde(default, skip_serializing_if = "Option::is_none")]
4120    pub r#type: Option<ShieldInformationBarrierSegmentType>,
4121    #[serde(default, skip_serializing_if = "Option::is_none")]
4122    pub shield_information_barrier: Option<ShieldInformationBarrierBase>,
4123    #[serde(default, skip_serializing_if = "Option::is_none")]
4124    pub name: Option<String>,
4125    #[serde(default, skip_serializing_if = "Option::is_none")]
4126    pub description: Option<String>,
4127    #[serde(default, skip_serializing_if = "Option::is_none")]
4128    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4129    #[serde(default, skip_serializing_if = "Option::is_none")]
4130    pub created_by: Option<UserBase>,
4131    #[serde(default, skip_serializing_if = "Option::is_none")]
4132    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4133    #[serde(default, skip_serializing_if = "Option::is_none")]
4134    pub updated_by: Option<UserBase>,
4135}
4136
4137#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4138pub struct ShieldInformationBarrierSegmentMember {
4139    #[serde(default, skip_serializing_if = "Option::is_none")]
4140    pub id: Option<String>,
4141    #[serde(default, skip_serializing_if = "Option::is_none")]
4142    pub r#type: Option<ShieldInformationBarrierSegmentMemberType>,
4143    #[serde(default, skip_serializing_if = "Option::is_none")]
4144    pub user: Option<UserBase>,
4145    #[serde(default, skip_serializing_if = "Option::is_none")]
4146    pub shield_information_barrier: Option<ShieldInformationBarrierBase>,
4147    #[serde(default, skip_serializing_if = "Option::is_none")]
4148    pub shield_information_barrier_segment:
4149        Option<ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment>,
4150    #[serde(default, skip_serializing_if = "Option::is_none")]
4151    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4152    #[serde(default, skip_serializing_if = "Option::is_none")]
4153    pub created_by: Option<UserBase>,
4154    #[serde(default, skip_serializing_if = "Option::is_none")]
4155    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4156    #[serde(default, skip_serializing_if = "Option::is_none")]
4157    pub updated_by: Option<UserBase>,
4158}
4159
4160#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4161pub struct ShieldInformationBarrierSegmentMemberBase {
4162    #[serde(default, skip_serializing_if = "Option::is_none")]
4163    pub id: Option<String>,
4164    #[serde(default, skip_serializing_if = "Option::is_none")]
4165    pub r#type: Option<ShieldInformationBarrierSegmentMemberType>,
4166}
4167
4168#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4169pub struct ShieldInformationBarrierSegmentMemberMini {
4170    #[serde(default, skip_serializing_if = "Option::is_none")]
4171    pub id: Option<String>,
4172    #[serde(default, skip_serializing_if = "Option::is_none")]
4173    pub r#type: Option<ShieldInformationBarrierSegmentMemberType>,
4174    #[serde(default, skip_serializing_if = "Option::is_none")]
4175    pub user: Option<UserBase>,
4176}
4177
4178#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4179pub struct ShieldInformationBarrierSegmentMembers {
4180    #[serde(default, skip_serializing_if = "Option::is_none")]
4181    pub limit: Option<i64>,
4182    #[serde(
4183        default,
4184        skip_serializing_if = "Option::is_none",
4185        deserialize_with = "double_option"
4186    )]
4187    pub next_marker: Option<Option<String>>,
4188    #[serde(default, skip_serializing_if = "Option::is_none")]
4189    pub entries: Option<Vec<ShieldInformationBarrierSegmentMember>>,
4190}
4191
4192#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4193pub struct ShieldInformationBarrierSegmentRestriction {
4194    #[serde(default, skip_serializing_if = "Option::is_none")]
4195    pub r#type: Option<ShieldInformationBarrierSegmentRestrictionType>,
4196    #[serde(default, skip_serializing_if = "Option::is_none")]
4197    pub id: Option<String>,
4198    pub shield_information_barrier_segment:
4199        ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
4200    pub restricted_segment: ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
4201    #[serde(default, skip_serializing_if = "Option::is_none")]
4202    pub shield_information_barrier: Option<ShieldInformationBarrierBase>,
4203    #[serde(default, skip_serializing_if = "Option::is_none")]
4204    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4205    #[serde(default, skip_serializing_if = "Option::is_none")]
4206    pub created_by: Option<UserBase>,
4207    #[serde(default, skip_serializing_if = "Option::is_none")]
4208    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4209    #[serde(default, skip_serializing_if = "Option::is_none")]
4210    pub updated_by: Option<UserBase>,
4211}
4212
4213#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4214pub struct ShieldInformationBarrierSegmentRestrictionBase {
4215    #[serde(default, skip_serializing_if = "Option::is_none")]
4216    pub r#type: Option<ShieldInformationBarrierSegmentRestrictionType>,
4217    #[serde(default, skip_serializing_if = "Option::is_none")]
4218    pub id: Option<String>,
4219}
4220
4221#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4222pub struct ShieldInformationBarrierSegmentRestrictionMini {
4223    #[serde(default, skip_serializing_if = "Option::is_none")]
4224    pub r#type: Option<ShieldInformationBarrierSegmentRestrictionType>,
4225    #[serde(default, skip_serializing_if = "Option::is_none")]
4226    pub id: Option<String>,
4227    pub shield_information_barrier_segment:
4228        ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
4229    pub restricted_segment: ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
4230}
4231
4232#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4233pub struct ShieldInformationBarrierSegmentRestrictions {
4234    #[serde(default, skip_serializing_if = "Option::is_none")]
4235    pub limit: Option<i64>,
4236    #[serde(
4237        default,
4238        skip_serializing_if = "Option::is_none",
4239        deserialize_with = "double_option"
4240    )]
4241    pub next_marker: Option<Option<String>>,
4242    #[serde(default, skip_serializing_if = "Option::is_none")]
4243    pub entries: Option<Vec<ShieldInformationBarrierSegmentRestriction>>,
4244}
4245
4246#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4247pub struct ShieldInformationBarrierSegments {
4248    #[serde(default, skip_serializing_if = "Option::is_none")]
4249    pub limit: Option<i64>,
4250    #[serde(
4251        default,
4252        skip_serializing_if = "Option::is_none",
4253        deserialize_with = "double_option"
4254    )]
4255    pub next_marker: Option<Option<String>>,
4256    #[serde(default, skip_serializing_if = "Option::is_none")]
4257    pub entries: Option<Vec<ShieldInformationBarrierSegment>>,
4258}
4259
4260#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4261pub struct SignRequest {
4262    #[serde(default, skip_serializing_if = "Option::is_none")]
4263    pub is_document_preparation_needed: Option<bool>,
4264    #[serde(
4265        default,
4266        skip_serializing_if = "Option::is_none",
4267        deserialize_with = "double_option"
4268    )]
4269    pub redirect_url: Option<Option<String>>,
4270    #[serde(
4271        default,
4272        skip_serializing_if = "Option::is_none",
4273        deserialize_with = "double_option"
4274    )]
4275    pub declined_redirect_url: Option<Option<String>>,
4276    #[serde(default, skip_serializing_if = "Option::is_none")]
4277    pub are_text_signatures_enabled: Option<bool>,
4278    #[serde(
4279        default,
4280        skip_serializing_if = "Option::is_none",
4281        deserialize_with = "double_option"
4282    )]
4283    pub email_subject: Option<Option<String>>,
4284    #[serde(
4285        default,
4286        skip_serializing_if = "Option::is_none",
4287        deserialize_with = "double_option"
4288    )]
4289    pub email_message: Option<Option<String>>,
4290    #[serde(default, skip_serializing_if = "Option::is_none")]
4291    pub are_reminders_enabled: Option<bool>,
4292    #[serde(default, skip_serializing_if = "Option::is_none")]
4293    pub name: Option<String>,
4294    #[serde(default, skip_serializing_if = "Option::is_none")]
4295    pub prefill_tags: Option<Vec<SignRequestPrefillTag>>,
4296    #[serde(
4297        default,
4298        skip_serializing_if = "Option::is_none",
4299        deserialize_with = "double_option"
4300    )]
4301    pub days_valid: Option<Option<i64>>,
4302    #[serde(
4303        default,
4304        skip_serializing_if = "Option::is_none",
4305        deserialize_with = "double_option"
4306    )]
4307    pub external_id: Option<Option<String>>,
4308    #[serde(
4309        default,
4310        skip_serializing_if = "Option::is_none",
4311        deserialize_with = "double_option"
4312    )]
4313    pub template_id: Option<Option<String>>,
4314    #[serde(
4315        default,
4316        skip_serializing_if = "Option::is_none",
4317        deserialize_with = "double_option"
4318    )]
4319    pub external_system_name: Option<Option<String>>,
4320    #[serde(
4321        default,
4322        skip_serializing_if = "Option::is_none",
4323        deserialize_with = "double_option"
4324    )]
4325    pub request_flow: Option<Option<String>>,
4326    #[serde(default, skip_serializing_if = "Option::is_none")]
4327    pub r#type: Option<SignRequestType>,
4328    #[serde(default, skip_serializing_if = "Option::is_none")]
4329    pub source_files: Option<Vec<FileBase>>,
4330    #[serde(default, skip_serializing_if = "Option::is_none")]
4331    pub signers: Option<Vec<SignRequestSigner>>,
4332    #[serde(
4333        default,
4334        skip_serializing_if = "Option::is_none",
4335        deserialize_with = "double_option"
4336    )]
4337    pub signature_color: Option<Option<String>>,
4338    #[serde(default, skip_serializing_if = "Option::is_none")]
4339    pub id: Option<String>,
4340    #[serde(
4341        default,
4342        skip_serializing_if = "Option::is_none",
4343        deserialize_with = "double_option"
4344    )]
4345    pub prepare_url: Option<Option<String>>,
4346    #[serde(default, skip_serializing_if = "Option::is_none")]
4347    pub signing_log: Option<FileMini>,
4348    #[serde(default, skip_serializing_if = "Option::is_none")]
4349    pub status: Option<SignRequestStatus>,
4350    #[serde(default, skip_serializing_if = "Option::is_none")]
4351    pub sign_files: Option<SignRequestSignFiles>,
4352    #[serde(
4353        default,
4354        skip_serializing_if = "Option::is_none",
4355        deserialize_with = "double_option"
4356    )]
4357    pub auto_expire_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
4358    #[serde(default, skip_serializing_if = "Option::is_none")]
4359    pub parent_folder: Option<FolderMini>,
4360    #[serde(
4361        default,
4362        skip_serializing_if = "Option::is_none",
4363        deserialize_with = "double_option"
4364    )]
4365    pub collaborator_level: Option<Option<String>>,
4366    #[serde(default, skip_serializing_if = "Option::is_none")]
4367    pub short_id: Option<String>,
4368    #[serde(default, skip_serializing_if = "Option::is_none")]
4369    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4370    #[serde(
4371        default,
4372        skip_serializing_if = "Option::is_none",
4373        deserialize_with = "double_option"
4374    )]
4375    pub finished_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
4376    #[serde(
4377        default,
4378        skip_serializing_if = "Option::is_none",
4379        deserialize_with = "double_option"
4380    )]
4381    pub error_code: Option<Option<String>>,
4382    #[serde(
4383        default,
4384        skip_serializing_if = "Option::is_none",
4385        deserialize_with = "double_option"
4386    )]
4387    pub sender_email: Option<Option<String>>,
4388    #[serde(
4389        default,
4390        skip_serializing_if = "Option::is_none",
4391        deserialize_with = "double_option"
4392    )]
4393    pub sender_id: Option<Option<i64>>,
4394}
4395
4396#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4397pub struct SignRequestBase {
4398    #[serde(default, skip_serializing_if = "Option::is_none")]
4399    pub is_document_preparation_needed: Option<bool>,
4400    #[serde(
4401        default,
4402        skip_serializing_if = "Option::is_none",
4403        deserialize_with = "double_option"
4404    )]
4405    pub redirect_url: Option<Option<String>>,
4406    #[serde(
4407        default,
4408        skip_serializing_if = "Option::is_none",
4409        deserialize_with = "double_option"
4410    )]
4411    pub declined_redirect_url: Option<Option<String>>,
4412    #[serde(default, skip_serializing_if = "Option::is_none")]
4413    pub are_text_signatures_enabled: Option<bool>,
4414    #[serde(
4415        default,
4416        skip_serializing_if = "Option::is_none",
4417        deserialize_with = "double_option"
4418    )]
4419    pub email_subject: Option<Option<String>>,
4420    #[serde(
4421        default,
4422        skip_serializing_if = "Option::is_none",
4423        deserialize_with = "double_option"
4424    )]
4425    pub email_message: Option<Option<String>>,
4426    #[serde(default, skip_serializing_if = "Option::is_none")]
4427    pub are_reminders_enabled: Option<bool>,
4428    #[serde(default, skip_serializing_if = "Option::is_none")]
4429    pub name: Option<String>,
4430    #[serde(default, skip_serializing_if = "Option::is_none")]
4431    pub prefill_tags: Option<Vec<SignRequestPrefillTag>>,
4432    #[serde(
4433        default,
4434        skip_serializing_if = "Option::is_none",
4435        deserialize_with = "double_option"
4436    )]
4437    pub days_valid: Option<Option<i64>>,
4438    #[serde(
4439        default,
4440        skip_serializing_if = "Option::is_none",
4441        deserialize_with = "double_option"
4442    )]
4443    pub external_id: Option<Option<String>>,
4444    #[serde(
4445        default,
4446        skip_serializing_if = "Option::is_none",
4447        deserialize_with = "double_option"
4448    )]
4449    pub template_id: Option<Option<String>>,
4450    #[serde(
4451        default,
4452        skip_serializing_if = "Option::is_none",
4453        deserialize_with = "double_option"
4454    )]
4455    pub external_system_name: Option<Option<String>>,
4456    #[serde(
4457        default,
4458        skip_serializing_if = "Option::is_none",
4459        deserialize_with = "double_option"
4460    )]
4461    pub request_flow: Option<Option<String>>,
4462}
4463
4464#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4465pub struct SignRequestCancelRequest {
4466    #[serde(default, skip_serializing_if = "Option::is_none")]
4467    pub reason: Option<String>,
4468}
4469
4470#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4471pub struct SignRequestCreateRequest {
4472    #[serde(default, skip_serializing_if = "Option::is_none")]
4473    pub is_document_preparation_needed: Option<bool>,
4474    #[serde(
4475        default,
4476        skip_serializing_if = "Option::is_none",
4477        deserialize_with = "double_option"
4478    )]
4479    pub redirect_url: Option<Option<String>>,
4480    #[serde(
4481        default,
4482        skip_serializing_if = "Option::is_none",
4483        deserialize_with = "double_option"
4484    )]
4485    pub declined_redirect_url: Option<Option<String>>,
4486    #[serde(default, skip_serializing_if = "Option::is_none")]
4487    pub are_text_signatures_enabled: Option<bool>,
4488    #[serde(
4489        default,
4490        skip_serializing_if = "Option::is_none",
4491        deserialize_with = "double_option"
4492    )]
4493    pub email_subject: Option<Option<String>>,
4494    #[serde(
4495        default,
4496        skip_serializing_if = "Option::is_none",
4497        deserialize_with = "double_option"
4498    )]
4499    pub email_message: Option<Option<String>>,
4500    #[serde(default, skip_serializing_if = "Option::is_none")]
4501    pub are_reminders_enabled: Option<bool>,
4502    #[serde(default, skip_serializing_if = "Option::is_none")]
4503    pub name: Option<String>,
4504    #[serde(default, skip_serializing_if = "Option::is_none")]
4505    pub prefill_tags: Option<Vec<SignRequestPrefillTag>>,
4506    #[serde(
4507        default,
4508        skip_serializing_if = "Option::is_none",
4509        deserialize_with = "double_option"
4510    )]
4511    pub days_valid: Option<Option<i64>>,
4512    #[serde(
4513        default,
4514        skip_serializing_if = "Option::is_none",
4515        deserialize_with = "double_option"
4516    )]
4517    pub external_id: Option<Option<String>>,
4518    #[serde(
4519        default,
4520        skip_serializing_if = "Option::is_none",
4521        deserialize_with = "double_option"
4522    )]
4523    pub template_id: Option<Option<String>>,
4524    #[serde(
4525        default,
4526        skip_serializing_if = "Option::is_none",
4527        deserialize_with = "double_option"
4528    )]
4529    pub external_system_name: Option<Option<String>>,
4530    #[serde(
4531        default,
4532        skip_serializing_if = "Option::is_none",
4533        deserialize_with = "double_option"
4534    )]
4535    pub request_flow: Option<Option<String>>,
4536    #[serde(
4537        default,
4538        skip_serializing_if = "Option::is_none",
4539        deserialize_with = "double_option"
4540    )]
4541    pub source_files: Option<Option<Vec<FileBase>>>,
4542    #[serde(
4543        default,
4544        skip_serializing_if = "Option::is_none",
4545        deserialize_with = "double_option"
4546    )]
4547    pub signature_color: Option<Option<SignRequestCreateRequestSignatureColor>>,
4548    pub signers: Vec<SignRequestCreateSigner>,
4549    #[serde(default, skip_serializing_if = "Option::is_none")]
4550    pub parent_folder: Option<FolderMini>,
4551}
4552
4553#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4554pub struct SignRequestCreateSigner {
4555    #[serde(
4556        default,
4557        skip_serializing_if = "Option::is_none",
4558        deserialize_with = "double_option"
4559    )]
4560    pub email: Option<Option<String>>,
4561    #[serde(default, skip_serializing_if = "Option::is_none")]
4562    pub role: Option<SignRequestCreateSignerRole>,
4563    #[serde(default, skip_serializing_if = "Option::is_none")]
4564    pub is_in_person: Option<bool>,
4565    #[serde(default, skip_serializing_if = "Option::is_none")]
4566    pub order: Option<i64>,
4567    #[serde(
4568        default,
4569        skip_serializing_if = "Option::is_none",
4570        deserialize_with = "double_option"
4571    )]
4572    pub embed_url_external_user_id: Option<Option<String>>,
4573    #[serde(
4574        default,
4575        skip_serializing_if = "Option::is_none",
4576        deserialize_with = "double_option"
4577    )]
4578    pub redirect_url: Option<Option<String>>,
4579    #[serde(
4580        default,
4581        skip_serializing_if = "Option::is_none",
4582        deserialize_with = "double_option"
4583    )]
4584    pub declined_redirect_url: Option<Option<String>>,
4585    #[serde(
4586        default,
4587        skip_serializing_if = "Option::is_none",
4588        deserialize_with = "double_option"
4589    )]
4590    pub login_required: Option<Option<bool>>,
4591    #[serde(
4592        default,
4593        skip_serializing_if = "Option::is_none",
4594        deserialize_with = "double_option"
4595    )]
4596    pub verification_phone_number: Option<Option<String>>,
4597    #[serde(
4598        default,
4599        skip_serializing_if = "Option::is_none",
4600        deserialize_with = "double_option"
4601    )]
4602    pub password: Option<Option<String>>,
4603    #[serde(
4604        default,
4605        skip_serializing_if = "Option::is_none",
4606        deserialize_with = "double_option"
4607    )]
4608    pub signer_group_id: Option<Option<String>>,
4609    #[serde(
4610        default,
4611        skip_serializing_if = "Option::is_none",
4612        deserialize_with = "double_option"
4613    )]
4614    pub suppress_notifications: Option<Option<bool>>,
4615    #[serde(
4616        default,
4617        skip_serializing_if = "Option::is_none",
4618        deserialize_with = "double_option"
4619    )]
4620    pub language: Option<Option<String>>,
4621}
4622
4623#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4624pub struct SignRequestPrefillTag {
4625    #[serde(
4626        default,
4627        skip_serializing_if = "Option::is_none",
4628        deserialize_with = "double_option"
4629    )]
4630    pub document_tag_id: Option<Option<String>>,
4631    #[serde(
4632        default,
4633        skip_serializing_if = "Option::is_none",
4634        deserialize_with = "double_option"
4635    )]
4636    pub text_value: Option<Option<String>>,
4637    #[serde(
4638        default,
4639        skip_serializing_if = "Option::is_none",
4640        deserialize_with = "double_option"
4641    )]
4642    pub checkbox_value: Option<Option<bool>>,
4643    #[serde(
4644        default,
4645        skip_serializing_if = "Option::is_none",
4646        deserialize_with = "double_option"
4647    )]
4648    pub date_value: Option<Option<chrono::NaiveDate>>,
4649}
4650
4651#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4652pub struct SignRequests {
4653    #[serde(default, skip_serializing_if = "Option::is_none")]
4654    pub limit: Option<i64>,
4655    #[serde(
4656        default,
4657        skip_serializing_if = "Option::is_none",
4658        deserialize_with = "double_option"
4659    )]
4660    pub next_marker: Option<Option<String>>,
4661    #[serde(default, skip_serializing_if = "Option::is_none")]
4662    pub entries: Option<Vec<SignRequest>>,
4663}
4664
4665#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4666pub struct SignRequestSigner {
4667    pub email: Option<String>,
4668    #[serde(default, skip_serializing_if = "Option::is_none")]
4669    pub role: Option<SignRequestCreateSignerRole>,
4670    #[serde(default, skip_serializing_if = "Option::is_none")]
4671    pub is_in_person: Option<bool>,
4672    #[serde(default, skip_serializing_if = "Option::is_none")]
4673    pub order: Option<i64>,
4674    #[serde(
4675        default,
4676        skip_serializing_if = "Option::is_none",
4677        deserialize_with = "double_option"
4678    )]
4679    pub embed_url_external_user_id: Option<Option<String>>,
4680    #[serde(
4681        default,
4682        skip_serializing_if = "Option::is_none",
4683        deserialize_with = "double_option"
4684    )]
4685    pub redirect_url: Option<Option<String>>,
4686    #[serde(
4687        default,
4688        skip_serializing_if = "Option::is_none",
4689        deserialize_with = "double_option"
4690    )]
4691    pub declined_redirect_url: Option<Option<String>>,
4692    #[serde(
4693        default,
4694        skip_serializing_if = "Option::is_none",
4695        deserialize_with = "double_option"
4696    )]
4697    pub login_required: Option<Option<bool>>,
4698    #[serde(
4699        default,
4700        skip_serializing_if = "Option::is_none",
4701        deserialize_with = "double_option"
4702    )]
4703    pub verification_phone_number: Option<Option<String>>,
4704    #[serde(
4705        default,
4706        skip_serializing_if = "Option::is_none",
4707        deserialize_with = "double_option"
4708    )]
4709    pub password: Option<Option<String>>,
4710    #[serde(
4711        default,
4712        skip_serializing_if = "Option::is_none",
4713        deserialize_with = "double_option"
4714    )]
4715    pub signer_group_id: Option<Option<String>>,
4716    #[serde(
4717        default,
4718        skip_serializing_if = "Option::is_none",
4719        deserialize_with = "double_option"
4720    )]
4721    pub suppress_notifications: Option<Option<bool>>,
4722    #[serde(
4723        default,
4724        skip_serializing_if = "Option::is_none",
4725        deserialize_with = "double_option"
4726    )]
4727    pub language: Option<Option<String>>,
4728    #[serde(default, skip_serializing_if = "Option::is_none")]
4729    pub has_viewed_document: Option<bool>,
4730    #[serde(
4731        default,
4732        skip_serializing_if = "Option::is_none",
4733        deserialize_with = "double_option"
4734    )]
4735    pub signer_decision: Option<Option<SignRequestSignerSignerDecision>>,
4736    #[serde(default, skip_serializing_if = "Option::is_none")]
4737    pub inputs: Option<Vec<SignRequestSignerInput>>,
4738    #[serde(
4739        default,
4740        skip_serializing_if = "Option::is_none",
4741        deserialize_with = "double_option"
4742    )]
4743    pub embed_url: Option<Option<String>>,
4744    #[serde(
4745        default,
4746        skip_serializing_if = "Option::is_none",
4747        deserialize_with = "double_option"
4748    )]
4749    pub iframeable_embed_url: Option<Option<String>>,
4750    #[serde(
4751        default,
4752        skip_serializing_if = "Option::is_none",
4753        deserialize_with = "double_option"
4754    )]
4755    pub attachments: Option<Option<Vec<SignRequestSignerAttachment>>>,
4756}
4757
4758#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4759pub struct SignRequestSignerAttachment {
4760    #[serde(
4761        default,
4762        skip_serializing_if = "Option::is_none",
4763        deserialize_with = "double_option"
4764    )]
4765    pub id: Option<Option<String>>,
4766    #[serde(
4767        default,
4768        skip_serializing_if = "Option::is_none",
4769        deserialize_with = "double_option"
4770    )]
4771    pub name: Option<Option<String>>,
4772}
4773
4774#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4775pub struct SignRequestSignerInput {
4776    #[serde(
4777        default,
4778        skip_serializing_if = "Option::is_none",
4779        deserialize_with = "double_option"
4780    )]
4781    pub document_tag_id: Option<Option<String>>,
4782    #[serde(
4783        default,
4784        skip_serializing_if = "Option::is_none",
4785        deserialize_with = "double_option"
4786    )]
4787    pub text_value: Option<Option<String>>,
4788    #[serde(
4789        default,
4790        skip_serializing_if = "Option::is_none",
4791        deserialize_with = "double_option"
4792    )]
4793    pub checkbox_value: Option<Option<bool>>,
4794    #[serde(
4795        default,
4796        skip_serializing_if = "Option::is_none",
4797        deserialize_with = "double_option"
4798    )]
4799    pub date_value: Option<Option<chrono::NaiveDate>>,
4800    #[serde(default, skip_serializing_if = "Option::is_none")]
4801    pub r#type: Option<SignRequestSignerInputType>,
4802    #[serde(default, skip_serializing_if = "Option::is_none")]
4803    pub content_type: Option<SignRequestSignerInputContentType>,
4804    pub page_index: i64,
4805    #[serde(default, skip_serializing_if = "Option::is_none")]
4806    pub read_only: Option<bool>,
4807    #[serde(
4808        default,
4809        skip_serializing_if = "Option::is_none",
4810        deserialize_with = "double_option"
4811    )]
4812    pub validation: Option<Option<SignRequestSignerInputValidation>>,
4813    #[serde(
4814        default,
4815        skip_serializing_if = "Option::is_none",
4816        deserialize_with = "double_option"
4817    )]
4818    pub reason: Option<Option<String>>,
4819    #[serde(
4820        default,
4821        skip_serializing_if = "Option::is_none",
4822        deserialize_with = "double_option"
4823    )]
4824    pub is_validated: Option<Option<bool>>,
4825}
4826
4827#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4828pub struct SignRequestSignerInputCustomValidation {
4829    pub validation_type: SignRequestSignerInputCustomValidationValidationType,
4830    pub custom_regex: Option<String>,
4831    pub custom_error_message: Option<String>,
4832}
4833
4834#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4835pub struct SignRequestSignerInputDateAsiaValidation {
4836    #[serde(default, skip_serializing_if = "Option::is_none")]
4837    pub validation_type: Option<SignRequestSignerInputDateAsiaValidationValidationType>,
4838}
4839
4840#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4841pub struct SignRequestSignerInputDateEUValidation {
4842    #[serde(default, skip_serializing_if = "Option::is_none")]
4843    pub validation_type: Option<SignRequestSignerInputDateEUValidationValidationType>,
4844}
4845
4846#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4847pub struct SignRequestSignerInputDateISOValidation {
4848    #[serde(default, skip_serializing_if = "Option::is_none")]
4849    pub validation_type: Option<SignRequestSignerInputDateISOValidationValidationType>,
4850}
4851
4852#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4853pub struct SignRequestSignerInputDateUSValidation {
4854    #[serde(default, skip_serializing_if = "Option::is_none")]
4855    pub validation_type: Option<SignRequestSignerInputDateUSValidationValidationType>,
4856}
4857
4858#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4859pub struct SignRequestSignerInputEmailValidation {
4860    pub validation_type: SignRequestSignerInputEmailValidationValidationType,
4861}
4862
4863#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4864pub struct SignRequestSignerInputNumberWithCommaValidation {
4865    #[serde(default, skip_serializing_if = "Option::is_none")]
4866    pub validation_type: Option<SignRequestSignerInputNumberWithCommaValidationValidationType>,
4867}
4868
4869#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4870pub struct SignRequestSignerInputNumberWithPeriodValidation {
4871    #[serde(default, skip_serializing_if = "Option::is_none")]
4872    pub validation_type: Option<SignRequestSignerInputNumberWithPeriodValidationValidationType>,
4873}
4874
4875#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4876pub struct SignRequestSignerInputSSNValidation {
4877    pub validation_type: SignRequestSignerInputSSNValidationValidationType,
4878}
4879
4880#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4881#[serde(transparent)]
4882pub struct SignRequestSignerInputValidation(pub serde_json::Value);
4883
4884#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4885pub struct SignRequestSignerInputZIP4Validation {
4886    pub validation_type: SignRequestSignerInputZIP4ValidationValidationType,
4887}
4888
4889#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4890pub struct SignRequestSignerInputZIPValidation {
4891    pub validation_type: SignRequestSignerInputZIPValidationValidationType,
4892}
4893
4894#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4895pub struct SignTemplate {
4896    #[serde(default, skip_serializing_if = "Option::is_none")]
4897    pub r#type: Option<SignTemplateType>,
4898    #[serde(default, skip_serializing_if = "Option::is_none")]
4899    pub id: Option<String>,
4900    #[serde(
4901        default,
4902        skip_serializing_if = "Option::is_none",
4903        deserialize_with = "double_option"
4904    )]
4905    pub name: Option<Option<String>>,
4906    #[serde(
4907        default,
4908        skip_serializing_if = "Option::is_none",
4909        deserialize_with = "double_option"
4910    )]
4911    pub email_subject: Option<Option<String>>,
4912    #[serde(
4913        default,
4914        skip_serializing_if = "Option::is_none",
4915        deserialize_with = "double_option"
4916    )]
4917    pub email_message: Option<Option<String>>,
4918    #[serde(
4919        default,
4920        skip_serializing_if = "Option::is_none",
4921        deserialize_with = "double_option"
4922    )]
4923    pub days_valid: Option<Option<i64>>,
4924    #[serde(default, skip_serializing_if = "Option::is_none")]
4925    pub parent_folder: Option<FolderMini>,
4926    #[serde(default, skip_serializing_if = "Option::is_none")]
4927    pub source_files: Option<Vec<FileMini>>,
4928    #[serde(default, skip_serializing_if = "Option::is_none")]
4929    pub are_fields_locked: Option<bool>,
4930    #[serde(default, skip_serializing_if = "Option::is_none")]
4931    pub are_options_locked: Option<bool>,
4932    #[serde(default, skip_serializing_if = "Option::is_none")]
4933    pub are_recipients_locked: Option<bool>,
4934    #[serde(default, skip_serializing_if = "Option::is_none")]
4935    pub are_email_settings_locked: Option<bool>,
4936    #[serde(default, skip_serializing_if = "Option::is_none")]
4937    pub are_files_locked: Option<bool>,
4938    #[serde(default, skip_serializing_if = "Option::is_none")]
4939    pub signers: Option<Vec<TemplateSigner>>,
4940    #[serde(default, skip_serializing_if = "Option::is_none")]
4941    pub additional_info: Option<SignTemplateAdditionalInfo>,
4942    #[serde(
4943        default,
4944        skip_serializing_if = "Option::is_none",
4945        deserialize_with = "double_option"
4946    )]
4947    pub ready_sign_link: Option<Option<SignTemplateReadySignLink>>,
4948    #[serde(
4949        default,
4950        skip_serializing_if = "Option::is_none",
4951        deserialize_with = "double_option"
4952    )]
4953    pub custom_branding: Option<Option<SignTemplateCustomBranding>>,
4954    #[serde(
4955        default,
4956        skip_serializing_if = "Option::is_none",
4957        deserialize_with = "double_option"
4958    )]
4959    pub request_flow: Option<Option<String>>,
4960}
4961
4962#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4963pub struct SignTemplates {
4964    #[serde(default, skip_serializing_if = "Option::is_none")]
4965    pub limit: Option<i64>,
4966    #[serde(
4967        default,
4968        skip_serializing_if = "Option::is_none",
4969        deserialize_with = "double_option"
4970    )]
4971    pub next_marker: Option<Option<String>>,
4972    #[serde(
4973        default,
4974        skip_serializing_if = "Option::is_none",
4975        deserialize_with = "double_option"
4976    )]
4977    pub prev_marker: Option<Option<String>>,
4978    #[serde(default, skip_serializing_if = "Option::is_none")]
4979    pub entries: Option<Vec<SignTemplate>>,
4980}
4981
4982#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4983#[serde(transparent)]
4984pub struct SkillCard(pub serde_json::Value);
4985
4986#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
4987pub struct SkillCardsMetadata {
4988    #[serde(rename = "$canEdit", default, skip_serializing_if = "Option::is_none")]
4989    pub can_edit: Option<bool>,
4990    #[serde(rename = "$id", default, skip_serializing_if = "Option::is_none")]
4991    pub id: Option<String>,
4992    #[serde(rename = "$parent", default, skip_serializing_if = "Option::is_none")]
4993    pub parent: Option<String>,
4994    #[serde(rename = "$scope", default, skip_serializing_if = "Option::is_none")]
4995    pub scope: Option<String>,
4996    #[serde(rename = "$template", default, skip_serializing_if = "Option::is_none")]
4997    pub template: Option<String>,
4998    #[serde(rename = "$type", default, skip_serializing_if = "Option::is_none")]
4999    pub r#type: Option<String>,
5000    #[serde(
5001        rename = "$typeVersion",
5002        default,
5003        skip_serializing_if = "Option::is_none"
5004    )]
5005    pub type_version: Option<i64>,
5006    #[serde(rename = "$version", default, skip_serializing_if = "Option::is_none")]
5007    pub version: Option<i64>,
5008    #[serde(default, skip_serializing_if = "Option::is_none")]
5009    pub cards: Option<Vec<SkillCard>>,
5010}
5011
5012#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5013pub struct StatusSkillCard {
5014    #[serde(default, skip_serializing_if = "Option::is_none")]
5015    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5016    pub r#type: KeywordSkillCardType,
5017    pub skill_card_type: StatusSkillCardSkillCardType,
5018    #[serde(default, skip_serializing_if = "Option::is_none")]
5019    pub skill_card_title: Option<KeywordSkillCardSkillCardTitle>,
5020    pub status: StatusSkillCardStatus,
5021    pub skill: KeywordSkillCardSkill,
5022    pub invocation: KeywordSkillCardInvocation,
5023}
5024
5025#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5026pub struct StoragePolicies {
5027    #[serde(default, skip_serializing_if = "Option::is_none")]
5028    pub limit: Option<i64>,
5029    #[serde(
5030        default,
5031        skip_serializing_if = "Option::is_none",
5032        deserialize_with = "double_option"
5033    )]
5034    pub next_marker: Option<Option<String>>,
5035    #[serde(
5036        default,
5037        skip_serializing_if = "Option::is_none",
5038        deserialize_with = "double_option"
5039    )]
5040    pub prev_marker: Option<Option<String>>,
5041    #[serde(default, skip_serializing_if = "Option::is_none")]
5042    pub entries: Option<Vec<StoragePolicy>>,
5043}
5044
5045#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5046pub struct StoragePolicy {
5047    pub id: String,
5048    pub r#type: StoragePolicyType,
5049    #[serde(default, skip_serializing_if = "Option::is_none")]
5050    pub name: Option<String>,
5051}
5052
5053#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5054pub struct StoragePolicyMini {
5055    pub id: String,
5056    pub r#type: StoragePolicyType,
5057}
5058
5059#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5060pub struct StoragePolicyAssignment {
5061    pub id: String,
5062    pub r#type: StoragePolicyAssignmentType,
5063    #[serde(default, skip_serializing_if = "Option::is_none")]
5064    pub storage_policy: Option<StoragePolicyMini>,
5065    #[serde(default, skip_serializing_if = "Option::is_none")]
5066    pub assigned_to: Option<CommentItem>,
5067}
5068
5069#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5070pub struct StoragePolicyAssignments {
5071    #[serde(default, skip_serializing_if = "Option::is_none")]
5072    pub limit: Option<i64>,
5073    #[serde(
5074        default,
5075        skip_serializing_if = "Option::is_none",
5076        deserialize_with = "double_option"
5077    )]
5078    pub next_marker: Option<Option<String>>,
5079    #[serde(
5080        default,
5081        skip_serializing_if = "Option::is_none",
5082        deserialize_with = "double_option"
5083    )]
5084    pub prev_marker: Option<Option<String>>,
5085    #[serde(default, skip_serializing_if = "Option::is_none")]
5086    pub entries: Option<Vec<StoragePolicyAssignment>>,
5087}
5088
5089#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5090pub struct Task {
5091    #[serde(default, skip_serializing_if = "Option::is_none")]
5092    pub id: Option<String>,
5093    #[serde(default, skip_serializing_if = "Option::is_none")]
5094    pub r#type: Option<TaskType>,
5095    #[serde(default, skip_serializing_if = "Option::is_none")]
5096    pub item: Option<FileMini>,
5097    #[serde(default, skip_serializing_if = "Option::is_none")]
5098    pub due_at: Option<chrono::DateTime<chrono::Utc>>,
5099    #[serde(default, skip_serializing_if = "Option::is_none")]
5100    pub action: Option<TaskAction>,
5101    #[serde(default, skip_serializing_if = "Option::is_none")]
5102    pub message: Option<String>,
5103    #[serde(default, skip_serializing_if = "Option::is_none")]
5104    pub task_assignment_collection: Option<TaskAssignments>,
5105    #[serde(default, skip_serializing_if = "Option::is_none")]
5106    pub is_completed: Option<bool>,
5107    #[serde(default, skip_serializing_if = "Option::is_none")]
5108    pub created_by: Option<UserMini>,
5109    #[serde(default, skip_serializing_if = "Option::is_none")]
5110    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5111    #[serde(default, skip_serializing_if = "Option::is_none")]
5112    pub completion_rule: Option<TaskCompletionRule>,
5113}
5114
5115#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5116pub struct TaskAssignment {
5117    #[serde(default, skip_serializing_if = "Option::is_none")]
5118    pub id: Option<String>,
5119    #[serde(default, skip_serializing_if = "Option::is_none")]
5120    pub r#type: Option<TaskAssignmentType>,
5121    #[serde(default, skip_serializing_if = "Option::is_none")]
5122    pub item: Option<FileMini>,
5123    #[serde(default, skip_serializing_if = "Option::is_none")]
5124    pub assigned_to: Option<UserMini>,
5125    #[serde(default, skip_serializing_if = "Option::is_none")]
5126    pub message: Option<String>,
5127    #[serde(default, skip_serializing_if = "Option::is_none")]
5128    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
5129    #[serde(default, skip_serializing_if = "Option::is_none")]
5130    pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
5131    #[serde(default, skip_serializing_if = "Option::is_none")]
5132    pub reminded_at: Option<chrono::DateTime<chrono::Utc>>,
5133    #[serde(default, skip_serializing_if = "Option::is_none")]
5134    pub resolution_state: Option<TaskAssignmentResolutionState>,
5135    #[serde(default, skip_serializing_if = "Option::is_none")]
5136    pub assigned_by: Option<UserMini>,
5137}
5138
5139#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5140pub struct TaskAssignments {
5141    #[serde(default, skip_serializing_if = "Option::is_none")]
5142    pub total_count: Option<i64>,
5143    #[serde(default, skip_serializing_if = "Option::is_none")]
5144    pub entries: Option<Vec<TaskAssignment>>,
5145}
5146
5147#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5148pub struct Tasks {
5149    #[serde(default, skip_serializing_if = "Option::is_none")]
5150    pub total_count: Option<i64>,
5151    #[serde(default, skip_serializing_if = "Option::is_none")]
5152    pub entries: Option<Vec<Task>>,
5153}
5154
5155#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5156pub struct TemplateSigner {
5157    #[serde(default, skip_serializing_if = "Option::is_none")]
5158    pub inputs: Option<Vec<TemplateSignerInput>>,
5159    #[serde(
5160        default,
5161        skip_serializing_if = "Option::is_none",
5162        deserialize_with = "double_option"
5163    )]
5164    pub email: Option<Option<String>>,
5165    #[serde(default, skip_serializing_if = "Option::is_none")]
5166    pub role: Option<SignRequestCreateSignerRole>,
5167    #[serde(default, skip_serializing_if = "Option::is_none")]
5168    pub is_in_person: Option<bool>,
5169    #[serde(default, skip_serializing_if = "Option::is_none")]
5170    pub order: Option<i64>,
5171    #[serde(
5172        default,
5173        skip_serializing_if = "Option::is_none",
5174        deserialize_with = "double_option"
5175    )]
5176    pub signer_group_id: Option<Option<String>>,
5177    #[serde(
5178        default,
5179        skip_serializing_if = "Option::is_none",
5180        deserialize_with = "double_option"
5181    )]
5182    pub label: Option<Option<String>>,
5183    #[serde(default, skip_serializing_if = "Option::is_none")]
5184    pub public_id: Option<String>,
5185    #[serde(
5186        default,
5187        skip_serializing_if = "Option::is_none",
5188        deserialize_with = "double_option"
5189    )]
5190    pub is_password_required: Option<Option<bool>>,
5191    #[serde(
5192        default,
5193        skip_serializing_if = "Option::is_none",
5194        deserialize_with = "double_option"
5195    )]
5196    pub is_phone_number_required: Option<Option<bool>>,
5197    #[serde(
5198        default,
5199        skip_serializing_if = "Option::is_none",
5200        deserialize_with = "double_option"
5201    )]
5202    pub login_required: Option<Option<bool>>,
5203}
5204
5205#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5206pub struct TemplateSignerInput {
5207    #[serde(
5208        default,
5209        skip_serializing_if = "Option::is_none",
5210        deserialize_with = "double_option"
5211    )]
5212    pub document_tag_id: Option<Option<String>>,
5213    #[serde(
5214        default,
5215        skip_serializing_if = "Option::is_none",
5216        deserialize_with = "double_option"
5217    )]
5218    pub text_value: Option<Option<String>>,
5219    #[serde(
5220        default,
5221        skip_serializing_if = "Option::is_none",
5222        deserialize_with = "double_option"
5223    )]
5224    pub checkbox_value: Option<Option<bool>>,
5225    #[serde(
5226        default,
5227        skip_serializing_if = "Option::is_none",
5228        deserialize_with = "double_option"
5229    )]
5230    pub date_value: Option<Option<chrono::NaiveDate>>,
5231    #[serde(default, skip_serializing_if = "Option::is_none")]
5232    pub r#type: Option<TemplateSignerInputType>,
5233    #[serde(default, skip_serializing_if = "Option::is_none")]
5234    pub content_type: Option<SignRequestSignerInputContentType>,
5235    #[serde(default, skip_serializing_if = "Option::is_none")]
5236    pub is_required: Option<bool>,
5237    pub page_index: i64,
5238    #[serde(
5239        default,
5240        skip_serializing_if = "Option::is_none",
5241        deserialize_with = "double_option"
5242    )]
5243    pub document_id: Option<Option<String>>,
5244    #[serde(
5245        default,
5246        skip_serializing_if = "Option::is_none",
5247        deserialize_with = "double_option"
5248    )]
5249    pub dropdown_choices: Option<Option<Vec<String>>>,
5250    #[serde(
5251        default,
5252        skip_serializing_if = "Option::is_none",
5253        deserialize_with = "double_option"
5254    )]
5255    pub group_id: Option<Option<String>>,
5256    #[serde(default, skip_serializing_if = "Option::is_none")]
5257    pub coordinates: Option<TemplateSignerInputCoordinates>,
5258    #[serde(default, skip_serializing_if = "Option::is_none")]
5259    pub dimensions: Option<TemplateSignerInputDimensions>,
5260    #[serde(
5261        default,
5262        skip_serializing_if = "Option::is_none",
5263        deserialize_with = "double_option"
5264    )]
5265    pub label: Option<Option<String>>,
5266    #[serde(default, skip_serializing_if = "Option::is_none")]
5267    pub read_only: Option<bool>,
5268    #[serde(
5269        default,
5270        skip_serializing_if = "Option::is_none",
5271        deserialize_with = "double_option"
5272    )]
5273    pub validation: Option<Option<SignRequestSignerInputValidation>>,
5274}
5275
5276#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5277pub struct TermsOfService {
5278    pub id: String,
5279    pub r#type: TermsOfServiceType,
5280    #[serde(default, skip_serializing_if = "Option::is_none")]
5281    pub status: Option<TermsOfServiceStatus>,
5282    #[serde(default, skip_serializing_if = "Option::is_none")]
5283    pub enterprise: Option<CollaborationAllowlistEntryEnterprise>,
5284    #[serde(default, skip_serializing_if = "Option::is_none")]
5285    pub tos_type: Option<TermsOfServiceTosType>,
5286    #[serde(default, skip_serializing_if = "Option::is_none")]
5287    pub text: Option<String>,
5288    #[serde(default, skip_serializing_if = "Option::is_none")]
5289    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5290    #[serde(default, skip_serializing_if = "Option::is_none")]
5291    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
5292}
5293
5294#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5295pub struct TermsOfServiceBase {
5296    pub id: String,
5297    pub r#type: TermsOfServiceType,
5298}
5299
5300#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5301pub struct TermsOfServices {
5302    #[serde(default, skip_serializing_if = "Option::is_none")]
5303    pub total_count: Option<i64>,
5304    #[serde(default, skip_serializing_if = "Option::is_none")]
5305    pub entries: Option<Vec<TermsOfService>>,
5306}
5307
5308#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5309pub struct TermsOfServiceUserStatus {
5310    pub id: String,
5311    pub r#type: TermsOfServiceUserStatusType,
5312    #[serde(default, skip_serializing_if = "Option::is_none")]
5313    pub tos: Option<TermsOfServiceBase>,
5314    #[serde(default, skip_serializing_if = "Option::is_none")]
5315    pub user: Option<UserMini>,
5316    #[serde(default, skip_serializing_if = "Option::is_none")]
5317    pub is_accepted: Option<bool>,
5318    #[serde(default, skip_serializing_if = "Option::is_none")]
5319    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5320    #[serde(default, skip_serializing_if = "Option::is_none")]
5321    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
5322}
5323
5324#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5325pub struct TermsOfServiceUserStatuses {
5326    #[serde(default, skip_serializing_if = "Option::is_none")]
5327    pub total_count: Option<i64>,
5328    #[serde(default, skip_serializing_if = "Option::is_none")]
5329    pub entries: Option<Vec<TermsOfServiceUserStatus>>,
5330}
5331
5332#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5333pub struct TimelineSkillCard {
5334    #[serde(default, skip_serializing_if = "Option::is_none")]
5335    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5336    pub r#type: KeywordSkillCardType,
5337    pub skill_card_type: TimelineSkillCardSkillCardType,
5338    #[serde(default, skip_serializing_if = "Option::is_none")]
5339    pub skill_card_title: Option<KeywordSkillCardSkillCardTitle>,
5340    pub skill: KeywordSkillCardSkill,
5341    pub invocation: KeywordSkillCardInvocation,
5342    #[serde(default, skip_serializing_if = "Option::is_none")]
5343    pub duration: Option<i64>,
5344    pub entries: Vec<TimelineSkillCardEntries>,
5345}
5346
5347#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5348pub struct TrackingCode {
5349    #[serde(default, skip_serializing_if = "Option::is_none")]
5350    pub r#type: Option<TrackingCodeType>,
5351    #[serde(default, skip_serializing_if = "Option::is_none")]
5352    pub name: Option<String>,
5353    #[serde(default, skip_serializing_if = "Option::is_none")]
5354    pub value: Option<String>,
5355}
5356
5357#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5358pub struct TranscriptSkillCard {
5359    #[serde(default, skip_serializing_if = "Option::is_none")]
5360    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5361    pub r#type: KeywordSkillCardType,
5362    pub skill_card_type: TranscriptSkillCardSkillCardType,
5363    #[serde(default, skip_serializing_if = "Option::is_none")]
5364    pub skill_card_title: Option<KeywordSkillCardSkillCardTitle>,
5365    pub skill: KeywordSkillCardSkill,
5366    pub invocation: KeywordSkillCardInvocation,
5367    #[serde(default, skip_serializing_if = "Option::is_none")]
5368    pub duration: Option<i64>,
5369    pub entries: Vec<TranscriptSkillCardEntries>,
5370}
5371
5372#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5373pub struct TrashFile {
5374    pub id: String,
5375    #[serde(
5376        default,
5377        skip_serializing_if = "Option::is_none",
5378        deserialize_with = "double_option"
5379    )]
5380    pub etag: Option<Option<String>>,
5381    pub r#type: AiCitationType,
5382    pub sequence_id: String,
5383    #[serde(default, skip_serializing_if = "Option::is_none")]
5384    pub name: Option<String>,
5385    pub sha1: String,
5386    #[serde(default, skip_serializing_if = "Option::is_none")]
5387    pub file_version: Option<FileVersionMini>,
5388    pub description: String,
5389    pub size: i64,
5390    pub path_collection: TrashFilePathCollection,
5391    pub created_at: chrono::DateTime<chrono::Utc>,
5392    pub modified_at: chrono::DateTime<chrono::Utc>,
5393    #[serde(
5394        default,
5395        skip_serializing_if = "Option::is_none",
5396        deserialize_with = "double_option"
5397    )]
5398    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5399    #[serde(
5400        default,
5401        skip_serializing_if = "Option::is_none",
5402        deserialize_with = "double_option"
5403    )]
5404    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5405    #[serde(
5406        default,
5407        skip_serializing_if = "Option::is_none",
5408        deserialize_with = "double_option"
5409    )]
5410    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5411    #[serde(
5412        default,
5413        skip_serializing_if = "Option::is_none",
5414        deserialize_with = "double_option"
5415    )]
5416    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5417    #[serde(default, skip_serializing_if = "Option::is_none")]
5418    pub created_by: Option<UserMini>,
5419    pub modified_by: UserMini,
5420    pub owned_by: UserMini,
5421    #[serde(
5422        default,
5423        skip_serializing_if = "Option::is_none",
5424        deserialize_with = "double_option"
5425    )]
5426    pub shared_link: Option<Option<String>>,
5427    #[serde(
5428        default,
5429        skip_serializing_if = "Option::is_none",
5430        deserialize_with = "double_option"
5431    )]
5432    pub parent: Option<Option<FolderMini>>,
5433    pub item_status: FileItemStatus,
5434}
5435
5436#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5437pub struct TrashFileRestored {
5438    pub id: String,
5439    #[serde(
5440        default,
5441        skip_serializing_if = "Option::is_none",
5442        deserialize_with = "double_option"
5443    )]
5444    pub etag: Option<Option<String>>,
5445    pub r#type: AiCitationType,
5446    pub sequence_id: String,
5447    #[serde(default, skip_serializing_if = "Option::is_none")]
5448    pub name: Option<String>,
5449    pub sha1: String,
5450    #[serde(default, skip_serializing_if = "Option::is_none")]
5451    pub file_version: Option<FileVersionMini>,
5452    pub description: String,
5453    pub size: i64,
5454    pub path_collection: FilePathCollection,
5455    pub created_at: chrono::DateTime<chrono::Utc>,
5456    pub modified_at: chrono::DateTime<chrono::Utc>,
5457    #[serde(
5458        default,
5459        skip_serializing_if = "Option::is_none",
5460        deserialize_with = "double_option"
5461    )]
5462    pub trashed_at: Option<Option<String>>,
5463    #[serde(
5464        default,
5465        skip_serializing_if = "Option::is_none",
5466        deserialize_with = "double_option"
5467    )]
5468    pub purged_at: Option<Option<String>>,
5469    #[serde(
5470        default,
5471        skip_serializing_if = "Option::is_none",
5472        deserialize_with = "double_option"
5473    )]
5474    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5475    #[serde(
5476        default,
5477        skip_serializing_if = "Option::is_none",
5478        deserialize_with = "double_option"
5479    )]
5480    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5481    #[serde(default, skip_serializing_if = "Option::is_none")]
5482    pub created_by: Option<UserMini>,
5483    pub modified_by: UserMini,
5484    pub owned_by: UserMini,
5485    #[serde(
5486        default,
5487        skip_serializing_if = "Option::is_none",
5488        deserialize_with = "double_option"
5489    )]
5490    pub shared_link: Option<Option<String>>,
5491    #[serde(
5492        default,
5493        skip_serializing_if = "Option::is_none",
5494        deserialize_with = "double_option"
5495    )]
5496    pub parent: Option<Option<FolderMini>>,
5497    pub item_status: FileItemStatus,
5498}
5499
5500#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5501pub struct TrashFolder {
5502    pub id: String,
5503    #[serde(
5504        default,
5505        skip_serializing_if = "Option::is_none",
5506        deserialize_with = "double_option"
5507    )]
5508    pub etag: Option<Option<String>>,
5509    pub r#type: FolderType,
5510    #[serde(default, skip_serializing_if = "Option::is_none")]
5511    pub sequence_id: Option<String>,
5512    pub name: String,
5513    #[serde(
5514        default,
5515        skip_serializing_if = "Option::is_none",
5516        deserialize_with = "double_option"
5517    )]
5518    pub created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5519    #[serde(
5520        default,
5521        skip_serializing_if = "Option::is_none",
5522        deserialize_with = "double_option"
5523    )]
5524    pub modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5525    pub description: String,
5526    pub size: i64,
5527    pub path_collection: TrashFilePathCollection,
5528    pub created_by: UserMini,
5529    pub modified_by: UserMini,
5530    #[serde(
5531        default,
5532        skip_serializing_if = "Option::is_none",
5533        deserialize_with = "double_option"
5534    )]
5535    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5536    #[serde(
5537        default,
5538        skip_serializing_if = "Option::is_none",
5539        deserialize_with = "double_option"
5540    )]
5541    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5542    #[serde(
5543        default,
5544        skip_serializing_if = "Option::is_none",
5545        deserialize_with = "double_option"
5546    )]
5547    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5548    #[serde(
5549        default,
5550        skip_serializing_if = "Option::is_none",
5551        deserialize_with = "double_option"
5552    )]
5553    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5554    pub owned_by: UserMini,
5555    #[serde(
5556        default,
5557        skip_serializing_if = "Option::is_none",
5558        deserialize_with = "double_option"
5559    )]
5560    pub shared_link: Option<Option<String>>,
5561    #[serde(
5562        default,
5563        skip_serializing_if = "Option::is_none",
5564        deserialize_with = "double_option"
5565    )]
5566    pub folder_upload_email: Option<Option<String>>,
5567    #[serde(
5568        default,
5569        skip_serializing_if = "Option::is_none",
5570        deserialize_with = "double_option"
5571    )]
5572    pub parent: Option<Option<FolderMini>>,
5573    pub item_status: FileItemStatus,
5574}
5575
5576#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5577pub struct TrashFolderRestored {
5578    #[serde(default, skip_serializing_if = "Option::is_none")]
5579    pub id: Option<String>,
5580    #[serde(
5581        default,
5582        skip_serializing_if = "Option::is_none",
5583        deserialize_with = "double_option"
5584    )]
5585    pub etag: Option<Option<String>>,
5586    #[serde(default, skip_serializing_if = "Option::is_none")]
5587    pub r#type: Option<FolderType>,
5588    #[serde(default, skip_serializing_if = "Option::is_none")]
5589    pub sequence_id: Option<String>,
5590    #[serde(default, skip_serializing_if = "Option::is_none")]
5591    pub name: Option<String>,
5592    #[serde(
5593        default,
5594        skip_serializing_if = "Option::is_none",
5595        deserialize_with = "double_option"
5596    )]
5597    pub created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5598    #[serde(
5599        default,
5600        skip_serializing_if = "Option::is_none",
5601        deserialize_with = "double_option"
5602    )]
5603    pub modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5604    #[serde(default, skip_serializing_if = "Option::is_none")]
5605    pub description: Option<String>,
5606    #[serde(default, skip_serializing_if = "Option::is_none")]
5607    pub size: Option<i64>,
5608    #[serde(default, skip_serializing_if = "Option::is_none")]
5609    pub path_collection: Option<FilePathCollection>,
5610    #[serde(default, skip_serializing_if = "Option::is_none")]
5611    pub created_by: Option<UserMini>,
5612    #[serde(default, skip_serializing_if = "Option::is_none")]
5613    pub modified_by: Option<UserMini>,
5614    #[serde(
5615        default,
5616        skip_serializing_if = "Option::is_none",
5617        deserialize_with = "double_option"
5618    )]
5619    pub trashed_at: Option<Option<String>>,
5620    #[serde(
5621        default,
5622        skip_serializing_if = "Option::is_none",
5623        deserialize_with = "double_option"
5624    )]
5625    pub purged_at: Option<Option<String>>,
5626    #[serde(
5627        default,
5628        skip_serializing_if = "Option::is_none",
5629        deserialize_with = "double_option"
5630    )]
5631    pub content_created_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5632    #[serde(
5633        default,
5634        skip_serializing_if = "Option::is_none",
5635        deserialize_with = "double_option"
5636    )]
5637    pub content_modified_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5638    #[serde(default, skip_serializing_if = "Option::is_none")]
5639    pub owned_by: Option<UserMini>,
5640    #[serde(
5641        default,
5642        skip_serializing_if = "Option::is_none",
5643        deserialize_with = "double_option"
5644    )]
5645    pub shared_link: Option<Option<String>>,
5646    #[serde(
5647        default,
5648        skip_serializing_if = "Option::is_none",
5649        deserialize_with = "double_option"
5650    )]
5651    pub folder_upload_email: Option<Option<String>>,
5652    #[serde(
5653        default,
5654        skip_serializing_if = "Option::is_none",
5655        deserialize_with = "double_option"
5656    )]
5657    pub parent: Option<Option<FolderMini>>,
5658    #[serde(default, skip_serializing_if = "Option::is_none")]
5659    pub item_status: Option<FileItemStatus>,
5660}
5661
5662#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5663pub struct TrashWebLink {
5664    #[serde(default, skip_serializing_if = "Option::is_none")]
5665    pub r#type: Option<TrashWebLinkType>,
5666    #[serde(default, skip_serializing_if = "Option::is_none")]
5667    pub id: Option<String>,
5668    #[serde(default, skip_serializing_if = "Option::is_none")]
5669    pub sequence_id: Option<String>,
5670    #[serde(default, skip_serializing_if = "Option::is_none")]
5671    pub etag: Option<String>,
5672    #[serde(default, skip_serializing_if = "Option::is_none")]
5673    pub name: Option<String>,
5674    #[serde(default, skip_serializing_if = "Option::is_none")]
5675    pub url: Option<String>,
5676    #[serde(default, skip_serializing_if = "Option::is_none")]
5677    pub parent: Option<FolderMini>,
5678    #[serde(default, skip_serializing_if = "Option::is_none")]
5679    pub description: Option<String>,
5680    #[serde(default, skip_serializing_if = "Option::is_none")]
5681    pub path_collection: Option<TrashFilePathCollection>,
5682    #[serde(default, skip_serializing_if = "Option::is_none")]
5683    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5684    #[serde(default, skip_serializing_if = "Option::is_none")]
5685    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
5686    #[serde(
5687        default,
5688        skip_serializing_if = "Option::is_none",
5689        deserialize_with = "double_option"
5690    )]
5691    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5692    #[serde(
5693        default,
5694        skip_serializing_if = "Option::is_none",
5695        deserialize_with = "double_option"
5696    )]
5697    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
5698    #[serde(default, skip_serializing_if = "Option::is_none")]
5699    pub created_by: Option<UserMini>,
5700    #[serde(default, skip_serializing_if = "Option::is_none")]
5701    pub modified_by: Option<UserMini>,
5702    #[serde(default, skip_serializing_if = "Option::is_none")]
5703    pub owned_by: Option<UserMini>,
5704    #[serde(
5705        default,
5706        skip_serializing_if = "Option::is_none",
5707        deserialize_with = "double_option"
5708    )]
5709    pub shared_link: Option<Option<String>>,
5710    #[serde(default, skip_serializing_if = "Option::is_none")]
5711    pub item_status: Option<FileItemStatus>,
5712}
5713
5714#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5715pub struct TrashWebLinkRestored {
5716    #[serde(default, skip_serializing_if = "Option::is_none")]
5717    pub r#type: Option<TrashWebLinkType>,
5718    #[serde(default, skip_serializing_if = "Option::is_none")]
5719    pub id: Option<String>,
5720    pub sequence_id: String,
5721    #[serde(default, skip_serializing_if = "Option::is_none")]
5722    pub etag: Option<String>,
5723    #[serde(default, skip_serializing_if = "Option::is_none")]
5724    pub name: Option<String>,
5725    #[serde(default, skip_serializing_if = "Option::is_none")]
5726    pub url: Option<String>,
5727    #[serde(default, skip_serializing_if = "Option::is_none")]
5728    pub parent: Option<FolderMini>,
5729    #[serde(default, skip_serializing_if = "Option::is_none")]
5730    pub description: Option<String>,
5731    pub path_collection: FilePathCollection,
5732    #[serde(default, skip_serializing_if = "Option::is_none")]
5733    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5734    #[serde(default, skip_serializing_if = "Option::is_none")]
5735    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
5736    #[serde(
5737        default,
5738        skip_serializing_if = "Option::is_none",
5739        deserialize_with = "double_option"
5740    )]
5741    pub trashed_at: Option<Option<String>>,
5742    #[serde(
5743        default,
5744        skip_serializing_if = "Option::is_none",
5745        deserialize_with = "double_option"
5746    )]
5747    pub purged_at: Option<Option<String>>,
5748    #[serde(default, skip_serializing_if = "Option::is_none")]
5749    pub created_by: Option<UserMini>,
5750    #[serde(default, skip_serializing_if = "Option::is_none")]
5751    pub modified_by: Option<UserMini>,
5752    #[serde(default, skip_serializing_if = "Option::is_none")]
5753    pub owned_by: Option<UserMini>,
5754    #[serde(
5755        default,
5756        skip_serializing_if = "Option::is_none",
5757        deserialize_with = "double_option"
5758    )]
5759    pub shared_link: Option<Option<String>>,
5760    #[serde(default, skip_serializing_if = "Option::is_none")]
5761    pub item_status: Option<FileItemStatus>,
5762}
5763
5764#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5765pub struct UploadedPart {
5766    #[serde(default, skip_serializing_if = "Option::is_none")]
5767    pub part: Option<UploadPart>,
5768}
5769
5770#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5771pub struct UploadPart {
5772    #[serde(default, skip_serializing_if = "Option::is_none")]
5773    pub part_id: Option<String>,
5774    #[serde(default, skip_serializing_if = "Option::is_none")]
5775    pub offset: Option<i64>,
5776    #[serde(default, skip_serializing_if = "Option::is_none")]
5777    pub size: Option<i64>,
5778    #[serde(default, skip_serializing_if = "Option::is_none")]
5779    pub sha1: Option<String>,
5780}
5781
5782#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5783pub struct UploadPartMini {
5784    #[serde(default, skip_serializing_if = "Option::is_none")]
5785    pub part_id: Option<String>,
5786    #[serde(default, skip_serializing_if = "Option::is_none")]
5787    pub offset: Option<i64>,
5788    #[serde(default, skip_serializing_if = "Option::is_none")]
5789    pub size: Option<i64>,
5790}
5791
5792#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5793pub struct UploadParts {
5794    #[serde(default, skip_serializing_if = "Option::is_none")]
5795    pub total_count: Option<i64>,
5796    #[serde(default, skip_serializing_if = "Option::is_none")]
5797    pub limit: Option<i64>,
5798    #[serde(default, skip_serializing_if = "Option::is_none")]
5799    pub offset: Option<i64>,
5800    #[serde(default, skip_serializing_if = "Option::is_none")]
5801    pub order: Option<Vec<CollectionsOrder>>,
5802    #[serde(default, skip_serializing_if = "Option::is_none")]
5803    pub entries: Option<Vec<UploadPart>>,
5804}
5805
5806#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5807pub struct UploadSession {
5808    #[serde(default, skip_serializing_if = "Option::is_none")]
5809    pub id: Option<String>,
5810    #[serde(default, skip_serializing_if = "Option::is_none")]
5811    pub r#type: Option<UploadSessionType>,
5812    #[serde(default, skip_serializing_if = "Option::is_none")]
5813    pub session_expires_at: Option<chrono::DateTime<chrono::Utc>>,
5814    #[serde(default, skip_serializing_if = "Option::is_none")]
5815    pub part_size: Option<i64>,
5816    #[serde(default, skip_serializing_if = "Option::is_none")]
5817    pub total_parts: Option<i64>,
5818    #[serde(default, skip_serializing_if = "Option::is_none")]
5819    pub num_parts_processed: Option<i64>,
5820    #[serde(default, skip_serializing_if = "Option::is_none")]
5821    pub session_endpoints: Option<UploadSessionSessionEndpoints>,
5822}
5823
5824#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5825pub struct UploadUrl {
5826    #[serde(default, skip_serializing_if = "Option::is_none")]
5827    pub upload_url: Option<String>,
5828    #[serde(default, skip_serializing_if = "Option::is_none")]
5829    pub upload_token: Option<String>,
5830}
5831
5832#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5833pub struct User {
5834    pub id: String,
5835    pub r#type: VariableValueType,
5836    #[serde(default, skip_serializing_if = "Option::is_none")]
5837    pub name: Option<String>,
5838    #[serde(default, skip_serializing_if = "Option::is_none")]
5839    pub login: Option<String>,
5840    #[serde(default, skip_serializing_if = "Option::is_none")]
5841    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5842    #[serde(default, skip_serializing_if = "Option::is_none")]
5843    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
5844    #[serde(default, skip_serializing_if = "Option::is_none")]
5845    pub language: Option<String>,
5846    #[serde(default, skip_serializing_if = "Option::is_none")]
5847    pub timezone: Option<String>,
5848    #[serde(default, skip_serializing_if = "Option::is_none")]
5849    pub space_amount: Option<i64>,
5850    #[serde(default, skip_serializing_if = "Option::is_none")]
5851    pub space_used: Option<i64>,
5852    #[serde(default, skip_serializing_if = "Option::is_none")]
5853    pub max_upload_size: Option<i64>,
5854    #[serde(default, skip_serializing_if = "Option::is_none")]
5855    pub status: Option<UserStatus>,
5856    #[serde(default, skip_serializing_if = "Option::is_none")]
5857    pub job_title: Option<String>,
5858    #[serde(default, skip_serializing_if = "Option::is_none")]
5859    pub phone: Option<String>,
5860    #[serde(default, skip_serializing_if = "Option::is_none")]
5861    pub address: Option<String>,
5862    #[serde(default, skip_serializing_if = "Option::is_none")]
5863    pub avatar_url: Option<String>,
5864    #[serde(
5865        default,
5866        skip_serializing_if = "Option::is_none",
5867        deserialize_with = "double_option"
5868    )]
5869    pub notification_email: Option<Option<UserNotificationEmail>>,
5870}
5871
5872#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5873pub struct UserBase {
5874    pub id: String,
5875    pub r#type: VariableValueType,
5876}
5877
5878#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5879pub struct UserCollaborations {
5880    pub id: String,
5881    pub r#type: VariableValueType,
5882    #[serde(default, skip_serializing_if = "Option::is_none")]
5883    pub name: Option<String>,
5884    #[serde(default, skip_serializing_if = "Option::is_none")]
5885    pub login: Option<String>,
5886    #[serde(default, skip_serializing_if = "Option::is_none")]
5887    pub is_active: Option<bool>,
5888}
5889
5890#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5891pub struct UserFull {
5892    pub id: String,
5893    pub r#type: VariableValueType,
5894    #[serde(default, skip_serializing_if = "Option::is_none")]
5895    pub name: Option<String>,
5896    #[serde(default, skip_serializing_if = "Option::is_none")]
5897    pub login: Option<String>,
5898    #[serde(default, skip_serializing_if = "Option::is_none")]
5899    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5900    #[serde(default, skip_serializing_if = "Option::is_none")]
5901    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
5902    #[serde(default, skip_serializing_if = "Option::is_none")]
5903    pub language: Option<String>,
5904    #[serde(default, skip_serializing_if = "Option::is_none")]
5905    pub timezone: Option<String>,
5906    #[serde(default, skip_serializing_if = "Option::is_none")]
5907    pub space_amount: Option<i64>,
5908    #[serde(default, skip_serializing_if = "Option::is_none")]
5909    pub space_used: Option<i64>,
5910    #[serde(default, skip_serializing_if = "Option::is_none")]
5911    pub max_upload_size: Option<i64>,
5912    #[serde(default, skip_serializing_if = "Option::is_none")]
5913    pub status: Option<UserStatus>,
5914    #[serde(default, skip_serializing_if = "Option::is_none")]
5915    pub job_title: Option<String>,
5916    #[serde(default, skip_serializing_if = "Option::is_none")]
5917    pub phone: Option<String>,
5918    #[serde(default, skip_serializing_if = "Option::is_none")]
5919    pub address: Option<String>,
5920    #[serde(default, skip_serializing_if = "Option::is_none")]
5921    pub avatar_url: Option<String>,
5922    #[serde(
5923        default,
5924        skip_serializing_if = "Option::is_none",
5925        deserialize_with = "double_option"
5926    )]
5927    pub notification_email: Option<Option<UserNotificationEmail>>,
5928    #[serde(default, skip_serializing_if = "Option::is_none")]
5929    pub role: Option<UserFullRole>,
5930    #[serde(default, skip_serializing_if = "Option::is_none")]
5931    pub tracking_codes: Option<Vec<TrackingCode>>,
5932    #[serde(default, skip_serializing_if = "Option::is_none")]
5933    pub can_see_managed_users: Option<bool>,
5934    #[serde(default, skip_serializing_if = "Option::is_none")]
5935    pub is_sync_enabled: Option<bool>,
5936    #[serde(default, skip_serializing_if = "Option::is_none")]
5937    pub is_external_collab_restricted: Option<bool>,
5938    #[serde(default, skip_serializing_if = "Option::is_none")]
5939    pub is_exempt_from_device_limits: Option<bool>,
5940    #[serde(default, skip_serializing_if = "Option::is_none")]
5941    pub is_exempt_from_login_verification: Option<bool>,
5942    #[serde(default, skip_serializing_if = "Option::is_none")]
5943    pub is_collaborated_content_available_when_owner_inactive: Option<bool>,
5944    #[serde(default, skip_serializing_if = "Option::is_none")]
5945    pub enterprise: Option<CollaborationAllowlistEntryEnterprise>,
5946    #[serde(default, skip_serializing_if = "Option::is_none")]
5947    pub my_tags: Option<Vec<String>>,
5948    #[serde(default, skip_serializing_if = "Option::is_none")]
5949    pub hostname: Option<String>,
5950    #[serde(default, skip_serializing_if = "Option::is_none")]
5951    pub is_platform_access_only: Option<bool>,
5952    #[serde(default, skip_serializing_if = "Option::is_none")]
5953    pub external_app_user_id: Option<String>,
5954}
5955
5956#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5957pub struct UserMini {
5958    pub id: String,
5959    pub r#type: VariableValueType,
5960    #[serde(default, skip_serializing_if = "Option::is_none")]
5961    pub name: Option<String>,
5962    #[serde(default, skip_serializing_if = "Option::is_none")]
5963    pub login: Option<String>,
5964}
5965
5966#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5967pub struct UserAvatar {
5968    #[serde(default, skip_serializing_if = "Option::is_none")]
5969    pub pic_urls: Option<UserAvatarPicUrls>,
5970}
5971
5972#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5973pub struct UserIntegrationMappings {
5974    pub id: String,
5975    pub r#type: VariableValueType,
5976    #[serde(default, skip_serializing_if = "Option::is_none")]
5977    pub name: Option<String>,
5978    #[serde(default, skip_serializing_if = "Option::is_none")]
5979    pub login: Option<String>,
5980}
5981
5982#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
5983pub struct Users {
5984    #[serde(default, skip_serializing_if = "Option::is_none")]
5985    pub limit: Option<i64>,
5986    #[serde(
5987        default,
5988        skip_serializing_if = "Option::is_none",
5989        deserialize_with = "double_option"
5990    )]
5991    pub next_marker: Option<Option<String>>,
5992    #[serde(
5993        default,
5994        skip_serializing_if = "Option::is_none",
5995        deserialize_with = "double_option"
5996    )]
5997    pub prev_marker: Option<Option<String>>,
5998    #[serde(default, skip_serializing_if = "Option::is_none")]
5999    pub total_count: Option<i64>,
6000    #[serde(default, skip_serializing_if = "Option::is_none")]
6001    pub offset: Option<i64>,
6002    #[serde(default, skip_serializing_if = "Option::is_none")]
6003    pub order: Option<Vec<CollectionsOrder>>,
6004    #[serde(default, skip_serializing_if = "Option::is_none")]
6005    pub entries: Option<Vec<UserFull>>,
6006}
6007
6008#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6009pub struct Watermark {
6010    #[serde(default, skip_serializing_if = "Option::is_none")]
6011    pub watermark: Option<WatermarkWatermark>,
6012}
6013
6014#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6015pub struct Webhook {
6016    #[serde(default, skip_serializing_if = "Option::is_none")]
6017    pub id: Option<String>,
6018    #[serde(default, skip_serializing_if = "Option::is_none")]
6019    pub r#type: Option<WebhookType>,
6020    #[serde(default, skip_serializing_if = "Option::is_none")]
6021    pub target: Option<WebhookTarget>,
6022    #[serde(default, skip_serializing_if = "Option::is_none")]
6023    pub created_by: Option<UserMini>,
6024    #[serde(default, skip_serializing_if = "Option::is_none")]
6025    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6026    #[serde(default, skip_serializing_if = "Option::is_none")]
6027    pub address: Option<String>,
6028    #[serde(default, skip_serializing_if = "Option::is_none")]
6029    pub triggers: Option<Vec<WebhookTriggers>>,
6030}
6031
6032#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6033pub struct WebhookMini {
6034    #[serde(default, skip_serializing_if = "Option::is_none")]
6035    pub id: Option<String>,
6036    #[serde(default, skip_serializing_if = "Option::is_none")]
6037    pub r#type: Option<WebhookType>,
6038    #[serde(default, skip_serializing_if = "Option::is_none")]
6039    pub target: Option<WebhookTarget>,
6040}
6041
6042#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6043pub struct Webhooks {
6044    #[serde(default, skip_serializing_if = "Option::is_none")]
6045    pub limit: Option<i64>,
6046    #[serde(
6047        default,
6048        skip_serializing_if = "Option::is_none",
6049        deserialize_with = "double_option"
6050    )]
6051    pub next_marker: Option<Option<String>>,
6052    #[serde(
6053        default,
6054        skip_serializing_if = "Option::is_none",
6055        deserialize_with = "double_option"
6056    )]
6057    pub prev_marker: Option<Option<String>>,
6058    #[serde(default, skip_serializing_if = "Option::is_none")]
6059    pub entries: Option<Vec<WebhookMini>>,
6060}
6061
6062#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6063pub struct WebLink {
6064    pub id: String,
6065    pub r#type: TrashWebLinkType,
6066    #[serde(default, skip_serializing_if = "Option::is_none")]
6067    pub etag: Option<String>,
6068    #[serde(default, skip_serializing_if = "Option::is_none")]
6069    pub url: Option<String>,
6070    #[serde(default, skip_serializing_if = "Option::is_none")]
6071    pub sequence_id: Option<String>,
6072    #[serde(default, skip_serializing_if = "Option::is_none")]
6073    pub name: Option<String>,
6074    #[serde(default, skip_serializing_if = "Option::is_none")]
6075    pub parent: Option<FolderMini>,
6076    #[serde(default, skip_serializing_if = "Option::is_none")]
6077    pub description: Option<String>,
6078    #[serde(default, skip_serializing_if = "Option::is_none")]
6079    pub path_collection: Option<FilePathCollection>,
6080    #[serde(default, skip_serializing_if = "Option::is_none")]
6081    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6082    #[serde(default, skip_serializing_if = "Option::is_none")]
6083    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
6084    #[serde(
6085        default,
6086        skip_serializing_if = "Option::is_none",
6087        deserialize_with = "double_option"
6088    )]
6089    pub trashed_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
6090    #[serde(
6091        default,
6092        skip_serializing_if = "Option::is_none",
6093        deserialize_with = "double_option"
6094    )]
6095    pub purged_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
6096    #[serde(default, skip_serializing_if = "Option::is_none")]
6097    pub created_by: Option<UserMini>,
6098    #[serde(default, skip_serializing_if = "Option::is_none")]
6099    pub modified_by: Option<UserMini>,
6100    #[serde(default, skip_serializing_if = "Option::is_none")]
6101    pub owned_by: Option<UserMini>,
6102    #[serde(
6103        default,
6104        skip_serializing_if = "Option::is_none",
6105        deserialize_with = "double_option"
6106    )]
6107    pub shared_link: Option<Option<FileSharedLink>>,
6108    #[serde(default, skip_serializing_if = "Option::is_none")]
6109    pub item_status: Option<FileItemStatus>,
6110    #[serde(default, skip_serializing_if = "Option::is_none")]
6111    pub collections: Option<Vec<Collection>>,
6112    #[serde(default, skip_serializing_if = "Option::is_none")]
6113    pub allowed_shared_link_access_levels: Option<Vec<SharedLinkAccess>>,
6114}
6115
6116#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6117pub struct WebLinkBase {
6118    pub id: String,
6119    pub r#type: TrashWebLinkType,
6120    #[serde(default, skip_serializing_if = "Option::is_none")]
6121    pub etag: Option<String>,
6122}
6123
6124#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6125pub struct WebLinkMini {
6126    pub id: String,
6127    pub r#type: TrashWebLinkType,
6128    #[serde(default, skip_serializing_if = "Option::is_none")]
6129    pub etag: Option<String>,
6130    #[serde(default, skip_serializing_if = "Option::is_none")]
6131    pub url: Option<String>,
6132    #[serde(default, skip_serializing_if = "Option::is_none")]
6133    pub sequence_id: Option<String>,
6134    #[serde(default, skip_serializing_if = "Option::is_none")]
6135    pub name: Option<String>,
6136}
6137
6138#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6139pub struct Workflow {
6140    #[serde(default, skip_serializing_if = "Option::is_none")]
6141    pub id: Option<String>,
6142    #[serde(default, skip_serializing_if = "Option::is_none")]
6143    pub r#type: Option<WorkflowType>,
6144    #[serde(default, skip_serializing_if = "Option::is_none")]
6145    pub name: Option<String>,
6146    #[serde(default, skip_serializing_if = "Option::is_none")]
6147    pub description: Option<String>,
6148    #[serde(default, skip_serializing_if = "Option::is_none")]
6149    pub is_enabled: Option<bool>,
6150    #[serde(default, skip_serializing_if = "Option::is_none")]
6151    pub flows: Option<Vec<WorkflowFlows>>,
6152}
6153
6154#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6155pub struct WorkflowMini {
6156    #[serde(default, skip_serializing_if = "Option::is_none")]
6157    pub id: Option<String>,
6158    #[serde(default, skip_serializing_if = "Option::is_none")]
6159    pub r#type: Option<WorkflowType>,
6160    #[serde(default, skip_serializing_if = "Option::is_none")]
6161    pub name: Option<String>,
6162    #[serde(default, skip_serializing_if = "Option::is_none")]
6163    pub description: Option<String>,
6164    #[serde(default, skip_serializing_if = "Option::is_none")]
6165    pub is_enabled: Option<bool>,
6166}
6167
6168#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6169pub struct Workflows {
6170    #[serde(default, skip_serializing_if = "Option::is_none")]
6171    pub limit: Option<i64>,
6172    #[serde(
6173        default,
6174        skip_serializing_if = "Option::is_none",
6175        deserialize_with = "double_option"
6176    )]
6177    pub next_marker: Option<Option<String>>,
6178    #[serde(
6179        default,
6180        skip_serializing_if = "Option::is_none",
6181        deserialize_with = "double_option"
6182    )]
6183    pub prev_marker: Option<Option<String>>,
6184    #[serde(default, skip_serializing_if = "Option::is_none")]
6185    pub entries: Option<Vec<Workflow>>,
6186}
6187
6188#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6189pub struct ZipDownload {
6190    #[serde(default, skip_serializing_if = "Option::is_none")]
6191    pub download_url: Option<String>,
6192    #[serde(default, skip_serializing_if = "Option::is_none")]
6193    pub status_url: Option<String>,
6194    #[serde(default, skip_serializing_if = "Option::is_none")]
6195    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
6196    #[serde(default, skip_serializing_if = "Option::is_none")]
6197    pub name_conflicts: Option<Vec<Vec<ZipDownloadNameConflicts>>>,
6198}
6199
6200#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6201pub struct ZipDownloadRequest {
6202    pub items: Vec<ZipDownloadRequestItems>,
6203    #[serde(default, skip_serializing_if = "Option::is_none")]
6204    pub download_file_name: Option<String>,
6205}
6206
6207#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6208pub struct ZipDownloadStatus {
6209    #[serde(default, skip_serializing_if = "Option::is_none")]
6210    pub total_file_count: Option<i64>,
6211    #[serde(default, skip_serializing_if = "Option::is_none")]
6212    pub downloaded_file_count: Option<i64>,
6213    #[serde(default, skip_serializing_if = "Option::is_none")]
6214    pub skipped_file_count: Option<i64>,
6215    #[serde(default, skip_serializing_if = "Option::is_none")]
6216    pub skipped_folder_count: Option<i64>,
6217    #[serde(default, skip_serializing_if = "Option::is_none")]
6218    pub state: Option<ZipDownloadStatusState>,
6219}
6220
6221#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6222#[serde(transparent)]
6223pub struct AccessTokenTokenType(pub String);
6224
6225impl AccessTokenTokenType {
6226    pub const BEARER: &'static str = "bearer";
6227}
6228
6229#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6230#[serde(transparent)]
6231pub struct AccessTokenIssuedTokenType(pub String);
6232
6233impl AccessTokenIssuedTokenType {
6234    pub const URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN: &'static str =
6235        "urn:ietf:params:oauth:token-type:access_token";
6236}
6237
6238#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6239#[serde(transparent)]
6240pub struct AiAgentAskType(pub String);
6241
6242impl AiAgentAskType {
6243    pub const AI_AGENT_ASK: &'static str = "ai_agent_ask";
6244}
6245
6246#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6247pub struct EmbeddingsStrategy {
6248    #[serde(default, skip_serializing_if = "Option::is_none")]
6249    pub id: Option<String>,
6250    #[serde(default, skip_serializing_if = "Option::is_none")]
6251    pub num_tokens_per_chunk: Option<i64>,
6252}
6253
6254#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6255pub struct AiAgentBasicGenToolEmbeddings {
6256    #[serde(default, skip_serializing_if = "Option::is_none")]
6257    pub model: Option<String>,
6258    #[serde(default, skip_serializing_if = "Option::is_none")]
6259    pub strategy: Option<EmbeddingsStrategy>,
6260}
6261
6262#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6263#[serde(transparent)]
6264pub struct AiAgentExtractType(pub String);
6265
6266impl AiAgentExtractType {
6267    pub const AI_AGENT_EXTRACT: &'static str = "ai_agent_extract";
6268}
6269
6270#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6271#[serde(transparent)]
6272pub struct AiAgentExtractStructuredType(pub String);
6273
6274impl AiAgentExtractStructuredType {
6275    pub const AI_AGENT_EXTRACT_STRUCTURED: &'static str = "ai_agent_extract_structured";
6276}
6277
6278#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6279pub struct AiAgentInfoModels {
6280    #[serde(default, skip_serializing_if = "Option::is_none")]
6281    pub name: Option<String>,
6282    #[serde(default, skip_serializing_if = "Option::is_none")]
6283    pub provider: Option<String>,
6284    #[serde(default, skip_serializing_if = "Option::is_none")]
6285    pub supported_purpose: Option<String>,
6286}
6287
6288#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6289#[serde(transparent)]
6290pub struct AiAgentReferenceType(pub String);
6291
6292impl AiAgentReferenceType {
6293    pub const AI_AGENT_ID: &'static str = "ai_agent_id";
6294}
6295
6296#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6297#[serde(transparent)]
6298pub struct AiAgentTextGenType(pub String);
6299
6300impl AiAgentTextGenType {
6301    pub const AI_AGENT_TEXT_GEN: &'static str = "ai_agent_text_gen";
6302}
6303
6304#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6305#[serde(transparent)]
6306pub struct AiAskMode(pub String);
6307
6308impl AiAskMode {
6309    pub const MULTIPLE_ITEM_QA: &'static str = "multiple_item_qa";
6310    pub const SINGLE_ITEM_QA: &'static str = "single_item_qa";
6311}
6312
6313#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6314#[serde(transparent)]
6315pub struct AiCitationType(pub String);
6316
6317impl AiCitationType {
6318    pub const FILE: &'static str = "file";
6319}
6320
6321#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6322#[serde(transparent)]
6323pub struct MetadataTemplateType(pub String);
6324
6325impl MetadataTemplateType {
6326    pub const METADATA_TEMPLATE: &'static str = "metadata_template";
6327}
6328
6329#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6330pub struct AiExtractStructuredMetadataTemplate {
6331    #[serde(default, skip_serializing_if = "Option::is_none")]
6332    pub template_key: Option<String>,
6333    #[serde(default, skip_serializing_if = "Option::is_none")]
6334    pub r#type: Option<MetadataTemplateType>,
6335    #[serde(default, skip_serializing_if = "Option::is_none")]
6336    pub scope: Option<String>,
6337}
6338
6339#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6340pub struct FieldsOptions {
6341    pub key: String,
6342}
6343
6344#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6345pub struct AiExtractStructuredFields {
6346    pub key: String,
6347    #[serde(default, skip_serializing_if = "Option::is_none")]
6348    pub description: Option<String>,
6349    #[serde(
6350        rename = "displayName",
6351        default,
6352        skip_serializing_if = "Option::is_none"
6353    )]
6354    pub display_name: Option<String>,
6355    #[serde(default, skip_serializing_if = "Option::is_none")]
6356    pub prompt: Option<String>,
6357    #[serde(default, skip_serializing_if = "Option::is_none")]
6358    pub r#type: Option<String>,
6359    #[serde(default, skip_serializing_if = "Option::is_none")]
6360    pub options: Option<Vec<FieldsOptions>>,
6361    #[serde(default, skip_serializing_if = "Option::is_none")]
6362    pub fields: Option<Vec<AiExtractSubField>>,
6363    #[serde(default, skip_serializing_if = "Option::is_none")]
6364    pub taxonomy_key: Option<String>,
6365    #[serde(default, skip_serializing_if = "Option::is_none")]
6366    pub namespace: Option<String>,
6367    #[serde(default, skip_serializing_if = "Option::is_none")]
6368    pub options_rules: Option<AiOptionsRules>,
6369}
6370
6371#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6372#[serde(transparent)]
6373pub struct AiItemAskType(pub String);
6374
6375impl AiItemAskType {
6376    pub const FILE: &'static str = "file";
6377    pub const HUBS: &'static str = "hubs";
6378}
6379
6380#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6381#[serde(transparent)]
6382pub struct AiLlmEndpointParamsAWSType(pub String);
6383
6384impl AiLlmEndpointParamsAWSType {
6385    pub const AWS_PARAMS: &'static str = "aws_params";
6386}
6387
6388#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6389#[serde(transparent)]
6390pub struct AiLlmEndpointParamsGoogleType(pub String);
6391
6392impl AiLlmEndpointParamsGoogleType {
6393    pub const GOOGLE_PARAMS: &'static str = "google_params";
6394}
6395
6396#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6397#[serde(transparent)]
6398pub struct AiLlmEndpointParamsIBMType(pub String);
6399
6400impl AiLlmEndpointParamsIBMType {
6401    pub const IBM_PARAMS: &'static str = "ibm_params";
6402}
6403
6404#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6405#[serde(transparent)]
6406pub struct AiLlmEndpointParamsOpenAiType(pub String);
6407
6408impl AiLlmEndpointParamsOpenAiType {
6409    pub const OPENAI_PARAMS: &'static str = "openai_params";
6410}
6411
6412#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6413#[serde(transparent)]
6414pub struct AiSingleAgentResponseType(pub String);
6415
6416impl AiSingleAgentResponseType {
6417    pub const AI_AGENT: &'static str = "ai_agent";
6418}
6419
6420#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6421#[serde(transparent)]
6422pub struct AiTaxonomyReferenceType(pub String);
6423
6424impl AiTaxonomyReferenceType {
6425    pub const TAXONOMY: &'static str = "taxonomy";
6426}
6427
6428#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6429pub struct AiTextGenItems {
6430    pub id: String,
6431    pub r#type: AiCitationType,
6432    #[serde(default, skip_serializing_if = "Option::is_none")]
6433    pub content: Option<String>,
6434}
6435
6436#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6437#[serde(transparent)]
6438pub struct AppItemType(pub String);
6439
6440impl AppItemType {
6441    pub const APP_ITEM: &'static str = "app_item";
6442}
6443
6444#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6445#[serde(transparent)]
6446pub struct AppItemAssociationType(pub String);
6447
6448impl AppItemAssociationType {
6449    pub const APP_ITEM_ASSOCIATION: &'static str = "app_item_association";
6450}
6451
6452#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6453#[serde(transparent)]
6454pub struct ClassificationTemplate2(pub String);
6455
6456impl ClassificationTemplate2 {
6457    pub const SECURITYCLASSIFICATION_6VMVOCHWUWO: &'static str =
6458        "securityClassification-6VMVochwUWo";
6459}
6460
6461#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6462#[serde(transparent)]
6463pub struct ClassificationTemplateDisplayName(pub String);
6464
6465impl ClassificationTemplateDisplayName {
6466    pub const CLASSIFICATION: &'static str = "Classification";
6467}
6468
6469#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6470#[serde(transparent)]
6471pub struct FieldsType(pub String);
6472
6473impl FieldsType {
6474    pub const ENUM: &'static str = "enum";
6475}
6476
6477#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6478#[serde(transparent)]
6479pub struct FieldsKey(pub String);
6480
6481impl FieldsKey {
6482    pub const BOX_SECURITY_CLASSIFICATION_KEY: &'static str = "Box__Security__Classification__Key";
6483}
6484
6485#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6486pub struct StaticConfigClassification {
6487    #[serde(
6488        rename = "classificationDefinition",
6489        default,
6490        skip_serializing_if = "Option::is_none"
6491    )]
6492    pub classification_definition: Option<String>,
6493    #[serde(rename = "colorID", default, skip_serializing_if = "Option::is_none")]
6494    pub color_id: Option<i64>,
6495}
6496
6497#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6498pub struct OptionsStaticConfig {
6499    #[serde(default, skip_serializing_if = "Option::is_none")]
6500    pub classification: Option<StaticConfigClassification>,
6501}
6502
6503#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6504pub struct ClassificationTemplateFieldsOptions {
6505    pub id: String,
6506    pub key: String,
6507    #[serde(
6508        rename = "staticConfig",
6509        default,
6510        skip_serializing_if = "Option::is_none"
6511    )]
6512    pub static_config: Option<OptionsStaticConfig>,
6513}
6514
6515#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6516pub struct ClassificationTemplateFields {
6517    pub id: String,
6518    pub r#type: FieldsType,
6519    pub key: FieldsKey,
6520    #[serde(rename = "displayName")]
6521    pub display_name: ClassificationTemplateDisplayName,
6522    #[serde(default, skip_serializing_if = "Option::is_none")]
6523    pub hidden: Option<bool>,
6524    pub options: Vec<ClassificationTemplateFieldsOptions>,
6525}
6526
6527#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6528#[serde(transparent)]
6529pub struct ClientErrorType(pub String);
6530
6531impl ClientErrorType {
6532    pub const ERROR: &'static str = "error";
6533}
6534
6535#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6536#[serde(transparent)]
6537pub struct ClientErrorCode(pub String);
6538
6539impl ClientErrorCode {
6540    pub const CREATED: &'static str = "created";
6541    pub const ACCEPTED: &'static str = "accepted";
6542    pub const NO_CONTENT: &'static str = "no_content";
6543    pub const REDIRECT: &'static str = "redirect";
6544    pub const NOT_MODIFIED: &'static str = "not_modified";
6545    pub const BAD_REQUEST: &'static str = "bad_request";
6546    pub const UNAUTHORIZED: &'static str = "unauthorized";
6547    pub const FORBIDDEN: &'static str = "forbidden";
6548    pub const NOT_FOUND: &'static str = "not_found";
6549    pub const METHOD_NOT_ALLOWED: &'static str = "method_not_allowed";
6550    pub const CONFLICT: &'static str = "conflict";
6551    pub const PRECONDITION_FAILED: &'static str = "precondition_failed";
6552    pub const TOO_MANY_REQUESTS: &'static str = "too_many_requests";
6553    pub const INTERNAL_SERVER_ERROR: &'static str = "internal_server_error";
6554    pub const UNAVAILABLE: &'static str = "unavailable";
6555    pub const ITEM_NAME_INVALID: &'static str = "item_name_invalid";
6556    pub const INSUFFICIENT_SCOPE: &'static str = "insufficient_scope";
6557}
6558
6559#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6560#[serde(transparent)]
6561pub struct CollaborationType(pub String);
6562
6563impl CollaborationType {
6564    pub const COLLABORATION: &'static str = "collaboration";
6565}
6566
6567#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6568#[serde(transparent)]
6569pub struct CollaborationRole(pub String);
6570
6571impl CollaborationRole {
6572    pub const EDITOR: &'static str = "editor";
6573    pub const VIEWER: &'static str = "viewer";
6574    pub const PREVIEWER: &'static str = "previewer";
6575    pub const UPLOADER: &'static str = "uploader";
6576    pub const PREVIEWER_UPLOADER: &'static str = "previewer uploader";
6577    pub const VIEWER_UPLOADER: &'static str = "viewer uploader";
6578    pub const CO_OWNER: &'static str = "co-owner";
6579    pub const OWNER: &'static str = "owner";
6580}
6581
6582#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6583#[serde(transparent)]
6584pub struct CollaborationStatus(pub String);
6585
6586impl CollaborationStatus {
6587    pub const ACCEPTED: &'static str = "accepted";
6588    pub const PENDING: &'static str = "pending";
6589    pub const REJECTED: &'static str = "rejected";
6590}
6591
6592#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6593pub struct AcceptanceRequirementsStatusTermsOfServiceRequirement {
6594    #[serde(
6595        default,
6596        skip_serializing_if = "Option::is_none",
6597        deserialize_with = "double_option"
6598    )]
6599    pub is_accepted: Option<Option<bool>>,
6600    #[serde(default, skip_serializing_if = "Option::is_none")]
6601    pub terms_of_service: Option<TermsOfServiceBase>,
6602}
6603
6604#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6605pub struct AcceptanceRequirementsStatusStrongPasswordRequirement {
6606    #[serde(default, skip_serializing_if = "Option::is_none")]
6607    pub enterprise_has_strong_password_required_for_external_users: Option<bool>,
6608    #[serde(
6609        default,
6610        skip_serializing_if = "Option::is_none",
6611        deserialize_with = "double_option"
6612    )]
6613    pub user_has_strong_password: Option<Option<bool>>,
6614}
6615
6616#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6617pub struct AcceptanceRequirementsStatusTwoFactorAuthenticationRequirement {
6618    #[serde(default, skip_serializing_if = "Option::is_none")]
6619    pub enterprise_has_two_factor_auth_enabled: Option<bool>,
6620    #[serde(
6621        default,
6622        skip_serializing_if = "Option::is_none",
6623        deserialize_with = "double_option"
6624    )]
6625    pub user_has_two_factor_authentication_enabled: Option<Option<bool>>,
6626}
6627
6628#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6629pub struct CollaborationAcceptanceRequirementsStatus {
6630    #[serde(default, skip_serializing_if = "Option::is_none")]
6631    pub terms_of_service_requirement: Option<AcceptanceRequirementsStatusTermsOfServiceRequirement>,
6632    #[serde(default, skip_serializing_if = "Option::is_none")]
6633    pub strong_password_requirement: Option<AcceptanceRequirementsStatusStrongPasswordRequirement>,
6634    #[serde(default, skip_serializing_if = "Option::is_none")]
6635    pub two_factor_authentication_requirement:
6636        Option<AcceptanceRequirementsStatusTwoFactorAuthenticationRequirement>,
6637}
6638
6639#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6640#[serde(transparent)]
6641pub struct CollaborationAllowlistEntryType(pub String);
6642
6643impl CollaborationAllowlistEntryType {
6644    pub const COLLABORATION_WHITELIST_ENTRY: &'static str = "collaboration_whitelist_entry";
6645}
6646
6647#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6648#[serde(transparent)]
6649pub struct CollaborationAllowlistEntryDirection(pub String);
6650
6651impl CollaborationAllowlistEntryDirection {
6652    pub const INBOUND: &'static str = "inbound";
6653    pub const OUTBOUND: &'static str = "outbound";
6654    pub const BOTH: &'static str = "both";
6655}
6656
6657#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6658#[serde(transparent)]
6659pub struct EnterpriseType(pub String);
6660
6661impl EnterpriseType {
6662    pub const ENTERPRISE: &'static str = "enterprise";
6663}
6664
6665#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6666pub struct CollaborationAllowlistEntryEnterprise {
6667    #[serde(default, skip_serializing_if = "Option::is_none")]
6668    pub id: Option<String>,
6669    #[serde(default, skip_serializing_if = "Option::is_none")]
6670    pub r#type: Option<EnterpriseType>,
6671    #[serde(default, skip_serializing_if = "Option::is_none")]
6672    pub name: Option<String>,
6673}
6674
6675#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6676#[serde(transparent)]
6677pub struct CollaborationAllowlistExemptTargetType(pub String);
6678
6679impl CollaborationAllowlistExemptTargetType {
6680    pub const COLLABORATION_WHITELIST_EXEMPT_TARGET: &'static str =
6681        "collaboration_whitelist_exempt_target";
6682}
6683
6684#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6685#[serde(transparent)]
6686pub struct CollaboratorVariableType(pub String);
6687
6688impl CollaboratorVariableType {
6689    pub const VARIABLE: &'static str = "variable";
6690}
6691
6692#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6693#[serde(transparent)]
6694pub struct CollaboratorVariableVariableType(pub String);
6695
6696impl CollaboratorVariableVariableType {
6697    pub const USER_LIST: &'static str = "user_list";
6698}
6699
6700#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6701#[serde(transparent)]
6702pub struct VariableValueType(pub String);
6703
6704impl VariableValueType {
6705    pub const USER: &'static str = "user";
6706}
6707
6708#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6709pub struct CollaboratorVariableVariableValue {
6710    pub r#type: VariableValueType,
6711    pub id: String,
6712}
6713
6714#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6715#[serde(transparent)]
6716pub struct CollectionType(pub String);
6717
6718impl CollectionType {
6719    pub const COLLECTION: &'static str = "collection";
6720}
6721
6722#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6723#[serde(transparent)]
6724pub struct CollectionName(pub String);
6725
6726impl CollectionName {
6727    pub const FAVORITES: &'static str = "Favorites";
6728}
6729
6730#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6731#[serde(transparent)]
6732pub struct CollectionCollectionType(pub String);
6733
6734impl CollectionCollectionType {
6735    pub const FAVORITES: &'static str = "favorites";
6736}
6737
6738#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6739#[serde(transparent)]
6740pub struct OrderDirection(pub String);
6741
6742impl OrderDirection {
6743    pub const ASC: &'static str = "ASC";
6744    pub const DESC: &'static str = "DESC";
6745}
6746
6747#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6748pub struct CollectionsOrder {
6749    #[serde(default, skip_serializing_if = "Option::is_none")]
6750    pub by: Option<String>,
6751    #[serde(default, skip_serializing_if = "Option::is_none")]
6752    pub direction: Option<OrderDirection>,
6753}
6754
6755#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6756#[serde(transparent)]
6757pub struct CommentType(pub String);
6758
6759impl CommentType {
6760    pub const COMMENT: &'static str = "comment";
6761}
6762
6763#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6764pub struct CommentItem {
6765    #[serde(default, skip_serializing_if = "Option::is_none")]
6766    pub id: Option<String>,
6767    #[serde(default, skip_serializing_if = "Option::is_none")]
6768    pub r#type: Option<String>,
6769}
6770
6771#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6772#[serde(transparent)]
6773pub struct CompletionRuleVariableVariableType(pub String);
6774
6775impl CompletionRuleVariableVariableType {
6776    pub const TASK_COMPLETION_RULE: &'static str = "task_completion_rule";
6777}
6778
6779#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6780#[serde(transparent)]
6781pub struct CompletionRuleVariableVariableValue(pub String);
6782
6783impl CompletionRuleVariableVariableValue {
6784    pub const ALL_ASSIGNEES: &'static str = "all_assignees";
6785    pub const ANY_ASSIGNEES: &'static str = "any_assignees";
6786}
6787
6788#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6789pub struct ConflictErrorContextInfo {
6790    #[serde(default, skip_serializing_if = "Option::is_none")]
6791    pub conflicts: Option<Vec<FileConflict>>,
6792}
6793
6794#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6795#[serde(transparent)]
6796pub struct DevicePinnerType(pub String);
6797
6798impl DevicePinnerType {
6799    pub const DEVICE_PINNER: &'static str = "device_pinner";
6800}
6801
6802#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6803#[serde(transparent)]
6804pub struct OrderBy(pub String);
6805
6806impl OrderBy {
6807    pub const ID: &'static str = "id";
6808}
6809
6810#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6811#[serde(transparent)]
6812pub struct DevicePinnersOrderDirection(pub String);
6813
6814impl DevicePinnersOrderDirection {
6815    pub const ASC: &'static str = "asc";
6816    pub const DESC: &'static str = "desc";
6817}
6818
6819#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
6820pub struct DevicePinnersOrder {
6821    #[serde(default, skip_serializing_if = "Option::is_none")]
6822    pub by: Option<OrderBy>,
6823    #[serde(default, skip_serializing_if = "Option::is_none")]
6824    pub direction: Option<DevicePinnersOrderDirection>,
6825}
6826
6827#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6828#[serde(transparent)]
6829pub struct EmailAliasType(pub String);
6830
6831impl EmailAliasType {
6832    pub const EMAIL_ALIAS: &'static str = "email_alias";
6833}
6834
6835#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
6836#[serde(transparent)]
6837pub struct EventEventType(pub String);
6838
6839impl EventEventType {
6840    pub const ACCESS_GRANTED: &'static str = "ACCESS_GRANTED";
6841    pub const ACCESS_REVOKED: &'static str = "ACCESS_REVOKED";
6842    pub const ADD_DEVICE_ASSOCIATION: &'static str = "ADD_DEVICE_ASSOCIATION";
6843    pub const ADD_LOGIN_ACTIVITY_DEVICE: &'static str = "ADD_LOGIN_ACTIVITY_DEVICE";
6844    pub const ADMIN_LOGIN: &'static str = "ADMIN_LOGIN";
6845    pub const ADVANCED_FOLDER_SETTINGS_UPDATE: &'static str = "ADVANCED_FOLDER_SETTINGS_UPDATE";
6846    pub const AI_SECURITY_DETECTION: &'static str = "AI_SECURITY_DETECTION";
6847    pub const ANNOTATIONV2_CREATE: &'static str = "ANNOTATIONV2_CREATE";
6848    pub const ANNOTATIONV2_DELETE: &'static str = "ANNOTATIONV2_DELETE";
6849    pub const ANNOTATIONV2_EDIT: &'static str = "ANNOTATIONV2_EDIT";
6850    pub const APPLICATION_CREATED: &'static str = "APPLICATION_CREATED";
6851    pub const APPLICATION_PUBLIC_KEY_ADDED: &'static str = "APPLICATION_PUBLIC_KEY_ADDED";
6852    pub const APPLICATION_PUBLIC_KEY_DELETED: &'static str = "APPLICATION_PUBLIC_KEY_DELETED";
6853    pub const BOX_AI_USER_FAILED_REQUEST: &'static str = "BOX_AI_USER_FAILED_REQUEST";
6854    pub const BOX_AI_USER_REQUEST: &'static str = "BOX_AI_USER_REQUEST";
6855    pub const CHANGE_ADMIN_ROLE: &'static str = "CHANGE_ADMIN_ROLE";
6856    pub const CHANGE_FOLDER_PERMISSION: &'static str = "CHANGE_FOLDER_PERMISSION";
6857    pub const COLLABORATION_ACCEPT: &'static str = "COLLABORATION_ACCEPT";
6858    pub const COLLABORATION_EXPIRATION: &'static str = "COLLABORATION_EXPIRATION";
6859    pub const COLLABORATION_INVITE: &'static str = "COLLABORATION_INVITE";
6860    pub const COLLABORATION_REMOVE: &'static str = "COLLABORATION_REMOVE";
6861    pub const COLLABORATION_ROLE_CHANGE: &'static str = "COLLABORATION_ROLE_CHANGE";
6862    pub const COLLAB_ADD_COLLABORATOR: &'static str = "COLLAB_ADD_COLLABORATOR";
6863    pub const COLLAB_INVITE_COLLABORATOR: &'static str = "COLLAB_INVITE_COLLABORATOR";
6864    pub const COLLAB_REMOVE_COLLABORATOR: &'static str = "COLLAB_REMOVE_COLLABORATOR";
6865    pub const COLLAB_ROLE_CHANGE: &'static str = "COLLAB_ROLE_CHANGE";
6866    pub const COLLECTION_CREATE: &'static str = "COLLECTION_CREATE";
6867    pub const COLLECTION_DELETE: &'static str = "COLLECTION_DELETE";
6868    pub const COLLECTION_ITEM_CREATE: &'static str = "COLLECTION_ITEM_CREATE";
6869    pub const COLLECTION_ITEM_DELETE: &'static str = "COLLECTION_ITEM_DELETE";
6870    pub const COLLECTION_ITEM_UPDATE: &'static str = "COLLECTION_ITEM_UPDATE";
6871    pub const COLLECTION_UPDATE: &'static str = "COLLECTION_UPDATE";
6872    pub const COMMENT_CREATE: &'static str = "COMMENT_CREATE";
6873    pub const COMMENT_DELETE: &'static str = "COMMENT_DELETE";
6874    pub const COMMENT_EDIT: &'static str = "COMMENT_EDIT";
6875    pub const CONTENT_ACCESS: &'static str = "CONTENT_ACCESS";
6876    pub const CONTENT_RECOVERY_REPORT_CREATE: &'static str = "CONTENT_RECOVERY_REPORT_CREATE";
6877    pub const CONTENT_RECOVERY_REPORT_DELETE: &'static str = "CONTENT_RECOVERY_REPORT_DELETE";
6878    pub const CONTENT_RECOVERY_REPORT_INITIATE: &'static str = "CONTENT_RECOVERY_REPORT_INITIATE";
6879    pub const CONTENT_WORKFLOW_ABNORMAL_DOWNLOAD_ACTIVITY: &'static str =
6880        "CONTENT_WORKFLOW_ABNORMAL_DOWNLOAD_ACTIVITY";
6881    pub const CONTENT_WORKFLOW_AUTOMATION_ADD: &'static str = "CONTENT_WORKFLOW_AUTOMATION_ADD";
6882    pub const CONTENT_WORKFLOW_AUTOMATION_DELETE: &'static str =
6883        "CONTENT_WORKFLOW_AUTOMATION_DELETE";
6884    pub const CONTENT_WORKFLOW_POLICY_ADD: &'static str = "CONTENT_WORKFLOW_POLICY_ADD";
6885    pub const CONTENT_WORKFLOW_SHARING_POLICY_VIOLATION: &'static str =
6886        "CONTENT_WORKFLOW_SHARING_POLICY_VIOLATION";
6887    pub const CONTENT_WORKFLOW_UPLOAD_POLICY_VIOLATION: &'static str =
6888        "CONTENT_WORKFLOW_UPLOAD_POLICY_VIOLATION";
6889    pub const COPY: &'static str = "COPY";
6890    pub const DATA_RETENTION_CREATE_RETENTION: &'static str = "DATA_RETENTION_CREATE_RETENTION";
6891    pub const DATA_RETENTION_REMOVE_RETENTION: &'static str = "DATA_RETENTION_REMOVE_RETENTION";
6892    pub const DELETE: &'static str = "DELETE";
6893    pub const DELETE_USER: &'static str = "DELETE_USER";
6894    pub const DEVICE_TRUST_CHECK_FAILED: &'static str = "DEVICE_TRUST_CHECK_FAILED";
6895    pub const DISABLE_MULTI_FACTOR_AUTH: &'static str = "DISABLE_MULTI_FACTOR_AUTH";
6896    pub const DOWNLOAD: &'static str = "DOWNLOAD";
6897    pub const EDIT: &'static str = "EDIT";
6898    pub const EDIT_USER: &'static str = "EDIT_USER";
6899    pub const EDR_CROWDSTRIKE_ACCESS_ALLOWED_NO_CROWDSTRIKE_DEVICE: &'static str =
6900        "EDR_CROWDSTRIKE_ACCESS_ALLOWED_NO_CROWDSTRIKE_DEVICE";
6901    pub const EDR_CROWDSTRIKE_ACCESS_REVOKED: &'static str = "EDR_CROWDSTRIKE_ACCESS_REVOKED";
6902    pub const EDR_CROWDSTRIKE_BOX_TOOLS_OUTDATED: &'static str =
6903        "EDR_CROWDSTRIKE_BOX_TOOLS_OUTDATED";
6904    pub const EDR_CROWDSTRIKE_DEVICE_DETECTED: &'static str = "EDR_CROWDSTRIKE_DEVICE_DETECTED";
6905    pub const EDR_CROWDSTRIKE_DRIVE_OUTDATED: &'static str = "EDR_CROWDSTRIKE_DRIVE_OUTDATED";
6906    pub const EDR_CROWDSTRIKE_NO_BOX_TOOLS: &'static str = "EDR_CROWDSTRIKE_NO_BOX_TOOLS";
6907    pub const EMAIL_ALIAS_CONFIRM: &'static str = "EMAIL_ALIAS_CONFIRM";
6908    pub const EMAIL_ALIAS_PRIMARY: &'static str = "EMAIL_ALIAS_PRIMARY";
6909    pub const EMAIL_ALIAS_REMOVE: &'static str = "EMAIL_ALIAS_REMOVE";
6910    pub const EMAIL_UPLOAD_DISABLED: &'static str = "EMAIL_UPLOAD_DISABLED";
6911    pub const EMAIL_UPLOAD_ENABLED: &'static str = "EMAIL_UPLOAD_ENABLED";
6912    pub const ENABLE_MULTI_FACTOR_AUTH: &'static str = "ENABLE_MULTI_FACTOR_AUTH";
6913    pub const ENABLE_TWO_FACTOR_AUTH: &'static str = "ENABLE_TWO_FACTOR_AUTH";
6914    pub const ENTERPRISE_APP_AUTHORIZATION_UPDATE: &'static str =
6915        "ENTERPRISE_APP_AUTHORIZATION_UPDATE";
6916    pub const EXTERNAL_COLLAB_SECURITY_SETTINGS: &'static str = "EXTERNAL_COLLAB_SECURITY_SETTINGS";
6917    pub const FAILED_LOGIN: &'static str = "FAILED_LOGIN";
6918    pub const FAVORITE: &'static str = "FAVORITE";
6919    pub const FILE_MARKED_MALICIOUS: &'static str = "FILE_MARKED_MALICIOUS";
6920    pub const FILE_REQUEST_CREATE: &'static str = "FILE_REQUEST_CREATE";
6921    pub const FILE_REQUEST_DELETE: &'static str = "FILE_REQUEST_DELETE";
6922    pub const FILE_REQUEST_UPDATE: &'static str = "FILE_REQUEST_UPDATE";
6923    pub const FILE_VERSION_RESTORE: &'static str = "FILE_VERSION_RESTORE";
6924    pub const FILE_WATERMARKED_DOWNLOAD: &'static str = "FILE_WATERMARKED_DOWNLOAD";
6925    pub const GROUP_ADD_ITEM: &'static str = "GROUP_ADD_ITEM";
6926    pub const GROUP_ADD_USER: &'static str = "GROUP_ADD_USER";
6927    pub const GROUP_ADMIN_CREATED: &'static str = "GROUP_ADMIN_CREATED";
6928    pub const GROUP_ADMIN_DELETED: &'static str = "GROUP_ADMIN_DELETED";
6929    pub const GROUP_ADMIN_PERMISSIONS_UPDATED: &'static str = "GROUP_ADMIN_PERMISSIONS_UPDATED";
6930    pub const GROUP_CREATION: &'static str = "GROUP_CREATION";
6931    pub const GROUP_DELETION: &'static str = "GROUP_DELETION";
6932    pub const GROUP_EDITED: &'static str = "GROUP_EDITED";
6933    pub const GROUP_REMOVE_ITEM: &'static str = "GROUP_REMOVE_ITEM";
6934    pub const GROUP_REMOVE_USER: &'static str = "GROUP_REMOVE_USER";
6935    pub const ILLEGAL_ITEM_OWNERSHIP_TRANSFER_BY_USER: &'static str =
6936        "ILLEGAL_ITEM_OWNERSHIP_TRANSFER_BY_USER";
6937    pub const ITEM_ASSOCIATION_CREATED: &'static str = "ITEM_ASSOCIATION_CREATED";
6938    pub const ITEM_ASSOCIATION_DELETED: &'static str = "ITEM_ASSOCIATION_DELETED";
6939    pub const ITEM_ASSOCIATION_UPDATED: &'static str = "ITEM_ASSOCIATION_UPDATED";
6940    pub const ITEM_COPY: &'static str = "ITEM_COPY";
6941    pub const ITEM_CREATE: &'static str = "ITEM_CREATE";
6942    pub const ITEM_DOWNLOAD: &'static str = "ITEM_DOWNLOAD";
6943    pub const ITEM_EMAIL_SEND: &'static str = "ITEM_EMAIL_SEND";
6944    pub const ITEM_MAKE_CURRENT_VERSION: &'static str = "ITEM_MAKE_CURRENT_VERSION";
6945    pub const ITEM_MODIFY: &'static str = "ITEM_MODIFY";
6946    pub const ITEM_MOVE: &'static str = "ITEM_MOVE";
6947    pub const ITEM_OPEN: &'static str = "ITEM_OPEN";
6948    pub const ITEM_PREVIEW: &'static str = "ITEM_PREVIEW";
6949    pub const ITEM_RENAME: &'static str = "ITEM_RENAME";
6950    pub const ITEM_SHARED: &'static str = "ITEM_SHARED";
6951    pub const ITEM_SHARED_CREATE: &'static str = "ITEM_SHARED_CREATE";
6952    pub const ITEM_SHARED_UNSHARE: &'static str = "ITEM_SHARED_UNSHARE";
6953    pub const ITEM_SHARED_UPDATE: &'static str = "ITEM_SHARED_UPDATE";
6954    pub const ITEM_SYNC: &'static str = "ITEM_SYNC";
6955    pub const ITEM_TRASH: &'static str = "ITEM_TRASH";
6956    pub const ITEM_UNDELETE_VIA_TRASH: &'static str = "ITEM_UNDELETE_VIA_TRASH";
6957    pub const ITEM_UNSYNC: &'static str = "ITEM_UNSYNC";
6958    pub const ITEM_UPLOAD: &'static str = "ITEM_UPLOAD";
6959    pub const LEGAL_HOLD_ASSIGNMENT_CREATE: &'static str = "LEGAL_HOLD_ASSIGNMENT_CREATE";
6960    pub const LEGAL_HOLD_ASSIGNMENT_DELETE: &'static str = "LEGAL_HOLD_ASSIGNMENT_DELETE";
6961    pub const LEGAL_HOLD_POLICY_CREATE: &'static str = "LEGAL_HOLD_POLICY_CREATE";
6962    pub const LEGAL_HOLD_POLICY_DELETE: &'static str = "LEGAL_HOLD_POLICY_DELETE";
6963    pub const LEGAL_HOLD_POLICY_UPDATE: &'static str = "LEGAL_HOLD_POLICY_UPDATE";
6964    pub const LOCK: &'static str = "LOCK";
6965    pub const LOCK_CREATE: &'static str = "LOCK_CREATE";
6966    pub const LOCK_DESTROY: &'static str = "LOCK_DESTROY";
6967    pub const LOGIN: &'static str = "LOGIN";
6968    pub const MASTER_INVITE_ACCEPT: &'static str = "MASTER_INVITE_ACCEPT";
6969    pub const MASTER_INVITE_REJECT: &'static str = "MASTER_INVITE_REJECT";
6970    pub const METADATA_CASCADE_POLICY_APPLY: &'static str = "METADATA_CASCADE_POLICY_APPLY";
6971    pub const METADATA_CASCADE_POLICY_CREATE: &'static str = "METADATA_CASCADE_POLICY_CREATE";
6972    pub const METADATA_INSTANCE_COPY: &'static str = "METADATA_INSTANCE_COPY";
6973    pub const METADATA_INSTANCE_CREATE: &'static str = "METADATA_INSTANCE_CREATE";
6974    pub const METADATA_INSTANCE_DELETE: &'static str = "METADATA_INSTANCE_DELETE";
6975    pub const METADATA_INSTANCE_UPDATE: &'static str = "METADATA_INSTANCE_UPDATE";
6976    pub const METADATA_TEMPLATE_CREATE: &'static str = "METADATA_TEMPLATE_CREATE";
6977    pub const METADATA_TEMPLATE_DELETE: &'static str = "METADATA_TEMPLATE_DELETE";
6978    pub const METADATA_TEMPLATE_UPDATE: &'static str = "METADATA_TEMPLATE_UPDATE";
6979    pub const MOVE: &'static str = "MOVE";
6980    pub const NEW_USER: &'static str = "NEW_USER";
6981    pub const OAUTH2_ACCESS_TOKEN_REVOKE: &'static str = "OAUTH2_ACCESS_TOKEN_REVOKE";
6982    pub const OAUTH2_REFRESH_TOKEN_REVOKE: &'static str = "OAUTH2_REFRESH_TOKEN_REVOKE";
6983    pub const PREVIEW: &'static str = "PREVIEW";
6984    pub const REMOVE_DEVICE_ASSOCIATION: &'static str = "REMOVE_DEVICE_ASSOCIATION";
6985    pub const REMOVE_LOGIN_ACTIVITY_DEVICE: &'static str = "REMOVE_LOGIN_ACTIVITY_DEVICE";
6986    pub const RENAME: &'static str = "RENAME";
6987    pub const RETENTION_POLICY_ASSIGNMENT_ADD: &'static str = "RETENTION_POLICY_ASSIGNMENT_ADD";
6988    pub const SHARE: &'static str = "SHARE";
6989    pub const SHARED_LINK_REDIRECT_OUT_OF_SHARED_CONTEXT: &'static str =
6990        "SHARED_LINK_REDIRECT_OUT_OF_SHARED_CONTEXT";
6991    pub const SHARED_LINK_SEND: &'static str = "SHARED_LINK_SEND";
6992    pub const SHARE_EXPIRATION: &'static str = "SHARE_EXPIRATION";
6993    pub const SHIELD_ACCESS_POLICY_CREATED: &'static str = "SHIELD_ACCESS_POLICY_CREATED";
6994    pub const SHIELD_ACCESS_POLICY_DELETED: &'static str = "SHIELD_ACCESS_POLICY_DELETED";
6995    pub const SHIELD_ACCESS_POLICY_UPDATED: &'static str = "SHIELD_ACCESS_POLICY_UPDATED";
6996    pub const SHIELD_ALERT: &'static str = "SHIELD_ALERT";
6997    pub const SHIELD_DOWNLOAD_BLOCKED: &'static str = "SHIELD_DOWNLOAD_BLOCKED";
6998    pub const SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED: &'static str =
6999        "SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED";
7000    pub const SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION: &'static str =
7001        "SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION";
7002    pub const SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED: &'static str =
7003        "SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED";
7004    pub const SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION: &'static str =
7005        "SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION";
7006    pub const SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED: &'static str =
7007        "SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED";
7008    pub const SHIELD_INFORMATION_BARRIER_COLLAB_BLOCKED: &'static str =
7009        "SHIELD_INFORMATION_BARRIER_COLLAB_BLOCKED";
7010    pub const SHIELD_INFORMATION_BARRIER_DISABLED: &'static str =
7011        "SHIELD_INFORMATION_BARRIER_DISABLED";
7012    pub const SHIELD_INFORMATION_BARRIER_ENABLED: &'static str =
7013        "SHIELD_INFORMATION_BARRIER_ENABLED";
7014    pub const SHIELD_INFORMATION_BARRIER_GROUP_ADD_USER_BLOCKED: &'static str =
7015        "SHIELD_INFORMATION_BARRIER_GROUP_ADD_USER_BLOCKED";
7016    pub const SHIELD_INFORMATION_BARRIER_ITEM_COPY_BLOCKED: &'static str =
7017        "SHIELD_INFORMATION_BARRIER_ITEM_COPY_BLOCKED";
7018    pub const SHIELD_INFORMATION_BARRIER_ITEM_MOVE_BLOCKED: &'static str =
7019        "SHIELD_INFORMATION_BARRIER_ITEM_MOVE_BLOCKED";
7020    pub const SHIELD_INFORMATION_BARRIER_ITEM_OWNER_TRANSFER_BLOCKED: &'static str =
7021        "SHIELD_INFORMATION_BARRIER_ITEM_OWNER_TRANSFER_BLOCKED";
7022    pub const SHIELD_INFORMATION_BARRIER_PENDING: &'static str =
7023        "SHIELD_INFORMATION_BARRIER_PENDING";
7024    pub const SHIELD_INFORMATION_BARRIER_SHARED_ITEM_ACCESS_BLOCKED: &'static str =
7025        "SHIELD_INFORMATION_BARRIER_SHARED_ITEM_ACCESS_BLOCKED";
7026    pub const SHIELD_JUSTIFICATION_APPROVAL: &'static str = "SHIELD_JUSTIFICATION_APPROVAL";
7027    pub const SHIELD_PREVIEW_BLOCKED: &'static str = "SHIELD_PREVIEW_BLOCKED";
7028    pub const SHIELD_SHARED_LINK_ACCESS_BLOCKED: &'static str = "SHIELD_SHARED_LINK_ACCESS_BLOCKED";
7029    pub const SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_CREATE: &'static str =
7030        "SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_CREATE";
7031    pub const SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_UPDATE: &'static str =
7032        "SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_UPDATE";
7033    pub const SIGN_DOCUMENT_ASSIGNED: &'static str = "SIGN_DOCUMENT_ASSIGNED";
7034    pub const SIGN_DOCUMENT_CANCELLED: &'static str = "SIGN_DOCUMENT_CANCELLED";
7035    pub const SIGN_DOCUMENT_COMPLETED: &'static str = "SIGN_DOCUMENT_COMPLETED";
7036    pub const SIGN_DOCUMENT_CONVERTED: &'static str = "SIGN_DOCUMENT_CONVERTED";
7037    pub const SIGN_DOCUMENT_CREATED: &'static str = "SIGN_DOCUMENT_CREATED";
7038    pub const SIGN_DOCUMENT_DECLINED: &'static str = "SIGN_DOCUMENT_DECLINED";
7039    pub const SIGN_DOCUMENT_EXPIRED: &'static str = "SIGN_DOCUMENT_EXPIRED";
7040    pub const SIGN_DOCUMENT_SIGNED: &'static str = "SIGN_DOCUMENT_SIGNED";
7041    pub const SIGN_DOCUMENT_VIEWED_BY_SIGNED: &'static str = "SIGN_DOCUMENT_VIEWED_BY_SIGNED";
7042    pub const SIGN_DOCUMENT_VIEWED_BY_SIGNER: &'static str = "SIGN_DOCUMENT_VIEWED_BY_SIGNER";
7043    pub const SIGNER_DOWNLOADED: &'static str = "SIGNER_DOWNLOADED";
7044    pub const SIGNER_FORWARDED: &'static str = "SIGNER_FORWARDED";
7045    pub const STORAGE_EXPIRATION: &'static str = "STORAGE_EXPIRATION";
7046    pub const TAG_ITEM_CREATE: &'static str = "TAG_ITEM_CREATE";
7047    pub const TASK_ASSIGNMENT_CREATE: &'static str = "TASK_ASSIGNMENT_CREATE";
7048    pub const TASK_ASSIGNMENT_DELETE: &'static str = "TASK_ASSIGNMENT_DELETE";
7049    pub const TASK_ASSIGNMENT_UPDATE: &'static str = "TASK_ASSIGNMENT_UPDATE";
7050    pub const TASK_CREATE: &'static str = "TASK_CREATE";
7051    pub const TASK_UPDATE: &'static str = "TASK_UPDATE";
7052    pub const TERMS_OF_SERVICE_ACCEPT: &'static str = "TERMS_OF_SERVICE_ACCEPT";
7053    pub const TERMS_OF_SERVICE_REJECT: &'static str = "TERMS_OF_SERVICE_REJECT";
7054    pub const UNDELETE: &'static str = "UNDELETE";
7055    pub const UNFAVORITE: &'static str = "UNFAVORITE";
7056    pub const UNLOCK: &'static str = "UNLOCK";
7057    pub const UNSHARE: &'static str = "UNSHARE";
7058    pub const UPDATE_COLLABORATION_EXPIRATION: &'static str = "UPDATE_COLLABORATION_EXPIRATION";
7059    pub const UPDATE_SHARE_EXPIRATION: &'static str = "UPDATE_SHARE_EXPIRATION";
7060    pub const UPLOAD: &'static str = "UPLOAD";
7061    pub const USER_AUTHENTICATE_OAUTH2_ACCESS_TOKEN_CREATE: &'static str =
7062        "USER_AUTHENTICATE_OAUTH2_ACCESS_TOKEN_CREATE";
7063    pub const WATERMARK_LABEL_CREATE: &'static str = "WATERMARK_LABEL_CREATE";
7064    pub const WATERMARK_LABEL_DELETE: &'static str = "WATERMARK_LABEL_DELETE";
7065    pub const WORKFLOW_AUTOMATION_CREATE: &'static str = "WORKFLOW_AUTOMATION_CREATE";
7066    pub const WORKFLOW_AUTOMATION_DELETE: &'static str = "WORKFLOW_AUTOMATION_DELETE";
7067    pub const WORKFLOW_AUTOMATION_UPDATE: &'static str = "WORKFLOW_AUTOMATION_UPDATE";
7068}
7069
7070#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7071#[serde(transparent)]
7072pub struct EventsNextStreamPosition(pub serde_json::Value);
7073
7074#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7075#[serde(transparent)]
7076pub struct EventSourceItemType(pub String);
7077
7078impl EventSourceItemType {
7079    pub const FILE: &'static str = "file";
7080    pub const FOLDER: &'static str = "folder";
7081}
7082
7083#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7084pub struct EventSourceClassification {
7085    #[serde(default, skip_serializing_if = "Option::is_none")]
7086    pub name: Option<String>,
7087}
7088
7089#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7090pub struct FilePathCollection {
7091    pub total_count: i64,
7092    pub entries: Vec<FolderMini>,
7093}
7094
7095#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7096#[serde(transparent)]
7097pub struct SharedLinkAccess(pub String);
7098
7099impl SharedLinkAccess {
7100    pub const OPEN: &'static str = "open";
7101    pub const COMPANY: &'static str = "company";
7102    pub const COLLABORATORS: &'static str = "collaborators";
7103}
7104
7105#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7106#[serde(transparent)]
7107pub struct SharedLinkEffectivePermission(pub String);
7108
7109impl SharedLinkEffectivePermission {
7110    pub const CAN_EDIT: &'static str = "can_edit";
7111    pub const CAN_DOWNLOAD: &'static str = "can_download";
7112    pub const CAN_PREVIEW: &'static str = "can_preview";
7113    pub const NO_ACCESS: &'static str = "no_access";
7114}
7115
7116#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7117pub struct SharedLinkPermissions {
7118    #[serde(default, skip_serializing_if = "Option::is_none")]
7119    pub can_download: Option<bool>,
7120    #[serde(default, skip_serializing_if = "Option::is_none")]
7121    pub can_preview: Option<bool>,
7122    #[serde(default, skip_serializing_if = "Option::is_none")]
7123    pub can_edit: Option<bool>,
7124    #[serde(
7125        default,
7126        skip_serializing_if = "Option::is_none",
7127        deserialize_with = "double_option"
7128    )]
7129    pub shared_links_option: Option<Option<String>>,
7130    #[serde(
7131        default,
7132        skip_serializing_if = "Option::is_none",
7133        deserialize_with = "double_option"
7134    )]
7135    pub default_shared_link_type: Option<Option<String>>,
7136    #[serde(
7137        default,
7138        skip_serializing_if = "Option::is_none",
7139        deserialize_with = "double_option"
7140    )]
7141    pub notes_shared_link_option: Option<Option<String>>,
7142    #[serde(
7143        default,
7144        skip_serializing_if = "Option::is_none",
7145        deserialize_with = "double_option"
7146    )]
7147    pub default_notes_shared_link_type: Option<Option<String>>,
7148}
7149
7150#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7151pub struct FileSharedLink {
7152    pub url: String,
7153    #[serde(
7154        default,
7155        skip_serializing_if = "Option::is_none",
7156        deserialize_with = "double_option"
7157    )]
7158    pub download_url: Option<Option<String>>,
7159    #[serde(
7160        default,
7161        skip_serializing_if = "Option::is_none",
7162        deserialize_with = "double_option"
7163    )]
7164    pub vanity_url: Option<Option<String>>,
7165    #[serde(
7166        default,
7167        skip_serializing_if = "Option::is_none",
7168        deserialize_with = "double_option"
7169    )]
7170    pub vanity_name: Option<Option<String>>,
7171    #[serde(default, skip_serializing_if = "Option::is_none")]
7172    pub access: Option<SharedLinkAccess>,
7173    pub effective_access: SharedLinkAccess,
7174    pub effective_permission: SharedLinkEffectivePermission,
7175    #[serde(
7176        default,
7177        skip_serializing_if = "Option::is_none",
7178        deserialize_with = "double_option"
7179    )]
7180    pub unshared_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
7181    pub is_password_enabled: bool,
7182    #[serde(default, skip_serializing_if = "Option::is_none")]
7183    pub permissions: Option<SharedLinkPermissions>,
7184    pub download_count: i64,
7185    pub preview_count: i64,
7186}
7187
7188#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7189#[serde(transparent)]
7190pub struct FileItemStatus(pub String);
7191
7192impl FileItemStatus {
7193    pub const ACTIVE: &'static str = "active";
7194    pub const TRASHED: &'static str = "trashed";
7195    pub const DELETED: &'static str = "deleted";
7196}
7197
7198#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7199pub struct FileFullPermissions {
7200    pub can_delete: bool,
7201    pub can_download: bool,
7202    pub can_invite_collaborator: bool,
7203    pub can_rename: bool,
7204    pub can_set_share_access: bool,
7205    pub can_share: bool,
7206    pub can_annotate: bool,
7207    pub can_comment: bool,
7208    pub can_preview: bool,
7209    pub can_upload: bool,
7210    pub can_view_annotations_all: bool,
7211    pub can_view_annotations_self: bool,
7212    #[serde(default, skip_serializing_if = "Option::is_none")]
7213    pub can_apply_watermark: Option<bool>,
7214}
7215
7216#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7217#[serde(transparent)]
7218pub struct LockType(pub String);
7219
7220impl LockType {
7221    pub const LOCK: &'static str = "lock";
7222}
7223
7224#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7225#[serde(transparent)]
7226pub struct LockAppType(pub String);
7227
7228impl LockAppType {
7229    pub const GSUITE: &'static str = "gsuite";
7230    pub const OFFICE_WOPI: &'static str = "office_wopi";
7231    pub const OFFICE_WOPIPLUS: &'static str = "office_wopiplus";
7232    pub const OTHER: &'static str = "other";
7233}
7234
7235#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7236pub struct FileFullLock {
7237    #[serde(default, skip_serializing_if = "Option::is_none")]
7238    pub id: Option<String>,
7239    #[serde(default, skip_serializing_if = "Option::is_none")]
7240    pub r#type: Option<LockType>,
7241    #[serde(default, skip_serializing_if = "Option::is_none")]
7242    pub created_by: Option<UserMini>,
7243    #[serde(default, skip_serializing_if = "Option::is_none")]
7244    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7245    #[serde(default, skip_serializing_if = "Option::is_none")]
7246    pub expired_at: Option<chrono::DateTime<chrono::Utc>>,
7247    #[serde(default, skip_serializing_if = "Option::is_none")]
7248    pub is_download_prevented: Option<bool>,
7249    #[serde(
7250        default,
7251        skip_serializing_if = "Option::is_none",
7252        deserialize_with = "double_option"
7253    )]
7254    pub app_type: Option<Option<LockAppType>>,
7255}
7256
7257#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7258pub struct FileFullExpiringEmbedLink {
7259    #[serde(default, skip_serializing_if = "Option::is_none")]
7260    pub access_token: Option<String>,
7261    #[serde(default, skip_serializing_if = "Option::is_none")]
7262    pub expires_in: Option<i64>,
7263    #[serde(default, skip_serializing_if = "Option::is_none")]
7264    pub token_type: Option<AccessTokenTokenType>,
7265    #[serde(default, skip_serializing_if = "Option::is_none")]
7266    pub restricted_to: Option<Vec<ResourceScope>>,
7267    #[serde(default, skip_serializing_if = "Option::is_none")]
7268    pub url: Option<String>,
7269}
7270
7271#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7272pub struct FileFullWatermarkInfo {
7273    #[serde(default, skip_serializing_if = "Option::is_none")]
7274    pub is_watermarked: Option<bool>,
7275    #[serde(default, skip_serializing_if = "Option::is_none")]
7276    pub is_watermark_inherited: Option<bool>,
7277    #[serde(default, skip_serializing_if = "Option::is_none")]
7278    pub is_watermarked_by_access_policy: Option<bool>,
7279}
7280
7281#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7282#[serde(transparent)]
7283pub struct FileFullAllowedInviteeRoles(pub String);
7284
7285impl FileFullAllowedInviteeRoles {
7286    pub const EDITOR: &'static str = "editor";
7287    pub const VIEWER: &'static str = "viewer";
7288    pub const PREVIEWER: &'static str = "previewer";
7289    pub const UPLOADER: &'static str = "uploader";
7290    pub const PREVIEWER_UPLOADER: &'static str = "previewer uploader";
7291    pub const VIEWER_UPLOADER: &'static str = "viewer uploader";
7292    pub const CO_OWNER: &'static str = "co-owner";
7293}
7294
7295#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7296pub struct EntriesContent {
7297    #[serde(default, skip_serializing_if = "Option::is_none")]
7298    pub url_template: Option<String>,
7299}
7300
7301#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7302pub struct EntriesInfo {
7303    #[serde(default, skip_serializing_if = "Option::is_none")]
7304    pub url: Option<String>,
7305}
7306
7307#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7308pub struct EntriesProperties {
7309    #[serde(default, skip_serializing_if = "Option::is_none")]
7310    pub dimensions: Option<String>,
7311    #[serde(default, skip_serializing_if = "Option::is_none")]
7312    pub paged: Option<String>,
7313    #[serde(default, skip_serializing_if = "Option::is_none")]
7314    pub thumb: Option<String>,
7315}
7316
7317#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7318#[serde(transparent)]
7319pub struct StatusState(pub String);
7320
7321impl StatusState {
7322    pub const SUCCESS: &'static str = "success";
7323    pub const VIEWABLE: &'static str = "viewable";
7324    pub const PENDING: &'static str = "pending";
7325    pub const NONE: &'static str = "none";
7326}
7327
7328#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7329pub struct EntriesStatus {
7330    #[serde(default, skip_serializing_if = "Option::is_none")]
7331    pub state: Option<StatusState>,
7332}
7333
7334#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7335pub struct RepresentationsEntries {
7336    #[serde(default, skip_serializing_if = "Option::is_none")]
7337    pub content: Option<EntriesContent>,
7338    #[serde(default, skip_serializing_if = "Option::is_none")]
7339    pub info: Option<EntriesInfo>,
7340    #[serde(default, skip_serializing_if = "Option::is_none")]
7341    pub properties: Option<EntriesProperties>,
7342    #[serde(default, skip_serializing_if = "Option::is_none")]
7343    pub representation: Option<String>,
7344    #[serde(default, skip_serializing_if = "Option::is_none")]
7345    pub status: Option<EntriesStatus>,
7346}
7347
7348#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7349pub struct FileFullRepresentations {
7350    #[serde(default, skip_serializing_if = "Option::is_none")]
7351    pub entries: Option<Vec<RepresentationsEntries>>,
7352}
7353
7354#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7355pub struct FileFullClassification {
7356    #[serde(default, skip_serializing_if = "Option::is_none")]
7357    pub name: Option<String>,
7358    #[serde(default, skip_serializing_if = "Option::is_none")]
7359    pub definition: Option<String>,
7360    #[serde(default, skip_serializing_if = "Option::is_none")]
7361    pub color: Option<String>,
7362}
7363
7364#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7365#[serde(transparent)]
7366pub struct FileFullSharedLinkPermissionOptions(pub String);
7367
7368impl FileFullSharedLinkPermissionOptions {
7369    pub const CAN_PREVIEW: &'static str = "can_preview";
7370    pub const CAN_DOWNLOAD: &'static str = "can_download";
7371    pub const CAN_EDIT: &'static str = "can_edit";
7372}
7373
7374#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7375#[serde(transparent)]
7376pub struct FileRequestType(pub String);
7377
7378impl FileRequestType {
7379    pub const FILE_REQUEST: &'static str = "file_request";
7380}
7381
7382#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7383#[serde(transparent)]
7384pub struct FileRequestStatus(pub String);
7385
7386impl FileRequestStatus {
7387    pub const ACTIVE: &'static str = "active";
7388    pub const INACTIVE: &'static str = "inactive";
7389}
7390
7391#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7392#[serde(transparent)]
7393pub struct FolderType(pub String);
7394
7395impl FolderType {
7396    pub const FOLDER: &'static str = "folder";
7397}
7398
7399#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7400pub struct FileRequestCopyRequestFolder {
7401    #[serde(default, skip_serializing_if = "Option::is_none")]
7402    pub r#type: Option<FolderType>,
7403    pub id: String,
7404}
7405
7406#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7407#[serde(transparent)]
7408pub struct FileVersionType(pub String);
7409
7410impl FileVersionType {
7411    pub const FILE_VERSION: &'static str = "file_version";
7412}
7413
7414#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7415#[serde(transparent)]
7416pub struct FileVersionLegalHoldType(pub String);
7417
7418impl FileVersionLegalHoldType {
7419    pub const FILE_VERSION_LEGAL_HOLD: &'static str = "file_version_legal_hold";
7420}
7421
7422#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7423#[serde(transparent)]
7424pub struct FileVersionRetentionType(pub String);
7425
7426impl FileVersionRetentionType {
7427    pub const FILE_VERSION_RETENTION: &'static str = "file_version_retention";
7428}
7429
7430#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7431#[serde(transparent)]
7432pub struct FolderUploadEmailAccess(pub String);
7433
7434impl FolderUploadEmailAccess {
7435    pub const OPEN: &'static str = "open";
7436    pub const COLLABORATORS: &'static str = "collaborators";
7437}
7438
7439#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7440pub struct FolderFolderUploadEmail {
7441    #[serde(default, skip_serializing_if = "Option::is_none")]
7442    pub access: Option<FolderUploadEmailAccess>,
7443    #[serde(default, skip_serializing_if = "Option::is_none")]
7444    pub email: Option<String>,
7445}
7446
7447#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7448#[serde(transparent)]
7449pub struct FolderFullSyncState(pub String);
7450
7451impl FolderFullSyncState {
7452    pub const SYNCED: &'static str = "synced";
7453    pub const NOT_SYNCED: &'static str = "not_synced";
7454    pub const PARTIALLY_SYNCED: &'static str = "partially_synced";
7455}
7456
7457#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7458pub struct FolderFullPermissions {
7459    pub can_delete: bool,
7460    pub can_download: bool,
7461    pub can_invite_collaborator: bool,
7462    pub can_rename: bool,
7463    pub can_set_share_access: bool,
7464    pub can_share: bool,
7465    pub can_upload: bool,
7466    #[serde(default, skip_serializing_if = "Option::is_none")]
7467    pub can_apply_watermark: Option<bool>,
7468}
7469
7470#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7471pub struct FolderLockLockedOperations {
7472    pub r#move: bool,
7473    pub delete: bool,
7474}
7475
7476#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7477#[serde(transparent)]
7478pub struct GroupType(pub String);
7479
7480impl GroupType {
7481    pub const GROUP: &'static str = "group";
7482}
7483
7484#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7485#[serde(transparent)]
7486pub struct GroupGroupType(pub String);
7487
7488impl GroupGroupType {
7489    pub const MANAGED_GROUP: &'static str = "managed_group";
7490    pub const ALL_USERS_GROUP: &'static str = "all_users_group";
7491}
7492
7493#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7494#[serde(transparent)]
7495pub struct GroupFullInvitabilityLevel(pub String);
7496
7497impl GroupFullInvitabilityLevel {
7498    pub const ADMINS_ONLY: &'static str = "admins_only";
7499    pub const ADMINS_AND_MEMBERS: &'static str = "admins_and_members";
7500    pub const ALL_MANAGED_USERS: &'static str = "all_managed_users";
7501}
7502
7503#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7504pub struct GroupFullPermissions {
7505    #[serde(default, skip_serializing_if = "Option::is_none")]
7506    pub can_invite_as_collaborator: Option<bool>,
7507}
7508
7509#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7510#[serde(transparent)]
7511pub struct GroupMembershipType(pub String);
7512
7513impl GroupMembershipType {
7514    pub const GROUP_MEMBERSHIP: &'static str = "group_membership";
7515}
7516
7517#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7518#[serde(transparent)]
7519pub struct GroupMembershipRole(pub String);
7520
7521impl GroupMembershipRole {
7522    pub const MEMBER: &'static str = "member";
7523    pub const ADMIN: &'static str = "admin";
7524}
7525
7526#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7527#[serde(transparent)]
7528pub struct IntegrationMappingType(pub String);
7529
7530impl IntegrationMappingType {
7531    pub const INTEGRATION_MAPPING: &'static str = "integration_mapping";
7532}
7533
7534#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7535#[serde(transparent)]
7536pub struct IntegrationMappingIntegrationType(pub String);
7537
7538impl IntegrationMappingIntegrationType {
7539    pub const SLACK: &'static str = "slack";
7540}
7541
7542#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7543#[serde(transparent)]
7544pub struct IntegrationMappingPartnerItemSlackType(pub String);
7545
7546impl IntegrationMappingPartnerItemSlackType {
7547    pub const CHANNEL: &'static str = "channel";
7548}
7549
7550#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7551#[serde(transparent)]
7552pub struct IntegrationMappingPartnerItemTeamsType(pub String);
7553
7554impl IntegrationMappingPartnerItemTeamsType {
7555    pub const CHANNEL: &'static str = "channel";
7556    pub const TEAM: &'static str = "team";
7557}
7558
7559#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7560#[serde(transparent)]
7561pub struct IntegrationMappingTeamsIntegrationType(pub String);
7562
7563impl IntegrationMappingTeamsIntegrationType {
7564    pub const TEAMS: &'static str = "teams";
7565}
7566
7567#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7568#[serde(transparent)]
7569pub struct InviteType(pub String);
7570
7571impl InviteType {
7572    pub const INVITE: &'static str = "invite";
7573}
7574
7575#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7576#[serde(transparent)]
7577pub struct KeywordSkillCardType(pub String);
7578
7579impl KeywordSkillCardType {
7580    pub const SKILL_CARD: &'static str = "skill_card";
7581}
7582
7583#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7584#[serde(transparent)]
7585pub struct KeywordSkillCardSkillCardType(pub String);
7586
7587impl KeywordSkillCardSkillCardType {
7588    pub const KEYWORD: &'static str = "keyword";
7589}
7590
7591#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7592pub struct KeywordSkillCardSkillCardTitle {
7593    #[serde(default, skip_serializing_if = "Option::is_none")]
7594    pub code: Option<String>,
7595    pub message: String,
7596}
7597
7598#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7599#[serde(transparent)]
7600pub struct SkillType(pub String);
7601
7602impl SkillType {
7603    pub const SERVICE: &'static str = "service";
7604}
7605
7606#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7607pub struct KeywordSkillCardSkill {
7608    pub r#type: SkillType,
7609    pub id: String,
7610}
7611
7612#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7613#[serde(transparent)]
7614pub struct InvocationType(pub String);
7615
7616impl InvocationType {
7617    pub const SKILL_INVOCATION: &'static str = "skill_invocation";
7618}
7619
7620#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7621pub struct KeywordSkillCardInvocation {
7622    pub r#type: InvocationType,
7623    pub id: String,
7624}
7625
7626#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7627pub struct KeywordSkillCardEntries {
7628    #[serde(default, skip_serializing_if = "Option::is_none")]
7629    pub text: Option<String>,
7630}
7631
7632#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7633#[serde(transparent)]
7634pub struct LegalHoldPolicyType(pub String);
7635
7636impl LegalHoldPolicyType {
7637    pub const LEGAL_HOLD_POLICY: &'static str = "legal_hold_policy";
7638}
7639
7640#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7641#[serde(transparent)]
7642pub struct LegalHoldPolicyStatus(pub String);
7643
7644impl LegalHoldPolicyStatus {
7645    pub const ACTIVE: &'static str = "active";
7646    pub const APPLYING: &'static str = "applying";
7647    pub const RELEASING: &'static str = "releasing";
7648    pub const RELEASED: &'static str = "released";
7649}
7650
7651#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7652pub struct LegalHoldPolicyAssignmentCounts {
7653    #[serde(default, skip_serializing_if = "Option::is_none")]
7654    pub user: Option<i64>,
7655    #[serde(default, skip_serializing_if = "Option::is_none")]
7656    pub folder: Option<i64>,
7657    #[serde(default, skip_serializing_if = "Option::is_none")]
7658    pub file: Option<i64>,
7659    #[serde(default, skip_serializing_if = "Option::is_none")]
7660    pub file_version: Option<i64>,
7661    #[serde(default, skip_serializing_if = "Option::is_none")]
7662    pub ownership: Option<i64>,
7663    #[serde(default, skip_serializing_if = "Option::is_none")]
7664    pub interactions: Option<i64>,
7665}
7666
7667#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7668#[serde(transparent)]
7669pub struct LegalHoldPolicyAssignedItemType(pub String);
7670
7671impl LegalHoldPolicyAssignedItemType {
7672    pub const FILE: &'static str = "file";
7673    pub const FILE_VERSION: &'static str = "file_version";
7674    pub const FOLDER: &'static str = "folder";
7675    pub const USER: &'static str = "user";
7676    pub const OWNERSHIP: &'static str = "ownership";
7677    pub const INTERACTIONS: &'static str = "interactions";
7678}
7679
7680#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7681#[serde(transparent)]
7682pub struct LegalHoldPolicyAssignmentType(pub String);
7683
7684impl LegalHoldPolicyAssignmentType {
7685    pub const LEGAL_HOLD_POLICY_ASSIGNMENT: &'static str = "legal_hold_policy_assignment";
7686}
7687
7688#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7689#[serde(transparent)]
7690pub struct MetadataCascadePolicyType(pub String);
7691
7692impl MetadataCascadePolicyType {
7693    pub const METADATA_CASCADE_POLICY: &'static str = "metadata_cascade_policy";
7694}
7695
7696#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7697pub struct MetadataCascadePolicyOwnerEnterprise {
7698    #[serde(default, skip_serializing_if = "Option::is_none")]
7699    pub r#type: Option<EnterpriseType>,
7700    #[serde(default, skip_serializing_if = "Option::is_none")]
7701    pub id: Option<String>,
7702}
7703
7704#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7705pub struct MetadataCascadePolicyParent {
7706    #[serde(default, skip_serializing_if = "Option::is_none")]
7707    pub r#type: Option<FolderType>,
7708    #[serde(default, skip_serializing_if = "Option::is_none")]
7709    pub id: Option<String>,
7710}
7711
7712#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7713#[serde(transparent)]
7714pub struct MetadataFilterScope(pub String);
7715
7716impl MetadataFilterScope {
7717    pub const GLOBAL: &'static str = "global";
7718    pub const ENTERPRISE: &'static str = "enterprise";
7719    pub const ENTERPRISE_ENTERPRISE_ID: &'static str = "enterprise_{enterprise_id}";
7720}
7721
7722#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7723#[serde(transparent)]
7724pub struct OrderByDirection(pub String);
7725
7726impl OrderByDirection {
7727    pub const ASC: &'static str = "ASC";
7728    pub const DESC: &'static str = "DESC";
7729    pub const ASC_2: &'static str = "asc";
7730    pub const DESC_2: &'static str = "desc";
7731}
7732
7733#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7734pub struct MetadataQueryOrderBy {
7735    #[serde(default, skip_serializing_if = "Option::is_none")]
7736    pub field_key: Option<String>,
7737    #[serde(default, skip_serializing_if = "Option::is_none")]
7738    pub direction: Option<OrderByDirection>,
7739}
7740
7741#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7742#[serde(transparent)]
7743pub struct MetadataTemplateFieldsType(pub String);
7744
7745impl MetadataTemplateFieldsType {
7746    pub const STRING: &'static str = "string";
7747    pub const FLOAT: &'static str = "float";
7748    pub const DATE: &'static str = "date";
7749    pub const ENUM: &'static str = "enum";
7750    pub const MULTISELECT: &'static str = "multiSelect";
7751    pub const TAXONOMY: &'static str = "taxonomy";
7752    pub const INTEGER: &'static str = "integer";
7753}
7754
7755#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7756pub struct MetadataTemplateFieldsOptions {
7757    pub key: String,
7758    #[serde(default, skip_serializing_if = "Option::is_none")]
7759    pub id: Option<String>,
7760}
7761
7762#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7763pub struct FieldsOptionsRules {
7764    #[serde(
7765        rename = "multiSelect",
7766        default,
7767        skip_serializing_if = "Option::is_none"
7768    )]
7769    pub multi_select: Option<bool>,
7770    #[serde(
7771        rename = "selectableLevels",
7772        default,
7773        skip_serializing_if = "Option::is_none"
7774    )]
7775    pub selectable_levels: Option<Vec<i64>>,
7776}
7777
7778#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7779pub struct MetadataTemplateFields {
7780    pub r#type: MetadataTemplateFieldsType,
7781    pub key: String,
7782    #[serde(rename = "displayName")]
7783    pub display_name: String,
7784    #[serde(default, skip_serializing_if = "Option::is_none")]
7785    pub description: Option<String>,
7786    #[serde(default, skip_serializing_if = "Option::is_none")]
7787    pub hidden: Option<bool>,
7788    #[serde(default, skip_serializing_if = "Option::is_none")]
7789    pub options: Option<Vec<MetadataTemplateFieldsOptions>>,
7790    #[serde(
7791        rename = "taxonomyKey",
7792        default,
7793        skip_serializing_if = "Option::is_none"
7794    )]
7795    pub taxonomy_key: Option<String>,
7796    #[serde(
7797        rename = "taxonomyId",
7798        default,
7799        skip_serializing_if = "Option::is_none"
7800    )]
7801    pub taxonomy_id: Option<String>,
7802    #[serde(default, skip_serializing_if = "Option::is_none")]
7803    pub namespace: Option<String>,
7804    #[serde(
7805        rename = "optionsRules",
7806        default,
7807        skip_serializing_if = "Option::is_none"
7808    )]
7809    pub options_rules: Option<FieldsOptionsRules>,
7810    #[serde(default, skip_serializing_if = "Option::is_none")]
7811    pub id: Option<String>,
7812}
7813
7814#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7815#[serde(transparent)]
7816pub struct PostOAuth2TokenGrantType(pub String);
7817
7818impl PostOAuth2TokenGrantType {
7819    pub const AUTHORIZATION_CODE: &'static str = "authorization_code";
7820    pub const REFRESH_TOKEN: &'static str = "refresh_token";
7821    pub const CLIENT_CREDENTIALS: &'static str = "client_credentials";
7822    pub const URN_IETF_PARAMS_OAUTH_GRANT_TYPE_JWT_BEARER: &'static str =
7823        "urn:ietf:params:oauth:grant-type:jwt-bearer";
7824    pub const URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE: &'static str =
7825        "urn:ietf:params:oauth:grant-type:token-exchange";
7826}
7827
7828#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7829#[serde(transparent)]
7830pub struct PostOAuth2TokenActorTokenType(pub String);
7831
7832impl PostOAuth2TokenActorTokenType {
7833    pub const URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ID_TOKEN: &'static str =
7834        "urn:ietf:params:oauth:token-type:id_token";
7835}
7836
7837#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7838#[serde(transparent)]
7839pub struct PostOAuth2TokenBoxSubjectType(pub String);
7840
7841impl PostOAuth2TokenBoxSubjectType {
7842    pub const ENTERPRISE: &'static str = "enterprise";
7843    pub const USER: &'static str = "user";
7844}
7845
7846#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7847#[serde(transparent)]
7848pub struct PostOAuth2TokenRefreshAccessTokenGrantType(pub String);
7849
7850impl PostOAuth2TokenRefreshAccessTokenGrantType {
7851    pub const REFRESH_TOKEN: &'static str = "refresh_token";
7852}
7853
7854#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7855#[serde(transparent)]
7856pub struct RecentItemInteractionType(pub String);
7857
7858impl RecentItemInteractionType {
7859    pub const ITEM_PREVIEW: &'static str = "item_preview";
7860    pub const ITEM_UPLOAD: &'static str = "item_upload";
7861    pub const ITEM_COMMENT: &'static str = "item_comment";
7862    pub const ITEM_OPEN: &'static str = "item_open";
7863    pub const ITEM_MODIFY: &'static str = "item_modify";
7864}
7865
7866#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7867#[serde(transparent)]
7868pub struct ResourceScopeScope(pub String);
7869
7870impl ResourceScopeScope {
7871    pub const ANNOTATION_EDIT: &'static str = "annotation_edit";
7872    pub const ANNOTATION_VIEW_ALL: &'static str = "annotation_view_all";
7873    pub const ANNOTATION_VIEW_SELF: &'static str = "annotation_view_self";
7874    pub const BASE_EXPLORER: &'static str = "base_explorer";
7875    pub const BASE_PICKER: &'static str = "base_picker";
7876    pub const BASE_PREVIEW: &'static str = "base_preview";
7877    pub const BASE_UPLOAD: &'static str = "base_upload";
7878    pub const ITEM_DELETE: &'static str = "item_delete";
7879    pub const ITEM_DOWNLOAD: &'static str = "item_download";
7880    pub const ITEM_PREVIEW: &'static str = "item_preview";
7881    pub const ITEM_RENAME: &'static str = "item_rename";
7882    pub const ITEM_SHARE: &'static str = "item_share";
7883    pub const ITEM_UPLOAD: &'static str = "item_upload";
7884    pub const ITEM_READ: &'static str = "item_read";
7885}
7886
7887#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7888#[serde(transparent)]
7889pub struct RetentionPolicyType(pub String);
7890
7891impl RetentionPolicyType {
7892    pub const RETENTION_POLICY: &'static str = "retention_policy";
7893}
7894
7895#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7896#[serde(transparent)]
7897pub struct RetentionPolicyDispositionAction(pub String);
7898
7899impl RetentionPolicyDispositionAction {
7900    pub const PERMANENTLY_DELETE: &'static str = "permanently_delete";
7901    pub const REMOVE_RETENTION: &'static str = "remove_retention";
7902}
7903
7904#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7905#[serde(transparent)]
7906pub struct RetentionPolicyPolicyType(pub String);
7907
7908impl RetentionPolicyPolicyType {
7909    pub const FINITE: &'static str = "finite";
7910    pub const INDEFINITE: &'static str = "indefinite";
7911}
7912
7913#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7914#[serde(transparent)]
7915pub struct RetentionPolicyRetentionType(pub String);
7916
7917impl RetentionPolicyRetentionType {
7918    pub const MODIFIABLE: &'static str = "modifiable";
7919    pub const NON_MODIFIABLE: &'static str = "non_modifiable";
7920}
7921
7922#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7923#[serde(transparent)]
7924pub struct RetentionPolicyStatus(pub String);
7925
7926impl RetentionPolicyStatus {
7927    pub const ACTIVE: &'static str = "active";
7928    pub const RETIRED: &'static str = "retired";
7929}
7930
7931#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7932pub struct RetentionPolicyAssignmentCounts {
7933    #[serde(default, skip_serializing_if = "Option::is_none")]
7934    pub enterprise: Option<i64>,
7935    #[serde(default, skip_serializing_if = "Option::is_none")]
7936    pub folder: Option<i64>,
7937    #[serde(default, skip_serializing_if = "Option::is_none")]
7938    pub metadata_template: Option<i64>,
7939}
7940
7941#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7942#[serde(transparent)]
7943pub struct RetentionPolicyAssignmentType(pub String);
7944
7945impl RetentionPolicyAssignmentType {
7946    pub const RETENTION_POLICY_ASSIGNMENT: &'static str = "retention_policy_assignment";
7947}
7948
7949#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7950#[serde(transparent)]
7951pub struct AssignedToType(pub String);
7952
7953impl AssignedToType {
7954    pub const FOLDER: &'static str = "folder";
7955    pub const ENTERPRISE: &'static str = "enterprise";
7956    pub const METADATA_TEMPLATE: &'static str = "metadata_template";
7957}
7958
7959#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7960pub struct RetentionPolicyAssignmentAssignedTo {
7961    #[serde(
7962        default,
7963        skip_serializing_if = "Option::is_none",
7964        deserialize_with = "double_option"
7965    )]
7966    pub id: Option<Option<String>>,
7967    #[serde(default, skip_serializing_if = "Option::is_none")]
7968    pub r#type: Option<AssignedToType>,
7969}
7970
7971#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
7972pub struct RetentionPolicyAssignmentFilterFields {
7973    #[serde(
7974        default,
7975        skip_serializing_if = "Option::is_none",
7976        deserialize_with = "double_option"
7977    )]
7978    pub field: Option<Option<String>>,
7979    #[serde(
7980        default,
7981        skip_serializing_if = "Option::is_none",
7982        deserialize_with = "double_option"
7983    )]
7984    pub value: Option<Option<String>>,
7985}
7986
7987#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7988#[serde(transparent)]
7989pub struct RetentionPolicyMaxExtensionLengthRequestVariant0(pub String);
7990
7991impl RetentionPolicyMaxExtensionLengthRequestVariant0 {
7992    pub const NONE: &'static str = "none";
7993}
7994
7995#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
7996#[serde(transparent)]
7997pub struct RoleVariableVariableType(pub String);
7998
7999impl RoleVariableVariableType {
8000    pub const COLLABORATOR_ROLE: &'static str = "collaborator_role";
8001}
8002
8003#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8004#[serde(transparent)]
8005pub struct SearchResultsType(pub String);
8006
8007impl SearchResultsType {
8008    pub const SEARCH_RESULTS_ITEMS: &'static str = "search_results_items";
8009}
8010
8011#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8012#[serde(transparent)]
8013pub struct SearchResultsWithSharedLinksType(pub String);
8014
8015impl SearchResultsWithSharedLinksType {
8016    pub const SEARCH_RESULTS_WITH_SHARED_LINKS: &'static str = "search_results_with_shared_links";
8017}
8018
8019#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8020#[serde(transparent)]
8021pub struct ShieldInformationBarrierType(pub String);
8022
8023impl ShieldInformationBarrierType {
8024    pub const SHIELD_INFORMATION_BARRIER: &'static str = "shield_information_barrier";
8025}
8026
8027#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8028#[serde(transparent)]
8029pub struct ShieldInformationBarrierStatus(pub String);
8030
8031impl ShieldInformationBarrierStatus {
8032    pub const DRAFT: &'static str = "draft";
8033    pub const PENDING: &'static str = "pending";
8034    pub const DISABLED: &'static str = "disabled";
8035    pub const ENABLED: &'static str = "enabled";
8036    pub const INVALID: &'static str = "invalid";
8037}
8038
8039#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8040#[serde(transparent)]
8041pub struct ShieldInformationBarrierReportType(pub String);
8042
8043impl ShieldInformationBarrierReportType {
8044    pub const SHIELD_INFORMATION_BARRIER_REPORT: &'static str = "shield_information_barrier_report";
8045}
8046
8047#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8048#[serde(transparent)]
8049pub struct ShieldInformationBarrierReportStatus(pub String);
8050
8051impl ShieldInformationBarrierReportStatus {
8052    pub const PENDING: &'static str = "pending";
8053    pub const ERROR: &'static str = "error";
8054    pub const DONE: &'static str = "done";
8055    pub const CANCELLED: &'static str = "cancelled";
8056}
8057
8058#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8059pub struct ShieldInformationBarrierReportDetailsDetails {
8060    #[serde(default, skip_serializing_if = "Option::is_none")]
8061    pub folder_id: Option<String>,
8062}
8063
8064#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8065#[serde(transparent)]
8066pub struct ShieldInformationBarrierSegmentType(pub String);
8067
8068impl ShieldInformationBarrierSegmentType {
8069    pub const SHIELD_INFORMATION_BARRIER_SEGMENT: &'static str =
8070        "shield_information_barrier_segment";
8071}
8072
8073#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8074#[serde(transparent)]
8075pub struct ShieldInformationBarrierSegmentMemberType(pub String);
8076
8077impl ShieldInformationBarrierSegmentMemberType {
8078    pub const SHIELD_INFORMATION_BARRIER_SEGMENT_MEMBER: &'static str =
8079        "shield_information_barrier_segment_member";
8080}
8081
8082#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8083pub struct ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment {
8084    #[serde(default, skip_serializing_if = "Option::is_none")]
8085    pub id: Option<String>,
8086    #[serde(default, skip_serializing_if = "Option::is_none")]
8087    pub r#type: Option<ShieldInformationBarrierSegmentType>,
8088}
8089
8090#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8091#[serde(transparent)]
8092pub struct ShieldInformationBarrierSegmentRestrictionType(pub String);
8093
8094impl ShieldInformationBarrierSegmentRestrictionType {
8095    pub const SHIELD_INFORMATION_BARRIER_SEGMENT_RESTRICTION: &'static str =
8096        "shield_information_barrier_segment_restriction";
8097}
8098
8099#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8100#[serde(transparent)]
8101pub struct SignRequestType(pub String);
8102
8103impl SignRequestType {
8104    pub const SIGN_REQUEST: &'static str = "sign-request";
8105}
8106
8107#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8108#[serde(transparent)]
8109pub struct SignRequestStatus(pub String);
8110
8111impl SignRequestStatus {
8112    pub const CONVERTING: &'static str = "converting";
8113    pub const CREATED: &'static str = "created";
8114    pub const SENT: &'static str = "sent";
8115    pub const VIEWED: &'static str = "viewed";
8116    pub const SIGNED: &'static str = "signed";
8117    pub const CANCELLED: &'static str = "cancelled";
8118    pub const DECLINED: &'static str = "declined";
8119    pub const ERROR: &'static str = "error";
8120    pub const ERROR_CONVERTING: &'static str = "error_converting";
8121    pub const ERROR_SENDING: &'static str = "error_sending";
8122    pub const EXPIRED: &'static str = "expired";
8123    pub const FINALIZING: &'static str = "finalizing";
8124    pub const ERROR_FINALIZING: &'static str = "error_finalizing";
8125}
8126
8127#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8128pub struct SignRequestSignFiles {
8129    #[serde(default, skip_serializing_if = "Option::is_none")]
8130    pub files: Option<Vec<FileMini>>,
8131    #[serde(default, skip_serializing_if = "Option::is_none")]
8132    pub is_ready_for_download: Option<bool>,
8133}
8134
8135#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8136#[serde(transparent)]
8137pub struct SignRequestCreateRequestSignatureColor(pub String);
8138
8139impl SignRequestCreateRequestSignatureColor {
8140    pub const BLUE: &'static str = "blue";
8141    pub const BLACK: &'static str = "black";
8142    pub const RED: &'static str = "red";
8143}
8144
8145#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8146#[serde(transparent)]
8147pub struct SignRequestCreateSignerRole(pub String);
8148
8149impl SignRequestCreateSignerRole {
8150    pub const SIGNER: &'static str = "signer";
8151    pub const APPROVER: &'static str = "approver";
8152    pub const FINAL_COPY_READER: &'static str = "final_copy_reader";
8153}
8154
8155#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8156#[serde(transparent)]
8157pub struct SignerDecisionType(pub String);
8158
8159impl SignerDecisionType {
8160    pub const SIGNED: &'static str = "signed";
8161    pub const DECLINED: &'static str = "declined";
8162}
8163
8164#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8165pub struct SignRequestSignerSignerDecision {
8166    #[serde(default, skip_serializing_if = "Option::is_none")]
8167    pub r#type: Option<SignerDecisionType>,
8168    #[serde(default, skip_serializing_if = "Option::is_none")]
8169    pub finalized_at: Option<chrono::DateTime<chrono::Utc>>,
8170    #[serde(
8171        default,
8172        skip_serializing_if = "Option::is_none",
8173        deserialize_with = "double_option"
8174    )]
8175    pub additional_info: Option<Option<String>>,
8176}
8177
8178#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8179#[serde(transparent)]
8180pub struct SignRequestSignerInputType(pub String);
8181
8182impl SignRequestSignerInputType {
8183    pub const SIGNATURE: &'static str = "signature";
8184    pub const DATE: &'static str = "date";
8185    pub const TEXT: &'static str = "text";
8186    pub const CHECKBOX: &'static str = "checkbox";
8187    pub const RADIO: &'static str = "radio";
8188    pub const DROPDOWN: &'static str = "dropdown";
8189}
8190
8191#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8192#[serde(transparent)]
8193pub struct SignRequestSignerInputContentType(pub String);
8194
8195impl SignRequestSignerInputContentType {
8196    pub const SIGNATURE: &'static str = "signature";
8197    pub const INITIAL: &'static str = "initial";
8198    pub const STAMP: &'static str = "stamp";
8199    pub const DATE: &'static str = "date";
8200    pub const CHECKBOX: &'static str = "checkbox";
8201    pub const TEXT: &'static str = "text";
8202    pub const FULL_NAME: &'static str = "full_name";
8203    pub const FIRST_NAME: &'static str = "first_name";
8204    pub const LAST_NAME: &'static str = "last_name";
8205    pub const COMPANY: &'static str = "company";
8206    pub const TITLE: &'static str = "title";
8207    pub const EMAIL: &'static str = "email";
8208    pub const ATTACHMENT: &'static str = "attachment";
8209    pub const RADIO: &'static str = "radio";
8210    pub const DROPDOWN: &'static str = "dropdown";
8211}
8212
8213#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8214#[serde(transparent)]
8215pub struct SignRequestSignerInputCustomValidationValidationType(pub String);
8216
8217impl SignRequestSignerInputCustomValidationValidationType {
8218    pub const CUSTOM: &'static str = "custom";
8219}
8220
8221#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8222#[serde(transparent)]
8223pub struct SignRequestSignerInputDateAsiaValidationValidationType(pub String);
8224
8225impl SignRequestSignerInputDateAsiaValidationValidationType {
8226    pub const DATE_ASIA: &'static str = "date_asia";
8227}
8228
8229#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8230#[serde(transparent)]
8231pub struct SignRequestSignerInputDateEUValidationValidationType(pub String);
8232
8233impl SignRequestSignerInputDateEUValidationValidationType {
8234    pub const DATE_EU: &'static str = "date_eu";
8235}
8236
8237#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8238#[serde(transparent)]
8239pub struct SignRequestSignerInputDateISOValidationValidationType(pub String);
8240
8241impl SignRequestSignerInputDateISOValidationValidationType {
8242    pub const DATE_ISO: &'static str = "date_iso";
8243}
8244
8245#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8246#[serde(transparent)]
8247pub struct SignRequestSignerInputDateUSValidationValidationType(pub String);
8248
8249impl SignRequestSignerInputDateUSValidationValidationType {
8250    pub const DATE_US: &'static str = "date_us";
8251}
8252
8253#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8254#[serde(transparent)]
8255pub struct SignRequestSignerInputEmailValidationValidationType(pub String);
8256
8257impl SignRequestSignerInputEmailValidationValidationType {
8258    pub const EMAIL: &'static str = "email";
8259}
8260
8261#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8262#[serde(transparent)]
8263pub struct SignRequestSignerInputNumberWithCommaValidationValidationType(pub String);
8264
8265impl SignRequestSignerInputNumberWithCommaValidationValidationType {
8266    pub const NUMBER_WITH_COMMA: &'static str = "number_with_comma";
8267}
8268
8269#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8270#[serde(transparent)]
8271pub struct SignRequestSignerInputNumberWithPeriodValidationValidationType(pub String);
8272
8273impl SignRequestSignerInputNumberWithPeriodValidationValidationType {
8274    pub const NUMBER_WITH_PERIOD: &'static str = "number_with_period";
8275}
8276
8277#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8278#[serde(transparent)]
8279pub struct SignRequestSignerInputSSNValidationValidationType(pub String);
8280
8281impl SignRequestSignerInputSSNValidationValidationType {
8282    pub const SSN: &'static str = "ssn";
8283}
8284
8285#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8286#[serde(transparent)]
8287pub struct SignRequestSignerInputZIP4ValidationValidationType(pub String);
8288
8289impl SignRequestSignerInputZIP4ValidationValidationType {
8290    pub const ZIP_4: &'static str = "zip_4";
8291}
8292
8293#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8294#[serde(transparent)]
8295pub struct SignRequestSignerInputZIPValidationValidationType(pub String);
8296
8297impl SignRequestSignerInputZIPValidationValidationType {
8298    pub const ZIP: &'static str = "zip";
8299}
8300
8301#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8302#[serde(transparent)]
8303pub struct SignTemplateType(pub String);
8304
8305impl SignTemplateType {
8306    pub const SIGN_TEMPLATE: &'static str = "sign-template";
8307}
8308
8309#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8310#[serde(transparent)]
8311pub struct AdditionalInfoNonEditable(pub String);
8312
8313impl AdditionalInfoNonEditable {
8314    pub const EMAIL_SUBJECT: &'static str = "email_subject";
8315    pub const EMAIL_MESSAGE: &'static str = "email_message";
8316    pub const NAME: &'static str = "name";
8317    pub const DAYS_VALID: &'static str = "days_valid";
8318    pub const SIGNERS: &'static str = "signers";
8319    pub const SOURCE_FILES: &'static str = "source_files";
8320}
8321
8322#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8323pub struct AdditionalInfoRequired {
8324    #[serde(default, skip_serializing_if = "Option::is_none")]
8325    pub signers: Option<Vec<Vec<SignRequestSignerInputEmailValidationValidationType>>>,
8326}
8327
8328#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8329pub struct SignTemplateAdditionalInfo {
8330    #[serde(default, skip_serializing_if = "Option::is_none")]
8331    pub non_editable: Option<Vec<AdditionalInfoNonEditable>>,
8332    #[serde(default, skip_serializing_if = "Option::is_none")]
8333    pub required: Option<AdditionalInfoRequired>,
8334}
8335
8336#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8337pub struct SignTemplateReadySignLink {
8338    #[serde(default, skip_serializing_if = "Option::is_none")]
8339    pub url: Option<String>,
8340    #[serde(
8341        default,
8342        skip_serializing_if = "Option::is_none",
8343        deserialize_with = "double_option"
8344    )]
8345    pub name: Option<Option<String>>,
8346    #[serde(
8347        default,
8348        skip_serializing_if = "Option::is_none",
8349        deserialize_with = "double_option"
8350    )]
8351    pub instructions: Option<Option<String>>,
8352    #[serde(
8353        default,
8354        skip_serializing_if = "Option::is_none",
8355        deserialize_with = "double_option"
8356    )]
8357    pub folder_id: Option<Option<String>>,
8358    #[serde(default, skip_serializing_if = "Option::is_none")]
8359    pub is_notification_disabled: Option<bool>,
8360    #[serde(default, skip_serializing_if = "Option::is_none")]
8361    pub is_active: Option<bool>,
8362}
8363
8364#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8365pub struct SignTemplateCustomBranding {
8366    #[serde(
8367        default,
8368        skip_serializing_if = "Option::is_none",
8369        deserialize_with = "double_option"
8370    )]
8371    pub company_name: Option<Option<String>>,
8372    #[serde(
8373        default,
8374        skip_serializing_if = "Option::is_none",
8375        deserialize_with = "double_option"
8376    )]
8377    pub logo_uri: Option<Option<String>>,
8378    #[serde(
8379        default,
8380        skip_serializing_if = "Option::is_none",
8381        deserialize_with = "double_option"
8382    )]
8383    pub branding_color: Option<Option<String>>,
8384    #[serde(
8385        default,
8386        skip_serializing_if = "Option::is_none",
8387        deserialize_with = "double_option"
8388    )]
8389    pub email_footer_text: Option<Option<String>>,
8390}
8391
8392#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8393#[serde(transparent)]
8394pub struct StatusSkillCardSkillCardType(pub String);
8395
8396impl StatusSkillCardSkillCardType {
8397    pub const STATUS: &'static str = "status";
8398}
8399
8400#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8401#[serde(transparent)]
8402pub struct StatusCode(pub String);
8403
8404impl StatusCode {
8405    pub const INVOKED: &'static str = "invoked";
8406    pub const PROCESSING: &'static str = "processing";
8407    pub const SUCCESS: &'static str = "success";
8408    pub const TRANSIENT_FAILURE: &'static str = "transient_failure";
8409    pub const PERMANENT_FAILURE: &'static str = "permanent_failure";
8410}
8411
8412#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8413pub struct StatusSkillCardStatus {
8414    pub code: StatusCode,
8415    #[serde(default, skip_serializing_if = "Option::is_none")]
8416    pub message: Option<String>,
8417}
8418
8419#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8420#[serde(transparent)]
8421pub struct StoragePolicyType(pub String);
8422
8423impl StoragePolicyType {
8424    pub const STORAGE_POLICY: &'static str = "storage_policy";
8425}
8426
8427#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8428#[serde(transparent)]
8429pub struct StoragePolicyAssignmentType(pub String);
8430
8431impl StoragePolicyAssignmentType {
8432    pub const STORAGE_POLICY_ASSIGNMENT: &'static str = "storage_policy_assignment";
8433}
8434
8435#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8436#[serde(transparent)]
8437pub struct TaskType(pub String);
8438
8439impl TaskType {
8440    pub const TASK: &'static str = "task";
8441}
8442
8443#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8444#[serde(transparent)]
8445pub struct TaskAction(pub String);
8446
8447impl TaskAction {
8448    pub const REVIEW: &'static str = "review";
8449    pub const COMPLETE: &'static str = "complete";
8450}
8451
8452#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8453#[serde(transparent)]
8454pub struct TaskCompletionRule(pub String);
8455
8456impl TaskCompletionRule {
8457    pub const ALL_ASSIGNEES: &'static str = "all_assignees";
8458    pub const ANY_ASSIGNEE: &'static str = "any_assignee";
8459}
8460
8461#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8462#[serde(transparent)]
8463pub struct TaskAssignmentType(pub String);
8464
8465impl TaskAssignmentType {
8466    pub const TASK_ASSIGNMENT: &'static str = "task_assignment";
8467}
8468
8469#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8470#[serde(transparent)]
8471pub struct TaskAssignmentResolutionState(pub String);
8472
8473impl TaskAssignmentResolutionState {
8474    pub const COMPLETED: &'static str = "completed";
8475    pub const INCOMPLETE: &'static str = "incomplete";
8476    pub const APPROVED: &'static str = "approved";
8477    pub const REJECTED: &'static str = "rejected";
8478}
8479
8480#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8481#[serde(transparent)]
8482pub struct TemplateSignerInputType(pub String);
8483
8484impl TemplateSignerInputType {
8485    pub const SIGNATURE: &'static str = "signature";
8486    pub const DATE: &'static str = "date";
8487    pub const TEXT: &'static str = "text";
8488    pub const CHECKBOX: &'static str = "checkbox";
8489    pub const ATTACHMENT: &'static str = "attachment";
8490    pub const RADIO: &'static str = "radio";
8491    pub const DROPDOWN: &'static str = "dropdown";
8492}
8493
8494#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8495pub struct TemplateSignerInputCoordinates {
8496    #[serde(default, skip_serializing_if = "Option::is_none")]
8497    pub x: Option<f64>,
8498    #[serde(default, skip_serializing_if = "Option::is_none")]
8499    pub y: Option<f64>,
8500}
8501
8502#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8503pub struct TemplateSignerInputDimensions {
8504    #[serde(default, skip_serializing_if = "Option::is_none")]
8505    pub width: Option<f64>,
8506    #[serde(default, skip_serializing_if = "Option::is_none")]
8507    pub height: Option<f64>,
8508}
8509
8510#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8511#[serde(transparent)]
8512pub struct TermsOfServiceType(pub String);
8513
8514impl TermsOfServiceType {
8515    pub const TERMS_OF_SERVICE: &'static str = "terms_of_service";
8516}
8517
8518#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8519#[serde(transparent)]
8520pub struct TermsOfServiceStatus(pub String);
8521
8522impl TermsOfServiceStatus {
8523    pub const ENABLED: &'static str = "enabled";
8524    pub const DISABLED: &'static str = "disabled";
8525}
8526
8527#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8528#[serde(transparent)]
8529pub struct TermsOfServiceTosType(pub String);
8530
8531impl TermsOfServiceTosType {
8532    pub const MANAGED: &'static str = "managed";
8533    pub const EXTERNAL: &'static str = "external";
8534}
8535
8536#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8537#[serde(transparent)]
8538pub struct TermsOfServiceUserStatusType(pub String);
8539
8540impl TermsOfServiceUserStatusType {
8541    pub const TERMS_OF_SERVICE_USER_STATUS: &'static str = "terms_of_service_user_status";
8542}
8543
8544#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8545#[serde(transparent)]
8546pub struct TimelineSkillCardSkillCardType(pub String);
8547
8548impl TimelineSkillCardSkillCardType {
8549    pub const TIMELINE: &'static str = "timeline";
8550}
8551
8552#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8553pub struct EntriesAppears {
8554    #[serde(default, skip_serializing_if = "Option::is_none")]
8555    pub start: Option<i64>,
8556    #[serde(default, skip_serializing_if = "Option::is_none")]
8557    pub end: Option<i64>,
8558}
8559
8560#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8561pub struct TimelineSkillCardEntries {
8562    #[serde(default, skip_serializing_if = "Option::is_none")]
8563    pub text: Option<String>,
8564    #[serde(default, skip_serializing_if = "Option::is_none")]
8565    pub appears: Option<Vec<EntriesAppears>>,
8566    #[serde(default, skip_serializing_if = "Option::is_none")]
8567    pub image_url: Option<String>,
8568}
8569
8570#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8571#[serde(transparent)]
8572pub struct TrackingCodeType(pub String);
8573
8574impl TrackingCodeType {
8575    pub const TRACKING_CODE: &'static str = "tracking_code";
8576}
8577
8578#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8579#[serde(transparent)]
8580pub struct TranscriptSkillCardSkillCardType(pub String);
8581
8582impl TranscriptSkillCardSkillCardType {
8583    pub const TRANSCRIPT: &'static str = "transcript";
8584}
8585
8586#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8587pub struct TranscriptSkillCardEntriesAppears {
8588    #[serde(default, skip_serializing_if = "Option::is_none")]
8589    pub start: Option<i64>,
8590}
8591
8592#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8593pub struct TranscriptSkillCardEntries {
8594    #[serde(default, skip_serializing_if = "Option::is_none")]
8595    pub text: Option<String>,
8596    #[serde(default, skip_serializing_if = "Option::is_none")]
8597    pub appears: Option<Vec<TranscriptSkillCardEntriesAppears>>,
8598}
8599
8600#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8601pub struct PathCollectionEntries {
8602    #[serde(default, skip_serializing_if = "Option::is_none")]
8603    pub r#type: Option<FolderType>,
8604    #[serde(default, skip_serializing_if = "Option::is_none")]
8605    pub id: Option<String>,
8606    #[serde(
8607        default,
8608        skip_serializing_if = "Option::is_none",
8609        deserialize_with = "double_option"
8610    )]
8611    pub sequence_id: Option<Option<String>>,
8612    #[serde(
8613        default,
8614        skip_serializing_if = "Option::is_none",
8615        deserialize_with = "double_option"
8616    )]
8617    pub etag: Option<Option<String>>,
8618    #[serde(default, skip_serializing_if = "Option::is_none")]
8619    pub name: Option<String>,
8620}
8621
8622#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8623pub struct TrashFilePathCollection {
8624    pub total_count: i64,
8625    pub entries: Vec<PathCollectionEntries>,
8626}
8627
8628#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8629#[serde(transparent)]
8630pub struct TrashWebLinkType(pub String);
8631
8632impl TrashWebLinkType {
8633    pub const WEB_LINK: &'static str = "web_link";
8634}
8635
8636#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8637#[serde(transparent)]
8638pub struct UploadSessionType(pub String);
8639
8640impl UploadSessionType {
8641    pub const UPLOAD_SESSION: &'static str = "upload_session";
8642}
8643
8644#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8645pub struct UploadSessionSessionEndpoints {
8646    #[serde(default, skip_serializing_if = "Option::is_none")]
8647    pub upload_part: Option<String>,
8648    #[serde(default, skip_serializing_if = "Option::is_none")]
8649    pub commit: Option<String>,
8650    #[serde(default, skip_serializing_if = "Option::is_none")]
8651    pub abort: Option<String>,
8652    #[serde(default, skip_serializing_if = "Option::is_none")]
8653    pub list_parts: Option<String>,
8654    #[serde(default, skip_serializing_if = "Option::is_none")]
8655    pub status: Option<String>,
8656    #[serde(default, skip_serializing_if = "Option::is_none")]
8657    pub log_event: Option<String>,
8658}
8659
8660#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8661#[serde(transparent)]
8662pub struct UserStatus(pub String);
8663
8664impl UserStatus {
8665    pub const ACTIVE: &'static str = "active";
8666    pub const INACTIVE: &'static str = "inactive";
8667    pub const CANNOT_DELETE_EDIT: &'static str = "cannot_delete_edit";
8668    pub const CANNOT_DELETE_EDIT_UPLOAD: &'static str = "cannot_delete_edit_upload";
8669}
8670
8671#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8672pub struct UserNotificationEmail {
8673    #[serde(default, skip_serializing_if = "Option::is_none")]
8674    pub email: Option<String>,
8675    #[serde(default, skip_serializing_if = "Option::is_none")]
8676    pub is_confirmed: Option<bool>,
8677}
8678
8679#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8680#[serde(transparent)]
8681pub struct UserFullRole(pub String);
8682
8683impl UserFullRole {
8684    pub const ADMIN: &'static str = "admin";
8685    pub const COADMIN: &'static str = "coadmin";
8686    pub const USER: &'static str = "user";
8687}
8688
8689#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8690pub struct UserAvatarPicUrls {
8691    #[serde(default, skip_serializing_if = "Option::is_none")]
8692    pub small: Option<String>,
8693    #[serde(default, skip_serializing_if = "Option::is_none")]
8694    pub large: Option<String>,
8695    #[serde(default, skip_serializing_if = "Option::is_none")]
8696    pub preview: Option<String>,
8697}
8698
8699#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8700pub struct WatermarkWatermark {
8701    #[serde(default, skip_serializing_if = "Option::is_none")]
8702    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8703    #[serde(default, skip_serializing_if = "Option::is_none")]
8704    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
8705}
8706
8707#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8708#[serde(transparent)]
8709pub struct WebhookType(pub String);
8710
8711impl WebhookType {
8712    pub const WEBHOOK: &'static str = "webhook";
8713}
8714
8715#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8716pub struct WebhookTarget {
8717    #[serde(default, skip_serializing_if = "Option::is_none")]
8718    pub id: Option<String>,
8719    #[serde(default, skip_serializing_if = "Option::is_none")]
8720    pub r#type: Option<EventSourceItemType>,
8721}
8722
8723#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8724#[serde(transparent)]
8725pub struct WebhookTriggers(pub String);
8726
8727impl WebhookTriggers {
8728    pub const FILE_UPLOADED: &'static str = "FILE.UPLOADED";
8729    pub const FILE_PREVIEWED: &'static str = "FILE.PREVIEWED";
8730    pub const FILE_DOWNLOADED: &'static str = "FILE.DOWNLOADED";
8731    pub const FILE_TRASHED: &'static str = "FILE.TRASHED";
8732    pub const FILE_DELETED: &'static str = "FILE.DELETED";
8733    pub const FILE_RESTORED: &'static str = "FILE.RESTORED";
8734    pub const FILE_COPIED: &'static str = "FILE.COPIED";
8735    pub const FILE_MOVED: &'static str = "FILE.MOVED";
8736    pub const FILE_LOCKED: &'static str = "FILE.LOCKED";
8737    pub const FILE_UNLOCKED: &'static str = "FILE.UNLOCKED";
8738    pub const FILE_RENAMED: &'static str = "FILE.RENAMED";
8739    pub const COMMENT_CREATED: &'static str = "COMMENT.CREATED";
8740    pub const COMMENT_UPDATED: &'static str = "COMMENT.UPDATED";
8741    pub const COMMENT_DELETED: &'static str = "COMMENT.DELETED";
8742    pub const TASK_ASSIGNMENT_CREATED: &'static str = "TASK_ASSIGNMENT.CREATED";
8743    pub const TASK_ASSIGNMENT_UPDATED: &'static str = "TASK_ASSIGNMENT.UPDATED";
8744    pub const METADATA_INSTANCE_CREATED: &'static str = "METADATA_INSTANCE.CREATED";
8745    pub const METADATA_INSTANCE_UPDATED: &'static str = "METADATA_INSTANCE.UPDATED";
8746    pub const METADATA_INSTANCE_DELETED: &'static str = "METADATA_INSTANCE.DELETED";
8747    pub const FOLDER_CREATED: &'static str = "FOLDER.CREATED";
8748    pub const FOLDER_RENAMED: &'static str = "FOLDER.RENAMED";
8749    pub const FOLDER_DOWNLOADED: &'static str = "FOLDER.DOWNLOADED";
8750    pub const FOLDER_RESTORED: &'static str = "FOLDER.RESTORED";
8751    pub const FOLDER_DELETED: &'static str = "FOLDER.DELETED";
8752    pub const FOLDER_COPIED: &'static str = "FOLDER.COPIED";
8753    pub const FOLDER_MOVED: &'static str = "FOLDER.MOVED";
8754    pub const FOLDER_TRASHED: &'static str = "FOLDER.TRASHED";
8755    pub const WEBHOOK_DELETED: &'static str = "WEBHOOK.DELETED";
8756    pub const COLLABORATION_CREATED: &'static str = "COLLABORATION.CREATED";
8757    pub const COLLABORATION_ACCEPTED: &'static str = "COLLABORATION.ACCEPTED";
8758    pub const COLLABORATION_REJECTED: &'static str = "COLLABORATION.REJECTED";
8759    pub const COLLABORATION_REMOVED: &'static str = "COLLABORATION.REMOVED";
8760    pub const COLLABORATION_UPDATED: &'static str = "COLLABORATION.UPDATED";
8761    pub const SHARED_LINK_DELETED: &'static str = "SHARED_LINK.DELETED";
8762    pub const SHARED_LINK_CREATED: &'static str = "SHARED_LINK.CREATED";
8763    pub const SHARED_LINK_UPDATED: &'static str = "SHARED_LINK.UPDATED";
8764    pub const SIGN_REQUEST_COMPLETED: &'static str = "SIGN_REQUEST.COMPLETED";
8765    pub const SIGN_REQUEST_DECLINED: &'static str = "SIGN_REQUEST.DECLINED";
8766    pub const SIGN_REQUEST_EXPIRED: &'static str = "SIGN_REQUEST.EXPIRED";
8767    pub const SIGN_REQUEST_SIGNER_EMAIL_BOUNCED: &'static str = "SIGN_REQUEST.SIGNER_EMAIL_BOUNCED";
8768    pub const SIGN_REQUEST_SIGN_SIGNER_SIGNED: &'static str = "SIGN_REQUEST.SIGN_SIGNER_SIGNED";
8769    pub const SIGN_REQUEST_SIGN_DOCUMENT_CREATED: &'static str =
8770        "SIGN_REQUEST.SIGN_DOCUMENT_CREATED";
8771    pub const SIGN_REQUEST_SIGN_ERROR_FINALIZING: &'static str =
8772        "SIGN_REQUEST.SIGN_ERROR_FINALIZING";
8773}
8774
8775#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8776#[serde(transparent)]
8777pub struct WorkflowType(pub String);
8778
8779impl WorkflowType {
8780    pub const WORKFLOW: &'static str = "workflow";
8781}
8782
8783#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8784#[serde(transparent)]
8785pub struct FlowsType(pub String);
8786
8787impl FlowsType {
8788    pub const FLOW: &'static str = "flow";
8789}
8790
8791#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8792#[serde(transparent)]
8793pub struct TriggerType(pub String);
8794
8795impl TriggerType {
8796    pub const TRIGGER: &'static str = "trigger";
8797}
8798
8799#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8800#[serde(transparent)]
8801pub struct TriggerTriggerType(pub String);
8802
8803impl TriggerTriggerType {
8804    pub const WORKFLOW_MANUAL_START: &'static str = "WORKFLOW_MANUAL_START";
8805}
8806
8807#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8808#[serde(transparent)]
8809pub struct ScopeType(pub String);
8810
8811impl ScopeType {
8812    pub const TRIGGER_SCOPE: &'static str = "trigger_scope";
8813}
8814
8815#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8816pub struct TriggerScope {
8817    #[serde(default, skip_serializing_if = "Option::is_none")]
8818    pub r#type: Option<ScopeType>,
8819    #[serde(default, skip_serializing_if = "Option::is_none")]
8820    pub r#ref: Option<String>,
8821    #[serde(default, skip_serializing_if = "Option::is_none")]
8822    pub object: Option<MetadataCascadePolicyParent>,
8823}
8824
8825#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8826pub struct FlowsTrigger {
8827    #[serde(default, skip_serializing_if = "Option::is_none")]
8828    pub r#type: Option<TriggerType>,
8829    #[serde(default, skip_serializing_if = "Option::is_none")]
8830    pub trigger_type: Option<TriggerTriggerType>,
8831    #[serde(default, skip_serializing_if = "Option::is_none")]
8832    pub scope: Option<Vec<TriggerScope>>,
8833}
8834
8835#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8836#[serde(transparent)]
8837pub struct OutcomesType(pub String);
8838
8839impl OutcomesType {
8840    pub const OUTCOME: &'static str = "outcome";
8841}
8842
8843#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8844#[serde(transparent)]
8845pub struct OutcomesActionType(pub String);
8846
8847impl OutcomesActionType {
8848    pub const ADD_METADATA: &'static str = "add_metadata";
8849    pub const ASSIGN_TASK: &'static str = "assign_task";
8850    pub const COPY_FILE: &'static str = "copy_file";
8851    pub const COPY_FOLDER: &'static str = "copy_folder";
8852    pub const CREATE_FOLDER: &'static str = "create_folder";
8853    pub const DELETE_FILE: &'static str = "delete_file";
8854    pub const DELETE_FOLDER: &'static str = "delete_folder";
8855    pub const LOCK_FILE: &'static str = "lock_file";
8856    pub const MOVE_FILE: &'static str = "move_file";
8857    pub const MOVE_FOLDER: &'static str = "move_folder";
8858    pub const REMOVE_WATERMARK_FILE: &'static str = "remove_watermark_file";
8859    pub const RENAME_FOLDER: &'static str = "rename_folder";
8860    pub const RESTORE_FOLDER: &'static str = "restore_folder";
8861    pub const SHARE_FILE: &'static str = "share_file";
8862    pub const SHARE_FOLDER: &'static str = "share_folder";
8863    pub const UNLOCK_FILE: &'static str = "unlock_file";
8864    pub const UPLOAD_FILE: &'static str = "upload_file";
8865    pub const WAIT_FOR_TASK: &'static str = "wait_for_task";
8866    pub const WATERMARK_FILE: &'static str = "watermark_file";
8867    pub const GO_BACK_TO_STEP: &'static str = "go_back_to_step";
8868    pub const APPLY_FILE_CLASSIFICATION: &'static str = "apply_file_classification";
8869    pub const APPLY_FOLDER_CLASSIFICATION: &'static str = "apply_folder_classification";
8870    pub const SEND_NOTIFICATION: &'static str = "send_notification";
8871}
8872
8873#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8874pub struct OutcomesIfRejected {
8875    #[serde(default, skip_serializing_if = "Option::is_none")]
8876    pub id: Option<String>,
8877    #[serde(default, skip_serializing_if = "Option::is_none")]
8878    pub r#type: Option<OutcomesType>,
8879    #[serde(default, skip_serializing_if = "Option::is_none")]
8880    pub name: Option<String>,
8881    #[serde(default, skip_serializing_if = "Option::is_none")]
8882    pub action_type: Option<OutcomesActionType>,
8883}
8884
8885#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8886pub struct FlowsOutcomes {
8887    #[serde(default, skip_serializing_if = "Option::is_none")]
8888    pub id: Option<String>,
8889    #[serde(default, skip_serializing_if = "Option::is_none")]
8890    pub r#type: Option<OutcomesType>,
8891    #[serde(default, skip_serializing_if = "Option::is_none")]
8892    pub name: Option<String>,
8893    #[serde(default, skip_serializing_if = "Option::is_none")]
8894    pub action_type: Option<OutcomesActionType>,
8895    #[serde(default, skip_serializing_if = "Option::is_none")]
8896    pub if_rejected: Option<Vec<OutcomesIfRejected>>,
8897}
8898
8899#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8900pub struct WorkflowFlows {
8901    #[serde(default, skip_serializing_if = "Option::is_none")]
8902    pub id: Option<String>,
8903    #[serde(default, skip_serializing_if = "Option::is_none")]
8904    pub r#type: Option<FlowsType>,
8905    #[serde(default, skip_serializing_if = "Option::is_none")]
8906    pub trigger: Option<FlowsTrigger>,
8907    #[serde(default, skip_serializing_if = "Option::is_none")]
8908    pub outcomes: Option<Vec<FlowsOutcomes>>,
8909    #[serde(default, skip_serializing_if = "Option::is_none")]
8910    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8911    #[serde(default, skip_serializing_if = "Option::is_none")]
8912    pub created_by: Option<UserBase>,
8913}
8914
8915#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8916pub struct ZipDownloadNameConflicts {
8917    #[serde(default, skip_serializing_if = "Option::is_none")]
8918    pub id: Option<String>,
8919    #[serde(default, skip_serializing_if = "Option::is_none")]
8920    pub r#type: Option<EventSourceItemType>,
8921    #[serde(default, skip_serializing_if = "Option::is_none")]
8922    pub original_name: Option<String>,
8923    #[serde(default, skip_serializing_if = "Option::is_none")]
8924    pub download_name: Option<String>,
8925}
8926
8927#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8928pub struct ZipDownloadRequestItems {
8929    pub r#type: EventSourceItemType,
8930    pub id: String,
8931}
8932
8933#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8934#[serde(transparent)]
8935pub struct ZipDownloadStatusState(pub String);
8936
8937impl ZipDownloadStatusState {
8938    pub const IN_PROGRESS: &'static str = "in_progress";
8939    pub const FAILED: &'static str = "failed";
8940    pub const SUCCEEDED: &'static str = "succeeded";
8941}
8942
8943#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8944#[serde(transparent)]
8945pub struct GetAuthorizeResponseType(pub String);
8946
8947impl GetAuthorizeResponseType {
8948    pub const CODE: &'static str = "code";
8949}
8950
8951#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8952pub struct PutIdParent {
8953    #[serde(default, skip_serializing_if = "Option::is_none")]
8954    pub id: Option<String>,
8955    #[serde(default, skip_serializing_if = "Option::is_none")]
8956    pub user_id: Option<String>,
8957}
8958
8959#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8960pub struct UpdateFileRequestSharedLinkPermissions {
8961    #[serde(default, skip_serializing_if = "Option::is_none")]
8962    pub can_download: Option<bool>,
8963}
8964
8965#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8966pub struct PutIdSharedLink {
8967    #[serde(default, skip_serializing_if = "Option::is_none")]
8968    pub access: Option<SharedLinkAccess>,
8969    #[serde(
8970        default,
8971        skip_serializing_if = "Option::is_none",
8972        deserialize_with = "double_option"
8973    )]
8974    pub password: Option<Option<String>>,
8975    #[serde(default, skip_serializing_if = "Option::is_none")]
8976    pub vanity_name: Option<String>,
8977    #[serde(default, skip_serializing_if = "Option::is_none")]
8978    pub unshared_at: Option<chrono::DateTime<chrono::Utc>>,
8979    #[serde(default, skip_serializing_if = "Option::is_none")]
8980    pub permissions: Option<UpdateFileRequestSharedLinkPermissions>,
8981}
8982
8983#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8984pub struct PutIdLock {
8985    #[serde(default, skip_serializing_if = "Option::is_none")]
8986    pub access: Option<LockType>,
8987    #[serde(default, skip_serializing_if = "Option::is_none")]
8988    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
8989    #[serde(default, skip_serializing_if = "Option::is_none")]
8990    pub is_download_prevented: Option<bool>,
8991}
8992
8993#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
8994#[serde(transparent)]
8995pub struct PermissionsCanDownload(pub String);
8996
8997impl PermissionsCanDownload {
8998    pub const OPEN: &'static str = "open";
8999    pub const COMPANY: &'static str = "company";
9000}
9001
9002#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9003pub struct PutIdPermissions {
9004    #[serde(default, skip_serializing_if = "Option::is_none")]
9005    pub can_download: Option<PermissionsCanDownload>,
9006}
9007
9008#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9009pub struct UpdateFileRequest {
9010    #[serde(default, skip_serializing_if = "Option::is_none")]
9011    pub name: Option<String>,
9012    #[serde(default, skip_serializing_if = "Option::is_none")]
9013    pub description: Option<String>,
9014    #[serde(default, skip_serializing_if = "Option::is_none")]
9015    pub parent: Option<PutIdParent>,
9016    #[serde(
9017        default,
9018        skip_serializing_if = "Option::is_none",
9019        deserialize_with = "double_option"
9020    )]
9021    pub shared_link: Option<Option<PutIdSharedLink>>,
9022    #[serde(
9023        default,
9024        skip_serializing_if = "Option::is_none",
9025        deserialize_with = "double_option"
9026    )]
9027    pub lock: Option<Option<PutIdLock>>,
9028    #[serde(default, skip_serializing_if = "Option::is_none")]
9029    pub disposition_at: Option<chrono::DateTime<chrono::Utc>>,
9030    #[serde(default, skip_serializing_if = "Option::is_none")]
9031    pub permissions: Option<PutIdPermissions>,
9032    #[serde(
9033        default,
9034        skip_serializing_if = "Option::is_none",
9035        deserialize_with = "double_option"
9036    )]
9037    pub collections: Option<Option<Vec<CommentItem>>>,
9038    #[serde(default, skip_serializing_if = "Option::is_none")]
9039    pub tags: Option<Vec<String>>,
9040}
9041
9042#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9043pub struct PostFileIdParent {
9044    #[serde(default, skip_serializing_if = "Option::is_none")]
9045    pub id: Option<String>,
9046}
9047
9048#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9049pub struct CreateFileRequest {
9050    #[serde(default, skip_serializing_if = "Option::is_none")]
9051    pub name: Option<String>,
9052    #[serde(default, skip_serializing_if = "Option::is_none")]
9053    pub parent: Option<PostFileIdParent>,
9054}
9055
9056#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9057pub struct PostFileIdContentAttributes {
9058    pub name: String,
9059    #[serde(default, skip_serializing_if = "Option::is_none")]
9060    pub content_modified_at: Option<chrono::DateTime<chrono::Utc>>,
9061}
9062
9063#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9064pub struct CreateFileIdContentRequest {
9065    pub attributes: PostFileIdContentAttributes,
9066    #[serde(skip)]
9067    pub file: Vec<u8>,
9068}
9069
9070#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9071pub struct AttributesParent {
9072    pub id: String,
9073}
9074
9075#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9076pub struct PostFileContentAttributes {
9077    pub name: String,
9078    pub parent: AttributesParent,
9079    #[serde(default, skip_serializing_if = "Option::is_none")]
9080    pub content_created_at: Option<chrono::DateTime<chrono::Utc>>,
9081    #[serde(default, skip_serializing_if = "Option::is_none")]
9082    pub content_modified_at: Option<chrono::DateTime<chrono::Utc>>,
9083}
9084
9085#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9086pub struct CreateFileContentRequest {
9087    pub attributes: PostFileContentAttributes,
9088    #[serde(skip)]
9089    pub file: Vec<u8>,
9090}
9091
9092#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9093pub struct OptionFileContentRequest {
9094    #[serde(default, skip_serializing_if = "Option::is_none")]
9095    pub name: Option<String>,
9096    #[serde(default, skip_serializing_if = "Option::is_none")]
9097    pub size: Option<i64>,
9098    #[serde(default, skip_serializing_if = "Option::is_none")]
9099    pub parent: Option<PostFileIdParent>,
9100}
9101
9102#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9103pub struct CreateFileUploadSessionRequest {
9104    pub folder_id: String,
9105    pub file_size: i64,
9106    pub file_name: String,
9107}
9108
9109#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9110pub struct CreateFileVersionUploadSessionRequest {
9111    pub file_size: i64,
9112    #[serde(default, skip_serializing_if = "Option::is_none")]
9113    pub file_name: Option<String>,
9114}
9115
9116#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9117pub struct CommitFileUploadSessionRequest {
9118    pub parts: Vec<UploadPart>,
9119}
9120
9121#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9122pub struct CopyFileRequest {
9123    #[serde(default, skip_serializing_if = "Option::is_none")]
9124    pub name: Option<String>,
9125    #[serde(default, skip_serializing_if = "Option::is_none")]
9126    pub version: Option<String>,
9127    pub parent: AttributesParent,
9128}
9129
9130#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9131#[serde(transparent)]
9132pub struct GetIdThumbnailIdExtension(pub String);
9133
9134impl GetIdThumbnailIdExtension {
9135    pub const PNG: &'static str = "png";
9136    pub const JPG: &'static str = "jpg";
9137}
9138
9139#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9140pub struct UpdateFileVersionRequest {
9141    #[serde(
9142        default,
9143        skip_serializing_if = "Option::is_none",
9144        deserialize_with = "double_option"
9145    )]
9146    pub trashed_at: Option<Option<String>>,
9147}
9148
9149#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9150pub struct CreateFileVersionCurrentRequest {
9151    #[serde(default, skip_serializing_if = "Option::is_none")]
9152    pub id: Option<String>,
9153    #[serde(default, skip_serializing_if = "Option::is_none")]
9154    pub r#type: Option<FileVersionType>,
9155}
9156
9157#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9158#[serde(transparent)]
9159pub struct PutOp(pub String);
9160
9161impl PutOp {
9162    pub const REPLACE: &'static str = "replace";
9163}
9164
9165#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9166#[serde(transparent)]
9167pub struct PutPath(pub String);
9168
9169impl PutPath {
9170    pub const BOX_SECURITY_CLASSIFICATION_KEY: &'static str = "/Box__Security__Classification__Key";
9171}
9172
9173#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9174pub struct UpdateFileClassificationRequest {
9175    pub op: PutOp,
9176    pub path: PutPath,
9177    pub value: String,
9178}
9179
9180#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9181pub struct CreateFileClassificationRequest {
9182    #[serde(
9183        rename = "Box__Security__Classification__Key",
9184        default,
9185        skip_serializing_if = "Option::is_none"
9186    )]
9187    pub box_security_classification_key: Option<String>,
9188}
9189
9190#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9191#[serde(transparent)]
9192pub struct GetFileIdMetadataIdScope(pub String);
9193
9194impl GetFileIdMetadataIdScope {
9195    pub const GLOBAL: &'static str = "global";
9196    pub const ENTERPRISE: &'static str = "enterprise";
9197}
9198
9199#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9200#[serde(transparent)]
9201pub struct PutFileIdMetadataIdOp(pub String);
9202
9203impl PutFileIdMetadataIdOp {
9204    pub const ADD: &'static str = "add";
9205    pub const REPLACE: &'static str = "replace";
9206    pub const REMOVE: &'static str = "remove";
9207    pub const TEST: &'static str = "test";
9208    pub const MOVE: &'static str = "move";
9209    pub const COPY: &'static str = "copy";
9210}
9211
9212#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9213pub struct UpdateFileMetadataRequest {
9214    #[serde(default, skip_serializing_if = "Option::is_none")]
9215    pub op: Option<PutFileIdMetadataIdOp>,
9216    #[serde(default, skip_serializing_if = "Option::is_none")]
9217    pub path: Option<String>,
9218    #[serde(default, skip_serializing_if = "Option::is_none")]
9219    pub value: Option<MetadataInstanceValue>,
9220    #[serde(default, skip_serializing_if = "Option::is_none")]
9221    pub from: Option<String>,
9222}
9223
9224#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9225pub struct UpdateSkillRequest {
9226    #[serde(default, skip_serializing_if = "Option::is_none")]
9227    pub op: Option<PutOp>,
9228    #[serde(default, skip_serializing_if = "Option::is_none")]
9229    pub path: Option<String>,
9230    #[serde(default, skip_serializing_if = "Option::is_none")]
9231    pub value: Option<SkillCard>,
9232}
9233
9234#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9235pub struct CreateSkillRequest {
9236    pub cards: Vec<SkillCard>,
9237}
9238
9239#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9240#[serde(transparent)]
9241pub struct WatermarkImprint(pub String);
9242
9243impl WatermarkImprint {
9244    pub const DEFAULT: &'static str = "default";
9245}
9246
9247#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9248pub struct PutFileIdWatermarkWatermark {
9249    pub imprint: WatermarkImprint,
9250}
9251
9252#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9253pub struct UpdateFileWatermarkRequest {
9254    pub watermark: PutFileIdWatermarkWatermark,
9255}
9256
9257#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9258#[serde(transparent)]
9259pub struct GetIdSort(pub String);
9260
9261impl GetIdSort {
9262    pub const ID: &'static str = "id";
9263    pub const NAME: &'static str = "name";
9264    pub const DATE: &'static str = "date";
9265    pub const SIZE: &'static str = "size";
9266}
9267
9268#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9269pub struct PutIdFolderUploadEmail {
9270    #[serde(default, skip_serializing_if = "Option::is_none")]
9271    pub access: Option<FolderUploadEmailAccess>,
9272}
9273
9274#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9275pub struct UpdateFolderRequest {
9276    #[serde(default, skip_serializing_if = "Option::is_none")]
9277    pub name: Option<String>,
9278    #[serde(default, skip_serializing_if = "Option::is_none")]
9279    pub description: Option<String>,
9280    #[serde(default, skip_serializing_if = "Option::is_none")]
9281    pub sync_state: Option<FolderFullSyncState>,
9282    #[serde(default, skip_serializing_if = "Option::is_none")]
9283    pub can_non_owners_invite: Option<bool>,
9284    #[serde(default, skip_serializing_if = "Option::is_none")]
9285    pub parent: Option<PutIdParent>,
9286    #[serde(default, skip_serializing_if = "Option::is_none")]
9287    pub shared_link: Option<PutIdSharedLink>,
9288    #[serde(
9289        default,
9290        skip_serializing_if = "Option::is_none",
9291        deserialize_with = "double_option"
9292    )]
9293    pub folder_upload_email: Option<Option<PutIdFolderUploadEmail>>,
9294    #[serde(default, skip_serializing_if = "Option::is_none")]
9295    pub tags: Option<Vec<String>>,
9296    #[serde(default, skip_serializing_if = "Option::is_none")]
9297    pub is_collaboration_restricted_to_enterprise: Option<bool>,
9298    #[serde(
9299        default,
9300        skip_serializing_if = "Option::is_none",
9301        deserialize_with = "double_option"
9302    )]
9303    pub collections: Option<Option<Vec<CommentItem>>>,
9304    #[serde(default, skip_serializing_if = "Option::is_none")]
9305    pub can_non_owners_view_collaborators: Option<bool>,
9306}
9307
9308#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9309pub struct CreateFolderRequest {
9310    pub name: String,
9311    pub parent: AttributesParent,
9312    #[serde(default, skip_serializing_if = "Option::is_none")]
9313    pub folder_upload_email: Option<PutIdFolderUploadEmail>,
9314    #[serde(default, skip_serializing_if = "Option::is_none")]
9315    pub sync_state: Option<FolderFullSyncState>,
9316}
9317
9318#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9319pub struct CopyFolderRequest {
9320    #[serde(default, skip_serializing_if = "Option::is_none")]
9321    pub name: Option<String>,
9322    pub parent: AttributesParent,
9323}
9324
9325#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9326#[serde(transparent)]
9327pub struct GetFolderTrashItemsSort(pub String);
9328
9329impl GetFolderTrashItemsSort {
9330    pub const NAME: &'static str = "name";
9331    pub const DATE: &'static str = "date";
9332    pub const SIZE: &'static str = "size";
9333}
9334
9335#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9336pub struct PostFolder {
9337    pub r#type: String,
9338    pub id: String,
9339}
9340
9341#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9342pub struct CreateFolderLockRequest {
9343    #[serde(default, skip_serializing_if = "Option::is_none")]
9344    pub locked_operations: Option<FolderLockLockedOperations>,
9345    pub folder: PostFolder,
9346}
9347
9348#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9349#[serde(transparent)]
9350pub struct PutAddOp(pub String);
9351
9352impl PutAddOp {
9353    pub const ADDENUMOPTION: &'static str = "addEnumOption";
9354}
9355
9356#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9357pub struct PutAddData {
9358    pub key: String,
9359    #[serde(
9360        rename = "staticConfig",
9361        default,
9362        skip_serializing_if = "Option::is_none"
9363    )]
9364    pub static_config: Option<OptionsStaticConfig>,
9365}
9366
9367#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9368pub struct UpdateClassificationAddRequest {
9369    pub op: PutAddOp,
9370    #[serde(rename = "fieldKey")]
9371    pub field_key: FieldsKey,
9372    pub data: PutAddData,
9373}
9374
9375#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9376#[serde(transparent)]
9377pub struct PutUpdateOp(pub String);
9378
9379impl PutUpdateOp {
9380    pub const EDITENUMOPTION: &'static str = "editEnumOption";
9381}
9382
9383#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9384pub struct UpdateClassificationUpdateRequest {
9385    pub op: PutUpdateOp,
9386    #[serde(rename = "fieldKey")]
9387    pub field_key: FieldsKey,
9388    #[serde(rename = "enumOptionKey")]
9389    pub enum_option_key: String,
9390    pub data: PutAddData,
9391}
9392
9393#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9394#[serde(transparent)]
9395pub struct PutIdSchemaOp(pub String);
9396
9397impl PutIdSchemaOp {
9398    pub const EDITTEMPLATE: &'static str = "editTemplate";
9399    pub const ADDFIELD: &'static str = "addField";
9400    pub const REORDERFIELDS: &'static str = "reorderFields";
9401    pub const ADDENUMOPTION: &'static str = "addEnumOption";
9402    pub const REORDERENUMOPTIONS: &'static str = "reorderEnumOptions";
9403    pub const REORDERMULTISELECTOPTIONS: &'static str = "reorderMultiSelectOptions";
9404    pub const ADDMULTISELECTOPTION: &'static str = "addMultiSelectOption";
9405    pub const EDITFIELD: &'static str = "editField";
9406    pub const REMOVEFIELD: &'static str = "removeField";
9407    pub const EDITENUMOPTION: &'static str = "editEnumOption";
9408    pub const REMOVEENUMOPTION: &'static str = "removeEnumOption";
9409    pub const EDITMULTISELECTOPTION: &'static str = "editMultiSelectOption";
9410    pub const REMOVEMULTISELECTOPTION: &'static str = "removeMultiSelectOption";
9411}
9412
9413#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9414pub struct UpdateSchemaRequest {
9415    pub op: PutIdSchemaOp,
9416    #[serde(default, skip_serializing_if = "Option::is_none")]
9417    pub data: Option<std::collections::HashMap<String, serde_json::Value>>,
9418    #[serde(rename = "fieldKey", default, skip_serializing_if = "Option::is_none")]
9419    pub field_key: Option<String>,
9420    #[serde(rename = "fieldKeys", default, skip_serializing_if = "Option::is_none")]
9421    pub field_keys: Option<Vec<String>>,
9422    #[serde(
9423        rename = "enumOptionKey",
9424        default,
9425        skip_serializing_if = "Option::is_none"
9426    )]
9427    pub enum_option_key: Option<String>,
9428    #[serde(
9429        rename = "enumOptionKeys",
9430        default,
9431        skip_serializing_if = "Option::is_none"
9432    )]
9433    pub enum_option_keys: Option<Vec<String>>,
9434    #[serde(
9435        rename = "multiSelectOptionKey",
9436        default,
9437        skip_serializing_if = "Option::is_none"
9438    )]
9439    pub multi_select_option_key: Option<String>,
9440    #[serde(
9441        rename = "multiSelectOptionKeys",
9442        default,
9443        skip_serializing_if = "Option::is_none"
9444    )]
9445    pub multi_select_option_keys: Option<Vec<String>>,
9446}
9447
9448#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9449#[serde(transparent)]
9450pub struct CreateSchemaRequestFieldsType(pub String);
9451
9452impl CreateSchemaRequestFieldsType {
9453    pub const STRING: &'static str = "string";
9454    pub const FLOAT: &'static str = "float";
9455    pub const DATE: &'static str = "date";
9456    pub const ENUM: &'static str = "enum";
9457    pub const MULTISELECT: &'static str = "multiSelect";
9458    pub const TAXONOMY: &'static str = "taxonomy";
9459}
9460
9461#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9462pub struct PostSchemaFields {
9463    pub r#type: CreateSchemaRequestFieldsType,
9464    pub key: String,
9465    #[serde(rename = "displayName")]
9466    pub display_name: String,
9467    #[serde(default, skip_serializing_if = "Option::is_none")]
9468    pub description: Option<String>,
9469    #[serde(default, skip_serializing_if = "Option::is_none")]
9470    pub hidden: Option<bool>,
9471    #[serde(default, skip_serializing_if = "Option::is_none")]
9472    pub options: Option<Vec<FieldsOptions>>,
9473    #[serde(
9474        rename = "taxonomyKey",
9475        default,
9476        skip_serializing_if = "Option::is_none"
9477    )]
9478    pub taxonomy_key: Option<String>,
9479    #[serde(
9480        rename = "taxonomyId",
9481        default,
9482        skip_serializing_if = "Option::is_none"
9483    )]
9484    pub taxonomy_id: Option<String>,
9485    #[serde(default, skip_serializing_if = "Option::is_none")]
9486    pub namespace: Option<String>,
9487    #[serde(
9488        rename = "optionsRules",
9489        default,
9490        skip_serializing_if = "Option::is_none"
9491    )]
9492    pub options_rules: Option<FieldsOptionsRules>,
9493}
9494
9495#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9496pub struct CreateSchemaRequest {
9497    pub scope: String,
9498    #[serde(
9499        rename = "templateKey",
9500        default,
9501        skip_serializing_if = "Option::is_none"
9502    )]
9503    pub template_key: Option<String>,
9504    #[serde(rename = "displayName")]
9505    pub display_name: String,
9506    #[serde(default, skip_serializing_if = "Option::is_none")]
9507    pub hidden: Option<bool>,
9508    #[serde(default, skip_serializing_if = "Option::is_none")]
9509    pub fields: Option<Vec<PostSchemaFields>>,
9510    #[serde(
9511        rename = "copyInstanceOnItemCopy",
9512        default,
9513        skip_serializing_if = "Option::is_none"
9514    )]
9515    pub copy_instance_on_item_copy: Option<bool>,
9516}
9517
9518#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9519pub struct PostMetadataTemplateSchemaClassificationsFields {
9520    pub r#type: FieldsType,
9521    pub key: FieldsKey,
9522    #[serde(rename = "displayName")]
9523    pub display_name: ClassificationTemplateDisplayName,
9524    #[serde(default, skip_serializing_if = "Option::is_none")]
9525    pub hidden: Option<bool>,
9526    pub options: Vec<PutAddData>,
9527}
9528
9529#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9530pub struct CreateMetadataTemplateSchemaClassificationsRequest {
9531    pub scope: EnterpriseType,
9532    #[serde(rename = "templateKey")]
9533    pub template_key: ClassificationTemplate2,
9534    #[serde(rename = "displayName")]
9535    pub display_name: ClassificationTemplateDisplayName,
9536    #[serde(default, skip_serializing_if = "Option::is_none")]
9537    pub hidden: Option<bool>,
9538    #[serde(
9539        rename = "copyInstanceOnItemCopy",
9540        default,
9541        skip_serializing_if = "Option::is_none"
9542    )]
9543    pub copy_instance_on_item_copy: Option<bool>,
9544    pub fields: Vec<PostMetadataTemplateSchemaClassificationsFields>,
9545}
9546
9547#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9548pub struct CreateMetadataCascadePolicyRequest {
9549    pub folder_id: String,
9550    pub scope: GetFileIdMetadataIdScope,
9551    #[serde(rename = "templateKey")]
9552    pub template_key: String,
9553}
9554
9555#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9556#[serde(transparent)]
9557pub struct PostIdApplyConflictResolution(pub String);
9558
9559impl PostIdApplyConflictResolution {
9560    pub const NONE: &'static str = "none";
9561    pub const OVERWRITE: &'static str = "overwrite";
9562}
9563
9564#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9565pub struct ApplyMetadataCascadePolicyRequest {
9566    pub conflict_resolution: PostIdApplyConflictResolution,
9567}
9568
9569#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9570pub struct UpdateCommentRequest {
9571    #[serde(default, skip_serializing_if = "Option::is_none")]
9572    pub message: Option<String>,
9573}
9574
9575#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9576#[serde(transparent)]
9577pub struct ItemType(pub String);
9578
9579impl ItemType {
9580    pub const FILE: &'static str = "file";
9581    pub const COMMENT: &'static str = "comment";
9582}
9583
9584#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9585pub struct PostItem {
9586    pub id: String,
9587    pub r#type: ItemType,
9588}
9589
9590#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9591pub struct CreateCommentRequest {
9592    pub message: String,
9593    #[serde(default, skip_serializing_if = "Option::is_none")]
9594    pub tagged_message: Option<String>,
9595    pub item: PostItem,
9596}
9597
9598#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9599#[serde(transparent)]
9600pub struct PutCollaborationIdStatus(pub String);
9601
9602impl PutCollaborationIdStatus {
9603    pub const PENDING: &'static str = "pending";
9604    pub const ACCEPTED: &'static str = "accepted";
9605    pub const REJECTED: &'static str = "rejected";
9606}
9607
9608#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9609pub struct UpdateCollaborationRequest {
9610    #[serde(default, skip_serializing_if = "Option::is_none")]
9611    pub role: Option<CollaborationRole>,
9612    #[serde(default, skip_serializing_if = "Option::is_none")]
9613    pub status: Option<PutCollaborationIdStatus>,
9614    #[serde(default, skip_serializing_if = "Option::is_none")]
9615    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
9616    #[serde(default, skip_serializing_if = "Option::is_none")]
9617    pub can_view_path: Option<bool>,
9618}
9619
9620#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9621#[serde(transparent)]
9622pub struct GetCollaborationsStatus(pub String);
9623
9624impl GetCollaborationsStatus {
9625    pub const PENDING: &'static str = "pending";
9626}
9627
9628#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9629pub struct PostCollaborationsItem {
9630    #[serde(default, skip_serializing_if = "Option::is_none")]
9631    pub r#type: Option<EventSourceItemType>,
9632    #[serde(default, skip_serializing_if = "Option::is_none")]
9633    pub id: Option<String>,
9634}
9635
9636#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9637#[serde(transparent)]
9638pub struct AccessibleByType(pub String);
9639
9640impl AccessibleByType {
9641    pub const USER: &'static str = "user";
9642    pub const GROUP: &'static str = "group";
9643}
9644
9645#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9646pub struct PostCollaborationsAccessibleBy {
9647    pub r#type: AccessibleByType,
9648    #[serde(default, skip_serializing_if = "Option::is_none")]
9649    pub id: Option<String>,
9650    #[serde(default, skip_serializing_if = "Option::is_none")]
9651    pub login: Option<String>,
9652}
9653
9654#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9655pub struct CreateCollaborationsRequest {
9656    pub item: PostCollaborationsItem,
9657    pub accessible_by: PostCollaborationsAccessibleBy,
9658    pub role: FileFullAllowedInviteeRoles,
9659    #[serde(default, skip_serializing_if = "Option::is_none")]
9660    pub is_access_only: Option<bool>,
9661    #[serde(default, skip_serializing_if = "Option::is_none")]
9662    pub can_view_path: Option<bool>,
9663    #[serde(default, skip_serializing_if = "Option::is_none")]
9664    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
9665}
9666
9667#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9668#[serde(transparent)]
9669pub struct GetScope(pub String);
9670
9671impl GetScope {
9672    pub const USER_CONTENT: &'static str = "user_content";
9673    pub const ENTERPRISE_CONTENT: &'static str = "enterprise_content";
9674}
9675
9676#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9677#[serde(transparent)]
9678pub struct GetContentTypes(pub String);
9679
9680impl GetContentTypes {
9681    pub const NAME: &'static str = "name";
9682    pub const DESCRIPTION: &'static str = "description";
9683    pub const FILE_CONTENT: &'static str = "file_content";
9684    pub const COMMENTS: &'static str = "comments";
9685    pub const TAGS: &'static str = "tags";
9686}
9687
9688#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9689#[serde(transparent)]
9690pub struct GetType(pub String);
9691
9692impl GetType {
9693    pub const FILE: &'static str = "file";
9694    pub const FOLDER: &'static str = "folder";
9695    pub const WEB_LINK: &'static str = "web_link";
9696}
9697
9698#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9699#[serde(transparent)]
9700pub struct GetTrashContent(pub String);
9701
9702impl GetTrashContent {
9703    pub const NON_TRASHED_ONLY: &'static str = "non_trashed_only";
9704    pub const TRASHED_ONLY: &'static str = "trashed_only";
9705    pub const ALL_ITEMS: &'static str = "all_items";
9706}
9707
9708#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9709#[serde(transparent)]
9710pub struct GetSort(pub String);
9711
9712impl GetSort {
9713    pub const MODIFIED_AT: &'static str = "modified_at";
9714    pub const RELEVANCE: &'static str = "relevance";
9715}
9716
9717#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9718#[serde(transparent)]
9719pub struct GetDirection(pub String);
9720
9721impl GetDirection {
9722    pub const DESC: &'static str = "DESC";
9723    pub const ASC: &'static str = "ASC";
9724}
9725
9726#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9727pub struct CreateTaskRequestItem {
9728    #[serde(default, skip_serializing_if = "Option::is_none")]
9729    pub id: Option<String>,
9730    #[serde(default, skip_serializing_if = "Option::is_none")]
9731    pub r#type: Option<AiCitationType>,
9732}
9733
9734#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9735pub struct CreateTaskRequest {
9736    pub item: CreateTaskRequestItem,
9737    #[serde(default, skip_serializing_if = "Option::is_none")]
9738    pub action: Option<TaskAction>,
9739    #[serde(default, skip_serializing_if = "Option::is_none")]
9740    pub message: Option<String>,
9741    #[serde(default, skip_serializing_if = "Option::is_none")]
9742    pub due_at: Option<chrono::DateTime<chrono::Utc>>,
9743    #[serde(default, skip_serializing_if = "Option::is_none")]
9744    pub completion_rule: Option<TaskCompletionRule>,
9745}
9746
9747#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9748pub struct UpdateTaskRequest {
9749    #[serde(default, skip_serializing_if = "Option::is_none")]
9750    pub action: Option<TaskAction>,
9751    #[serde(default, skip_serializing_if = "Option::is_none")]
9752    pub message: Option<String>,
9753    #[serde(default, skip_serializing_if = "Option::is_none")]
9754    pub due_at: Option<chrono::DateTime<chrono::Utc>>,
9755    #[serde(default, skip_serializing_if = "Option::is_none")]
9756    pub completion_rule: Option<TaskCompletionRule>,
9757}
9758
9759#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9760pub struct PostTask {
9761    pub id: String,
9762    pub r#type: TaskType,
9763}
9764
9765#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9766pub struct PostAssignTo {
9767    #[serde(default, skip_serializing_if = "Option::is_none")]
9768    pub id: Option<String>,
9769    #[serde(default, skip_serializing_if = "Option::is_none")]
9770    pub login: Option<String>,
9771}
9772
9773#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9774pub struct CreateTaskAssignmentRequest {
9775    pub task: PostTask,
9776    pub assign_to: PostAssignTo,
9777}
9778
9779#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9780pub struct UpdateTaskAssignmentRequest {
9781    #[serde(default, skip_serializing_if = "Option::is_none")]
9782    pub message: Option<String>,
9783    #[serde(default, skip_serializing_if = "Option::is_none")]
9784    pub resolution_state: Option<TaskAssignmentResolutionState>,
9785}
9786
9787#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9788pub struct UpdateFileAddSharedLinkRequestSharedLinkPermissions {
9789    #[serde(default, skip_serializing_if = "Option::is_none")]
9790    pub can_download: Option<bool>,
9791    #[serde(default, skip_serializing_if = "Option::is_none")]
9792    pub can_preview: Option<bool>,
9793    #[serde(default, skip_serializing_if = "Option::is_none")]
9794    pub can_edit: Option<bool>,
9795}
9796
9797#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9798pub struct PutFileIdAddSharedLinkSharedLink {
9799    #[serde(default, skip_serializing_if = "Option::is_none")]
9800    pub access: Option<SharedLinkAccess>,
9801    #[serde(
9802        default,
9803        skip_serializing_if = "Option::is_none",
9804        deserialize_with = "double_option"
9805    )]
9806    pub password: Option<Option<String>>,
9807    #[serde(default, skip_serializing_if = "Option::is_none")]
9808    pub vanity_name: Option<String>,
9809    #[serde(default, skip_serializing_if = "Option::is_none")]
9810    pub unshared_at: Option<chrono::DateTime<chrono::Utc>>,
9811    #[serde(default, skip_serializing_if = "Option::is_none")]
9812    pub permissions: Option<UpdateFileAddSharedLinkRequestSharedLinkPermissions>,
9813}
9814
9815#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9816pub struct UpdateFileAddSharedLinkRequest {
9817    #[serde(default, skip_serializing_if = "Option::is_none")]
9818    pub shared_link: Option<PutFileIdAddSharedLinkSharedLink>,
9819}
9820
9821#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9822pub struct UpdateFileRemoveSharedLinkRequest {
9823    #[serde(
9824        default,
9825        skip_serializing_if = "Option::is_none",
9826        deserialize_with = "double_option"
9827    )]
9828    pub shared_link: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
9829}
9830
9831#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9832pub struct PutFolderIdUpdateSharedLinkSharedLink {
9833    #[serde(default, skip_serializing_if = "Option::is_none")]
9834    pub access: Option<SharedLinkAccess>,
9835    #[serde(default, skip_serializing_if = "Option::is_none")]
9836    pub password: Option<String>,
9837    #[serde(default, skip_serializing_if = "Option::is_none")]
9838    pub vanity_name: Option<String>,
9839    #[serde(default, skip_serializing_if = "Option::is_none")]
9840    pub unshared_at: Option<chrono::DateTime<chrono::Utc>>,
9841    #[serde(default, skip_serializing_if = "Option::is_none")]
9842    pub permissions: Option<UpdateFileAddSharedLinkRequestSharedLinkPermissions>,
9843}
9844
9845#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9846pub struct UpdateFolderUpdateSharedLinkRequest {
9847    #[serde(default, skip_serializing_if = "Option::is_none")]
9848    pub shared_link: Option<PutFolderIdUpdateSharedLinkSharedLink>,
9849}
9850
9851#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9852pub struct CreateWebLinkRequest {
9853    pub url: String,
9854    pub parent: AttributesParent,
9855    #[serde(default, skip_serializing_if = "Option::is_none")]
9856    pub name: Option<String>,
9857    #[serde(default, skip_serializing_if = "Option::is_none")]
9858    pub description: Option<String>,
9859}
9860
9861#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9862pub struct UpdateWebLinkRequestSharedLink {
9863    #[serde(default, skip_serializing_if = "Option::is_none")]
9864    pub access: Option<SharedLinkAccess>,
9865    #[serde(
9866        default,
9867        skip_serializing_if = "Option::is_none",
9868        deserialize_with = "double_option"
9869    )]
9870    pub password: Option<Option<String>>,
9871    #[serde(default, skip_serializing_if = "Option::is_none")]
9872    pub vanity_name: Option<String>,
9873    #[serde(default, skip_serializing_if = "Option::is_none")]
9874    pub unshared_at: Option<chrono::DateTime<chrono::Utc>>,
9875}
9876
9877#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9878pub struct UpdateWebLinkRequest {
9879    #[serde(default, skip_serializing_if = "Option::is_none")]
9880    pub url: Option<String>,
9881    #[serde(default, skip_serializing_if = "Option::is_none")]
9882    pub parent: Option<PutIdParent>,
9883    #[serde(default, skip_serializing_if = "Option::is_none")]
9884    pub name: Option<String>,
9885    #[serde(default, skip_serializing_if = "Option::is_none")]
9886    pub description: Option<String>,
9887    #[serde(default, skip_serializing_if = "Option::is_none")]
9888    pub shared_link: Option<UpdateWebLinkRequestSharedLink>,
9889}
9890
9891#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9892#[serde(transparent)]
9893pub struct GetUserType(pub String);
9894
9895impl GetUserType {
9896    pub const ALL: &'static str = "all";
9897    pub const MANAGED: &'static str = "managed";
9898    pub const EXTERNAL: &'static str = "external";
9899}
9900
9901#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
9902#[serde(transparent)]
9903pub struct PostRole(pub String);
9904
9905impl PostRole {
9906    pub const COADMIN: &'static str = "coadmin";
9907    pub const USER: &'static str = "user";
9908}
9909
9910#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9911pub struct CreateUserRequest {
9912    pub name: String,
9913    #[serde(default, skip_serializing_if = "Option::is_none")]
9914    pub login: Option<String>,
9915    #[serde(default, skip_serializing_if = "Option::is_none")]
9916    pub is_platform_access_only: Option<bool>,
9917    #[serde(default, skip_serializing_if = "Option::is_none")]
9918    pub role: Option<PostRole>,
9919    #[serde(default, skip_serializing_if = "Option::is_none")]
9920    pub language: Option<String>,
9921    #[serde(default, skip_serializing_if = "Option::is_none")]
9922    pub is_sync_enabled: Option<bool>,
9923    #[serde(default, skip_serializing_if = "Option::is_none")]
9924    pub job_title: Option<String>,
9925    #[serde(default, skip_serializing_if = "Option::is_none")]
9926    pub phone: Option<String>,
9927    #[serde(default, skip_serializing_if = "Option::is_none")]
9928    pub address: Option<String>,
9929    #[serde(default, skip_serializing_if = "Option::is_none")]
9930    pub space_amount: Option<i64>,
9931    #[serde(default, skip_serializing_if = "Option::is_none")]
9932    pub tracking_codes: Option<Vec<TrackingCode>>,
9933    #[serde(default, skip_serializing_if = "Option::is_none")]
9934    pub can_see_managed_users: Option<bool>,
9935    #[serde(default, skip_serializing_if = "Option::is_none")]
9936    pub timezone: Option<String>,
9937    #[serde(default, skip_serializing_if = "Option::is_none")]
9938    pub is_external_collab_restricted: Option<bool>,
9939    #[serde(default, skip_serializing_if = "Option::is_none")]
9940    pub is_exempt_from_device_limits: Option<bool>,
9941    #[serde(default, skip_serializing_if = "Option::is_none")]
9942    pub is_exempt_from_login_verification: Option<bool>,
9943    #[serde(default, skip_serializing_if = "Option::is_none")]
9944    pub status: Option<UserStatus>,
9945    #[serde(default, skip_serializing_if = "Option::is_none")]
9946    pub external_app_user_id: Option<String>,
9947}
9948
9949#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9950pub struct CreateUserTerminateSessionsRequest {
9951    pub user_ids: Vec<String>,
9952    pub user_logins: Vec<String>,
9953}
9954
9955#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9956pub struct PutIdNotificationEmail {
9957    #[serde(default, skip_serializing_if = "Option::is_none")]
9958    pub email: Option<String>,
9959}
9960
9961#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
9962pub struct UpdateUserRequest {
9963    #[serde(
9964        default,
9965        skip_serializing_if = "Option::is_none",
9966        deserialize_with = "double_option"
9967    )]
9968    pub enterprise: Option<Option<String>>,
9969    #[serde(default, skip_serializing_if = "Option::is_none")]
9970    pub notify: Option<bool>,
9971    #[serde(default, skip_serializing_if = "Option::is_none")]
9972    pub name: Option<String>,
9973    #[serde(default, skip_serializing_if = "Option::is_none")]
9974    pub login: Option<String>,
9975    #[serde(default, skip_serializing_if = "Option::is_none")]
9976    pub role: Option<PostRole>,
9977    #[serde(default, skip_serializing_if = "Option::is_none")]
9978    pub language: Option<String>,
9979    #[serde(default, skip_serializing_if = "Option::is_none")]
9980    pub is_sync_enabled: Option<bool>,
9981    #[serde(default, skip_serializing_if = "Option::is_none")]
9982    pub job_title: Option<String>,
9983    #[serde(default, skip_serializing_if = "Option::is_none")]
9984    pub phone: Option<String>,
9985    #[serde(default, skip_serializing_if = "Option::is_none")]
9986    pub address: Option<String>,
9987    #[serde(default, skip_serializing_if = "Option::is_none")]
9988    pub tracking_codes: Option<Vec<TrackingCode>>,
9989    #[serde(default, skip_serializing_if = "Option::is_none")]
9990    pub can_see_managed_users: Option<bool>,
9991    #[serde(default, skip_serializing_if = "Option::is_none")]
9992    pub timezone: Option<String>,
9993    #[serde(default, skip_serializing_if = "Option::is_none")]
9994    pub is_external_collab_restricted: Option<bool>,
9995    #[serde(default, skip_serializing_if = "Option::is_none")]
9996    pub is_exempt_from_device_limits: Option<bool>,
9997    #[serde(default, skip_serializing_if = "Option::is_none")]
9998    pub is_exempt_from_login_verification: Option<bool>,
9999    #[serde(default, skip_serializing_if = "Option::is_none")]
10000    pub is_password_reset_required: Option<bool>,
10001    #[serde(default, skip_serializing_if = "Option::is_none")]
10002    pub is_collaborated_content_available_when_owner_inactive: Option<bool>,
10003    #[serde(default, skip_serializing_if = "Option::is_none")]
10004    pub status: Option<UserStatus>,
10005    #[serde(default, skip_serializing_if = "Option::is_none")]
10006    pub space_amount: Option<i64>,
10007    #[serde(
10008        default,
10009        skip_serializing_if = "Option::is_none",
10010        deserialize_with = "double_option"
10011    )]
10012    pub notification_email: Option<Option<PutIdNotificationEmail>>,
10013    #[serde(default, skip_serializing_if = "Option::is_none")]
10014    pub external_app_user_id: Option<String>,
10015}
10016
10017#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10018pub struct CreateUserAvatarRequest {
10019    #[serde(skip)]
10020    pub pic: Vec<u8>,
10021}
10022
10023#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10024pub struct TransferFoldersRequest {
10025    pub owned_by: AttributesParent,
10026}
10027
10028#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10029pub struct CreateUserIdRequest {
10030    pub email: String,
10031}
10032
10033#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10034pub struct PostActionableBy {
10035    #[serde(default, skip_serializing_if = "Option::is_none")]
10036    pub login: Option<String>,
10037}
10038
10039#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10040pub struct CreateInviteRequest {
10041    pub enterprise: AttributesParent,
10042    pub actionable_by: PostActionableBy,
10043}
10044
10045#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10046pub struct CreateGroupRequest {
10047    pub name: String,
10048    #[serde(default, skip_serializing_if = "Option::is_none")]
10049    pub provenance: Option<String>,
10050    #[serde(default, skip_serializing_if = "Option::is_none")]
10051    pub external_sync_identifier: Option<String>,
10052    #[serde(default, skip_serializing_if = "Option::is_none")]
10053    pub description: Option<String>,
10054    #[serde(default, skip_serializing_if = "Option::is_none")]
10055    pub invitability_level: Option<GroupFullInvitabilityLevel>,
10056    #[serde(default, skip_serializing_if = "Option::is_none")]
10057    pub member_viewability_level: Option<GroupFullInvitabilityLevel>,
10058}
10059
10060#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10061pub struct CreateGroupTerminateSessionsRequest {
10062    pub group_ids: Vec<String>,
10063}
10064
10065#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10066pub struct UpdateGroupRequest {
10067    #[serde(default, skip_serializing_if = "Option::is_none")]
10068    pub name: Option<String>,
10069    #[serde(default, skip_serializing_if = "Option::is_none")]
10070    pub provenance: Option<String>,
10071    #[serde(default, skip_serializing_if = "Option::is_none")]
10072    pub external_sync_identifier: Option<String>,
10073    #[serde(default, skip_serializing_if = "Option::is_none")]
10074    pub description: Option<String>,
10075    #[serde(default, skip_serializing_if = "Option::is_none")]
10076    pub invitability_level: Option<GroupFullInvitabilityLevel>,
10077    #[serde(default, skip_serializing_if = "Option::is_none")]
10078    pub member_viewability_level: Option<GroupFullInvitabilityLevel>,
10079}
10080
10081#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10082pub struct CreateGroupMembershipRequest {
10083    pub user: AttributesParent,
10084    pub group: AttributesParent,
10085    #[serde(default, skip_serializing_if = "Option::is_none")]
10086    pub role: Option<GroupMembershipRole>,
10087    #[serde(
10088        default,
10089        skip_serializing_if = "Option::is_none",
10090        deserialize_with = "double_option"
10091    )]
10092    pub configurable_permissions: Option<Option<std::collections::HashMap<String, bool>>>,
10093}
10094
10095#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10096pub struct UpdateGroupMembershipRequest {
10097    #[serde(default, skip_serializing_if = "Option::is_none")]
10098    pub role: Option<GroupMembershipRole>,
10099    #[serde(
10100        default,
10101        skip_serializing_if = "Option::is_none",
10102        deserialize_with = "double_option"
10103    )]
10104    pub configurable_permissions: Option<Option<std::collections::HashMap<String, bool>>>,
10105}
10106
10107#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10108pub struct CreateWebhookRequest {
10109    pub target: WebhookTarget,
10110    pub address: String,
10111    pub triggers: Vec<WebhookTriggers>,
10112}
10113
10114#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10115pub struct UpdateWebhookRequest {
10116    #[serde(default, skip_serializing_if = "Option::is_none")]
10117    pub target: Option<WebhookTarget>,
10118    #[serde(default, skip_serializing_if = "Option::is_none")]
10119    pub address: Option<String>,
10120    #[serde(default, skip_serializing_if = "Option::is_none")]
10121    pub triggers: Option<Vec<WebhookTriggers>>,
10122}
10123
10124#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10125pub struct PutSkillInvocationIdMetadata {
10126    #[serde(default, skip_serializing_if = "Option::is_none")]
10127    pub cards: Option<Vec<SkillCard>>,
10128}
10129
10130#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10131pub struct PutSkillInvocationIdFile {
10132    #[serde(default, skip_serializing_if = "Option::is_none")]
10133    pub r#type: Option<AiCitationType>,
10134    #[serde(default, skip_serializing_if = "Option::is_none")]
10135    pub id: Option<String>,
10136}
10137
10138#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10139pub struct PutSkillInvocationIdFileVersion {
10140    #[serde(default, skip_serializing_if = "Option::is_none")]
10141    pub r#type: Option<FileVersionType>,
10142    #[serde(default, skip_serializing_if = "Option::is_none")]
10143    pub id: Option<String>,
10144}
10145
10146#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10147pub struct PutSkillInvocationIdUsage {
10148    #[serde(default, skip_serializing_if = "Option::is_none")]
10149    pub unit: Option<String>,
10150    #[serde(default, skip_serializing_if = "Option::is_none")]
10151    pub value: Option<f64>,
10152}
10153
10154#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10155pub struct UpdateSkillInvocationRequest {
10156    pub status: StatusCode,
10157    pub metadata: PutSkillInvocationIdMetadata,
10158    pub file: PutSkillInvocationIdFile,
10159    #[serde(default, skip_serializing_if = "Option::is_none")]
10160    pub file_version: Option<PutSkillInvocationIdFileVersion>,
10161    #[serde(default, skip_serializing_if = "Option::is_none")]
10162    pub usage: Option<PutSkillInvocationIdUsage>,
10163}
10164
10165#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10166#[serde(transparent)]
10167pub struct GetStreamType(pub String);
10168
10169impl GetStreamType {
10170    pub const ALL: &'static str = "all";
10171    pub const CHANGES: &'static str = "changes";
10172    pub const SYNC: &'static str = "sync";
10173    pub const ADMIN_LOGS: &'static str = "admin_logs";
10174    pub const ADMIN_LOGS_STREAMING: &'static str = "admin_logs_streaming";
10175}
10176
10177#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10178#[serde(transparent)]
10179pub struct GetEventType(pub String);
10180
10181impl GetEventType {
10182    pub const ACCESS_GRANTED: &'static str = "ACCESS_GRANTED";
10183    pub const ACCESS_REVOKED: &'static str = "ACCESS_REVOKED";
10184    pub const ADD_DEVICE_ASSOCIATION: &'static str = "ADD_DEVICE_ASSOCIATION";
10185    pub const ADD_LOGIN_ACTIVITY_DEVICE: &'static str = "ADD_LOGIN_ACTIVITY_DEVICE";
10186    pub const ADMIN_LOGIN: &'static str = "ADMIN_LOGIN";
10187    pub const ADVANCED_FOLDER_SETTINGS_UPDATE: &'static str = "ADVANCED_FOLDER_SETTINGS_UPDATE";
10188    pub const APPLICATION_CREATED: &'static str = "APPLICATION_CREATED";
10189    pub const APPLICATION_PUBLIC_KEY_ADDED: &'static str = "APPLICATION_PUBLIC_KEY_ADDED";
10190    pub const APPLICATION_PUBLIC_KEY_DELETED: &'static str = "APPLICATION_PUBLIC_KEY_DELETED";
10191    pub const CHANGE_ADMIN_ROLE: &'static str = "CHANGE_ADMIN_ROLE";
10192    pub const CHANGE_FOLDER_PERMISSION: &'static str = "CHANGE_FOLDER_PERMISSION";
10193    pub const COLLABORATION_ACCEPT: &'static str = "COLLABORATION_ACCEPT";
10194    pub const COLLABORATION_EXPIRATION: &'static str = "COLLABORATION_EXPIRATION";
10195    pub const COLLABORATION_INVITE: &'static str = "COLLABORATION_INVITE";
10196    pub const COLLABORATION_REMOVE: &'static str = "COLLABORATION_REMOVE";
10197    pub const COLLABORATION_ROLE_CHANGE: &'static str = "COLLABORATION_ROLE_CHANGE";
10198    pub const COMMENT_CREATE: &'static str = "COMMENT_CREATE";
10199    pub const COMMENT_DELETE: &'static str = "COMMENT_DELETE";
10200    pub const COMMENT_EDIT: &'static str = "COMMENT_EDIT";
10201    pub const CONTENT_WORKFLOW_ABNORMAL_DOWNLOAD_ACTIVITY: &'static str =
10202        "CONTENT_WORKFLOW_ABNORMAL_DOWNLOAD_ACTIVITY";
10203    pub const CONTENT_WORKFLOW_AUTOMATION_ADD: &'static str = "CONTENT_WORKFLOW_AUTOMATION_ADD";
10204    pub const CONTENT_WORKFLOW_AUTOMATION_DELETE: &'static str =
10205        "CONTENT_WORKFLOW_AUTOMATION_DELETE";
10206    pub const CONTENT_WORKFLOW_POLICY_ADD: &'static str = "CONTENT_WORKFLOW_POLICY_ADD";
10207    pub const CONTENT_WORKFLOW_SHARING_POLICY_VIOLATION: &'static str =
10208        "CONTENT_WORKFLOW_SHARING_POLICY_VIOLATION";
10209    pub const CONTENT_WORKFLOW_UPLOAD_POLICY_VIOLATION: &'static str =
10210        "CONTENT_WORKFLOW_UPLOAD_POLICY_VIOLATION";
10211    pub const COPY: &'static str = "COPY";
10212    pub const DATA_RETENTION_CREATE_RETENTION: &'static str = "DATA_RETENTION_CREATE_RETENTION";
10213    pub const DATA_RETENTION_REMOVE_RETENTION: &'static str = "DATA_RETENTION_REMOVE_RETENTION";
10214    pub const DELETE: &'static str = "DELETE";
10215    pub const DELETE_USER: &'static str = "DELETE_USER";
10216    pub const DEVICE_TRUST_CHECK_FAILED: &'static str = "DEVICE_TRUST_CHECK_FAILED";
10217    pub const DOWNLOAD: &'static str = "DOWNLOAD";
10218    pub const EDIT: &'static str = "EDIT";
10219    pub const EDIT_USER: &'static str = "EDIT_USER";
10220    pub const EMAIL_ALIAS_CONFIRM: &'static str = "EMAIL_ALIAS_CONFIRM";
10221    pub const EMAIL_ALIAS_PRIMARY: &'static str = "EMAIL_ALIAS_PRIMARY";
10222    pub const EMAIL_ALIAS_REMOVE: &'static str = "EMAIL_ALIAS_REMOVE";
10223    pub const EMAIL_UPLOAD_DISABLED: &'static str = "EMAIL_UPLOAD_DISABLED";
10224    pub const EMAIL_UPLOAD_ENABLED: &'static str = "EMAIL_UPLOAD_ENABLED";
10225    pub const ENTERPRISE_APP_AUTHORIZATION_UPDATE: &'static str =
10226        "ENTERPRISE_APP_AUTHORIZATION_UPDATE";
10227    pub const EXTERNAL_COLLAB_SECURITY_SETTINGS: &'static str = "EXTERNAL_COLLAB_SECURITY_SETTINGS";
10228    pub const FAILED_LOGIN: &'static str = "FAILED_LOGIN";
10229    pub const FAVORITE: &'static str = "FAVORITE";
10230    pub const FILE_MARKED_MALICIOUS: &'static str = "FILE_MARKED_MALICIOUS";
10231    pub const FILE_REQUEST_CREATE: &'static str = "FILE_REQUEST_CREATE";
10232    pub const FILE_REQUEST_DELETE: &'static str = "FILE_REQUEST_DELETE";
10233    pub const FILE_REQUEST_UPDATE: &'static str = "FILE_REQUEST_UPDATE";
10234    pub const FILE_VERSION_RESTORE: &'static str = "FILE_VERSION_RESTORE";
10235    pub const FILE_WATERMARKED_DOWNLOAD: &'static str = "FILE_WATERMARKED_DOWNLOAD";
10236    pub const GROUP_ADD_ITEM: &'static str = "GROUP_ADD_ITEM";
10237    pub const GROUP_ADD_USER: &'static str = "GROUP_ADD_USER";
10238    pub const GROUP_CREATION: &'static str = "GROUP_CREATION";
10239    pub const GROUP_DELETION: &'static str = "GROUP_DELETION";
10240    pub const GROUP_EDITED: &'static str = "GROUP_EDITED";
10241    pub const GROUP_REMOVE_ITEM: &'static str = "GROUP_REMOVE_ITEM";
10242    pub const GROUP_REMOVE_USER: &'static str = "GROUP_REMOVE_USER";
10243    pub const ILLEGAL_ITEM_OWNERSHIP_TRANSFER_BY_USER: &'static str =
10244        "ILLEGAL_ITEM_OWNERSHIP_TRANSFER_BY_USER";
10245    pub const ITEM_EMAIL_SEND: &'static str = "ITEM_EMAIL_SEND";
10246    pub const ITEM_MODIFY: &'static str = "ITEM_MODIFY";
10247    pub const ITEM_OPEN: &'static str = "ITEM_OPEN";
10248    pub const ITEM_SHARED_UPDATE: &'static str = "ITEM_SHARED_UPDATE";
10249    pub const ITEM_SYNC: &'static str = "ITEM_SYNC";
10250    pub const ITEM_UNSYNC: &'static str = "ITEM_UNSYNC";
10251    pub const LEGAL_HOLD_ASSIGNMENT_CREATE: &'static str = "LEGAL_HOLD_ASSIGNMENT_CREATE";
10252    pub const LEGAL_HOLD_ASSIGNMENT_DELETE: &'static str = "LEGAL_HOLD_ASSIGNMENT_DELETE";
10253    pub const LEGAL_HOLD_POLICY_CREATE: &'static str = "LEGAL_HOLD_POLICY_CREATE";
10254    pub const LEGAL_HOLD_POLICY_DELETE: &'static str = "LEGAL_HOLD_POLICY_DELETE";
10255    pub const LEGAL_HOLD_POLICY_UPDATE: &'static str = "LEGAL_HOLD_POLICY_UPDATE";
10256    pub const LOCK: &'static str = "LOCK";
10257    pub const LOGIN: &'static str = "LOGIN";
10258    pub const METADATA_CASCADE_POLICY_APPLY: &'static str = "METADATA_CASCADE_POLICY_APPLY";
10259    pub const METADATA_CASCADE_POLICY_CREATE: &'static str = "METADATA_CASCADE_POLICY_CREATE";
10260    pub const METADATA_INSTANCE_COPY: &'static str = "METADATA_INSTANCE_COPY";
10261    pub const METADATA_INSTANCE_CREATE: &'static str = "METADATA_INSTANCE_CREATE";
10262    pub const METADATA_INSTANCE_DELETE: &'static str = "METADATA_INSTANCE_DELETE";
10263    pub const METADATA_INSTANCE_UPDATE: &'static str = "METADATA_INSTANCE_UPDATE";
10264    pub const METADATA_TEMPLATE_CREATE: &'static str = "METADATA_TEMPLATE_CREATE";
10265    pub const METADATA_TEMPLATE_DELETE: &'static str = "METADATA_TEMPLATE_DELETE";
10266    pub const METADATA_TEMPLATE_UPDATE: &'static str = "METADATA_TEMPLATE_UPDATE";
10267    pub const MOVE: &'static str = "MOVE";
10268    pub const NEW_USER: &'static str = "NEW_USER";
10269    pub const OAUTH2_ACCESS_TOKEN_REVOKE: &'static str = "OAUTH2_ACCESS_TOKEN_REVOKE";
10270    pub const OAUTH2_REFRESH_TOKEN_REVOKE: &'static str = "OAUTH2_REFRESH_TOKEN_REVOKE";
10271    pub const PREVIEW: &'static str = "PREVIEW";
10272    pub const REMOVE_DEVICE_ASSOCIATION: &'static str = "REMOVE_DEVICE_ASSOCIATION";
10273    pub const REMOVE_LOGIN_ACTIVITY_DEVICE: &'static str = "REMOVE_LOGIN_ACTIVITY_DEVICE";
10274    pub const RENAME: &'static str = "RENAME";
10275    pub const RETENTION_POLICY_ASSIGNMENT_ADD: &'static str = "RETENTION_POLICY_ASSIGNMENT_ADD";
10276    pub const SHARE: &'static str = "SHARE";
10277    pub const SHARED_LINK_SEND: &'static str = "SHARED_LINK_SEND";
10278    pub const SHARE_EXPIRATION: &'static str = "SHARE_EXPIRATION";
10279    pub const SHIELD_ALERT: &'static str = "SHIELD_ALERT";
10280    pub const SHIELD_DOWNLOAD_BLOCKED: &'static str = "SHIELD_DOWNLOAD_BLOCKED";
10281    pub const SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED: &'static str =
10282        "SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED";
10283    pub const SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION: &'static str =
10284        "SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION";
10285    pub const SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED: &'static str =
10286        "SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED";
10287    pub const SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION: &'static str =
10288        "SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION";
10289    pub const SHIELD_JUSTIFICATION_APPROVAL: &'static str = "SHIELD_JUSTIFICATION_APPROVAL";
10290    pub const SHIELD_PREVIEW_BLOCKED: &'static str = "SHIELD_PREVIEW_BLOCKED";
10291    pub const SHIELD_SHARED_LINK_ACCESS_BLOCKED: &'static str = "SHIELD_SHARED_LINK_ACCESS_BLOCKED";
10292    pub const SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_CREATE: &'static str =
10293        "SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_CREATE";
10294    pub const SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_UPDATE: &'static str =
10295        "SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_UPDATE";
10296    pub const SIGN_DOCUMENT_ASSIGNED: &'static str = "SIGN_DOCUMENT_ASSIGNED";
10297    pub const SIGN_DOCUMENT_CANCELLED: &'static str = "SIGN_DOCUMENT_CANCELLED";
10298    pub const SIGN_DOCUMENT_COMPLETED: &'static str = "SIGN_DOCUMENT_COMPLETED";
10299    pub const SIGN_DOCUMENT_CONVERTED: &'static str = "SIGN_DOCUMENT_CONVERTED";
10300    pub const SIGN_DOCUMENT_CREATED: &'static str = "SIGN_DOCUMENT_CREATED";
10301    pub const SIGN_DOCUMENT_DECLINED: &'static str = "SIGN_DOCUMENT_DECLINED";
10302    pub const SIGN_DOCUMENT_EXPIRED: &'static str = "SIGN_DOCUMENT_EXPIRED";
10303    pub const SIGN_DOCUMENT_SIGNED: &'static str = "SIGN_DOCUMENT_SIGNED";
10304    pub const SIGN_DOCUMENT_VIEWED_BY_SIGNED: &'static str = "SIGN_DOCUMENT_VIEWED_BY_SIGNED";
10305    pub const SIGNER_DOWNLOADED: &'static str = "SIGNER_DOWNLOADED";
10306    pub const SIGNER_FORWARDED: &'static str = "SIGNER_FORWARDED";
10307    pub const STORAGE_EXPIRATION: &'static str = "STORAGE_EXPIRATION";
10308    pub const TASK_ASSIGNMENT_CREATE: &'static str = "TASK_ASSIGNMENT_CREATE";
10309    pub const TASK_ASSIGNMENT_DELETE: &'static str = "TASK_ASSIGNMENT_DELETE";
10310    pub const TASK_ASSIGNMENT_UPDATE: &'static str = "TASK_ASSIGNMENT_UPDATE";
10311    pub const TASK_CREATE: &'static str = "TASK_CREATE";
10312    pub const TASK_UPDATE: &'static str = "TASK_UPDATE";
10313    pub const TERMS_OF_SERVICE_ACCEPT: &'static str = "TERMS_OF_SERVICE_ACCEPT";
10314    pub const TERMS_OF_SERVICE_REJECT: &'static str = "TERMS_OF_SERVICE_REJECT";
10315    pub const UNDELETE: &'static str = "UNDELETE";
10316    pub const UNFAVORITE: &'static str = "UNFAVORITE";
10317    pub const UNLOCK: &'static str = "UNLOCK";
10318    pub const UNSHARE: &'static str = "UNSHARE";
10319    pub const UPDATE_COLLABORATION_EXPIRATION: &'static str = "UPDATE_COLLABORATION_EXPIRATION";
10320    pub const UPDATE_SHARE_EXPIRATION: &'static str = "UPDATE_SHARE_EXPIRATION";
10321    pub const UPLOAD: &'static str = "UPLOAD";
10322    pub const USER_AUTHENTICATE_OAUTH2_ACCESS_TOKEN_CREATE: &'static str =
10323        "USER_AUTHENTICATE_OAUTH2_ACCESS_TOKEN_CREATE";
10324    pub const WATERMARK_LABEL_CREATE: &'static str = "WATERMARK_LABEL_CREATE";
10325    pub const WATERMARK_LABEL_DELETE: &'static str = "WATERMARK_LABEL_DELETE";
10326    pub const WORKFLOW_AUTOMATION_CREATE: &'static str = "WORKFLOW_AUTOMATION_CREATE";
10327    pub const WORKFLOW_AUTOMATION_DELETE: &'static str = "WORKFLOW_AUTOMATION_DELETE";
10328    pub const WORKFLOW_AUTOMATION_UPDATE: &'static str = "WORKFLOW_AUTOMATION_UPDATE";
10329}
10330
10331#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10332#[serde(transparent)]
10333pub struct PostRetentionLength(pub serde_json::Value);
10334
10335#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10336pub struct CreateRetentionPolicyRequest {
10337    pub policy_name: String,
10338    #[serde(default, skip_serializing_if = "Option::is_none")]
10339    pub description: Option<String>,
10340    pub policy_type: RetentionPolicyPolicyType,
10341    pub disposition_action: RetentionPolicyDispositionAction,
10342    #[serde(default, skip_serializing_if = "Option::is_none")]
10343    pub retention_length: Option<PostRetentionLength>,
10344    #[serde(default, skip_serializing_if = "Option::is_none")]
10345    pub retention_type: Option<RetentionPolicyRetentionType>,
10346    #[serde(default, skip_serializing_if = "Option::is_none")]
10347    pub can_owner_extend_retention: Option<bool>,
10348    #[serde(default, skip_serializing_if = "Option::is_none")]
10349    pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthRequest>,
10350    #[serde(default, skip_serializing_if = "Option::is_none")]
10351    pub are_owners_notified: Option<bool>,
10352    #[serde(default, skip_serializing_if = "Option::is_none")]
10353    pub custom_notification_recipients: Option<Vec<UserMini>>,
10354}
10355
10356#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10357#[serde(transparent)]
10358pub struct PutIdDispositionAction(pub serde_json::Value);
10359
10360#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10361pub struct UpdateRetentionPolicyRequest {
10362    #[serde(
10363        default,
10364        skip_serializing_if = "Option::is_none",
10365        deserialize_with = "double_option"
10366    )]
10367    pub policy_name: Option<Option<String>>,
10368    #[serde(
10369        default,
10370        skip_serializing_if = "Option::is_none",
10371        deserialize_with = "double_option"
10372    )]
10373    pub description: Option<Option<String>>,
10374    #[serde(default, skip_serializing_if = "Option::is_none")]
10375    pub disposition_action: Option<PutIdDispositionAction>,
10376    #[serde(
10377        default,
10378        skip_serializing_if = "Option::is_none",
10379        deserialize_with = "double_option"
10380    )]
10381    pub retention_type: Option<Option<String>>,
10382    #[serde(default, skip_serializing_if = "Option::is_none")]
10383    pub retention_length: Option<PostRetentionLength>,
10384    #[serde(
10385        default,
10386        skip_serializing_if = "Option::is_none",
10387        deserialize_with = "double_option"
10388    )]
10389    pub status: Option<Option<String>>,
10390    #[serde(
10391        default,
10392        skip_serializing_if = "Option::is_none",
10393        deserialize_with = "double_option"
10394    )]
10395    pub can_owner_extend_retention: Option<Option<bool>>,
10396    #[serde(default, skip_serializing_if = "Option::is_none")]
10397    pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthRequest>,
10398    #[serde(
10399        default,
10400        skip_serializing_if = "Option::is_none",
10401        deserialize_with = "double_option"
10402    )]
10403    pub are_owners_notified: Option<Option<bool>>,
10404    #[serde(
10405        default,
10406        skip_serializing_if = "Option::is_none",
10407        deserialize_with = "double_option"
10408    )]
10409    pub custom_notification_recipients: Option<Option<Vec<UserBase>>>,
10410}
10411
10412#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10413#[serde(transparent)]
10414pub struct AssignToType(pub String);
10415
10416impl AssignToType {
10417    pub const ENTERPRISE: &'static str = "enterprise";
10418    pub const FOLDER: &'static str = "folder";
10419    pub const METADATA_TEMPLATE: &'static str = "metadata_template";
10420}
10421
10422#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10423pub struct CreateRetentionPolicyAssignmentRequestAssignTo {
10424    pub r#type: AssignToType,
10425    #[serde(
10426        default,
10427        skip_serializing_if = "Option::is_none",
10428        deserialize_with = "double_option"
10429    )]
10430    pub id: Option<Option<String>>,
10431}
10432
10433#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10434pub struct PostFilterFields {
10435    #[serde(default, skip_serializing_if = "Option::is_none")]
10436    pub field: Option<String>,
10437    #[serde(default, skip_serializing_if = "Option::is_none")]
10438    pub value: Option<String>,
10439}
10440
10441#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10442pub struct CreateRetentionPolicyAssignmentRequest {
10443    pub policy_id: String,
10444    pub assign_to: CreateRetentionPolicyAssignmentRequestAssignTo,
10445    #[serde(default, skip_serializing_if = "Option::is_none")]
10446    pub filter_fields: Option<Vec<PostFilterFields>>,
10447    #[serde(default, skip_serializing_if = "Option::is_none")]
10448    pub start_date_field: Option<String>,
10449}
10450
10451#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10452pub struct CreateLegalHoldPolicyRequest {
10453    pub policy_name: String,
10454    #[serde(default, skip_serializing_if = "Option::is_none")]
10455    pub description: Option<String>,
10456    #[serde(default, skip_serializing_if = "Option::is_none")]
10457    pub filter_started_at: Option<chrono::DateTime<chrono::Utc>>,
10458    #[serde(default, skip_serializing_if = "Option::is_none")]
10459    pub filter_ended_at: Option<chrono::DateTime<chrono::Utc>>,
10460    #[serde(default, skip_serializing_if = "Option::is_none")]
10461    pub is_ongoing: Option<bool>,
10462}
10463
10464#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10465pub struct UpdateLegalHoldPolicyRequest {
10466    #[serde(default, skip_serializing_if = "Option::is_none")]
10467    pub policy_name: Option<String>,
10468    #[serde(default, skip_serializing_if = "Option::is_none")]
10469    pub description: Option<String>,
10470    #[serde(default, skip_serializing_if = "Option::is_none")]
10471    pub release_notes: Option<String>,
10472}
10473
10474#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10475pub struct CreateLegalHoldPolicyAssignmentRequestAssignTo {
10476    pub r#type: LegalHoldPolicyAssignedItemType,
10477    pub id: String,
10478}
10479
10480#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10481pub struct CreateLegalHoldPolicyAssignmentRequest {
10482    pub policy_id: String,
10483    pub assign_to: CreateLegalHoldPolicyAssignmentRequestAssignTo,
10484}
10485
10486#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10487#[serde(transparent)]
10488pub struct PostChangeStatusStatus(pub String);
10489
10490impl PostChangeStatusStatus {
10491    pub const PENDING: &'static str = "pending";
10492    pub const DISABLED: &'static str = "disabled";
10493}
10494
10495#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10496pub struct CreateChangeStatusRequest {
10497    pub id: String,
10498    pub status: PostChangeStatusStatus,
10499}
10500
10501#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10502pub struct CreateShieldInformationBarrierRequest {
10503    pub enterprise: EnterpriseBase,
10504}
10505
10506#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10507pub struct UpdateShieldInformationBarrierSegmentRequest {
10508    #[serde(default, skip_serializing_if = "Option::is_none")]
10509    pub name: Option<String>,
10510    #[serde(
10511        default,
10512        skip_serializing_if = "Option::is_none",
10513        deserialize_with = "double_option"
10514    )]
10515    pub description: Option<Option<String>>,
10516}
10517
10518#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10519pub struct CreateShieldInformationBarrierSegmentRequest {
10520    pub shield_information_barrier: ShieldInformationBarrierBase,
10521    pub name: String,
10522    #[serde(default, skip_serializing_if = "Option::is_none")]
10523    pub description: Option<String>,
10524}
10525
10526#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10527pub struct CreateShieldInformationBarrierSegmentMemberRequest {
10528    #[serde(default, skip_serializing_if = "Option::is_none")]
10529    pub r#type: Option<ShieldInformationBarrierSegmentMemberType>,
10530    #[serde(default, skip_serializing_if = "Option::is_none")]
10531    pub shield_information_barrier: Option<ShieldInformationBarrierBase>,
10532    pub shield_information_barrier_segment:
10533        ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
10534    pub user: UserBase,
10535}
10536
10537#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10538pub struct CreateShieldInformationBarrierSegmentRestrictionRequest {
10539    pub r#type: ShieldInformationBarrierSegmentRestrictionType,
10540    #[serde(default, skip_serializing_if = "Option::is_none")]
10541    pub shield_information_barrier: Option<ShieldInformationBarrierBase>,
10542    pub shield_information_barrier_segment:
10543        ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
10544    pub restricted_segment: ShieldInformationBarrierSegmentMemberShieldInformationBarrierSegment,
10545}
10546
10547#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10548#[serde(transparent)]
10549pub struct GetTosType(pub String);
10550
10551impl GetTosType {
10552    pub const EXTERNAL: &'static str = "external";
10553    pub const MANAGED: &'static str = "managed";
10554}
10555
10556#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10557pub struct CreateTermsOfServiceRequest {
10558    pub status: TermsOfServiceStatus,
10559    #[serde(default, skip_serializing_if = "Option::is_none")]
10560    pub tos_type: Option<GetTosType>,
10561    pub text: String,
10562}
10563
10564#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10565pub struct UpdateTermsOfServiceRequest {
10566    pub status: TermsOfServiceStatus,
10567    pub text: String,
10568}
10569
10570#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10571pub struct PostTos {
10572    pub r#type: TermsOfServiceType,
10573    pub id: String,
10574}
10575
10576#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10577pub struct CreateTermsOfServiceUserStatusRequest {
10578    pub tos: PostTos,
10579    pub user: CollaboratorVariableVariableValue,
10580    pub is_accepted: bool,
10581}
10582
10583#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10584pub struct UpdateTermsOfServiceUserStatusRequest {
10585    pub is_accepted: bool,
10586}
10587
10588#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10589pub struct CreateCollaborationAllowlistEntryRequest {
10590    pub domain: String,
10591    pub direction: CollaborationAllowlistEntryDirection,
10592}
10593
10594#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10595pub struct CreateCollaborationAllowlistExemptTargetRequest {
10596    pub user: AttributesParent,
10597}
10598
10599#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10600#[serde(transparent)]
10601pub struct GetResolvedForType(pub String);
10602
10603impl GetResolvedForType {
10604    pub const USER: &'static str = "user";
10605    pub const ENTERPRISE: &'static str = "enterprise";
10606}
10607
10608#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10609pub struct PostStoragePolicy {
10610    pub r#type: StoragePolicyType,
10611    pub id: String,
10612}
10613
10614#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10615pub struct PostAssignedTo {
10616    pub r#type: GetResolvedForType,
10617    pub id: String,
10618}
10619
10620#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10621pub struct CreateStoragePolicyAssignmentRequest {
10622    pub storage_policy: PostStoragePolicy,
10623    pub assigned_to: PostAssignedTo,
10624}
10625
10626#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10627pub struct UpdateStoragePolicyAssignmentRequest {
10628    pub storage_policy: PostStoragePolicy,
10629}
10630
10631#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10632#[serde(transparent)]
10633pub struct PostIdStartType(pub String);
10634
10635impl PostIdStartType {
10636    pub const WORKFLOW_PARAMETERS: &'static str = "workflow_parameters";
10637}
10638
10639#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10640pub struct PostIdStartFlow {
10641    #[serde(default, skip_serializing_if = "Option::is_none")]
10642    pub r#type: Option<String>,
10643    #[serde(default, skip_serializing_if = "Option::is_none")]
10644    pub id: Option<String>,
10645}
10646
10647#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10648pub struct StartWorkflowRequest {
10649    #[serde(default, skip_serializing_if = "Option::is_none")]
10650    pub r#type: Option<PostIdStartType>,
10651    pub flow: PostIdStartFlow,
10652    pub files: Vec<PutSkillInvocationIdFile>,
10653    pub folder: MetadataCascadePolicyParent,
10654    #[serde(default, skip_serializing_if = "Option::is_none")]
10655    pub outcomes: Option<Vec<Outcome>>,
10656}
10657
10658#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10659pub struct UpdateSlackRequest {
10660    #[serde(default, skip_serializing_if = "Option::is_none")]
10661    pub box_item: Option<IntegrationMappingBoxItemSlack>,
10662    #[serde(default, skip_serializing_if = "Option::is_none")]
10663    pub options: Option<IntegrationMappingSlackOptions>,
10664}
10665
10666#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10667pub struct UpdateTeamRequest {
10668    #[serde(default, skip_serializing_if = "Option::is_none")]
10669    pub box_item: Option<FolderReference>,
10670}
10671
10672#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
10673#[serde(transparent)]
10674pub struct GetAgentDefaultMode(pub String);
10675
10676impl GetAgentDefaultMode {
10677    pub const ASK: &'static str = "ask";
10678    pub const TEXT_GEN: &'static str = "text_gen";
10679    pub const EXTRACT: &'static str = "extract";
10680    pub const EXTRACT_STRUCTURED: &'static str = "extract_structured";
10681}
10682
10683#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10684pub struct CreateMetadataTaxonomyRequest {
10685    #[serde(default, skip_serializing_if = "Option::is_none")]
10686    pub key: Option<String>,
10687    #[serde(rename = "displayName")]
10688    pub display_name: String,
10689    pub namespace: String,
10690}
10691
10692#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10693pub struct UpdateMetadataTaxonomyRequest {
10694    #[serde(rename = "displayName")]
10695    pub display_name: String,
10696}
10697
10698#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10699pub struct UpdateLevelRequest {
10700    #[serde(rename = "displayName")]
10701    pub display_name: String,
10702    #[serde(default, skip_serializing_if = "Option::is_none")]
10703    pub description: Option<String>,
10704}
10705
10706#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10707pub struct CreateNodesRequest {
10708    #[serde(rename = "displayName")]
10709    pub display_name: String,
10710    pub level: i64,
10711    #[serde(rename = "parentId", default, skip_serializing_if = "Option::is_none")]
10712    pub parent_id: Option<String>,
10713}
10714
10715#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10716pub struct UpdateNodeRequest {
10717    #[serde(
10718        rename = "displayName",
10719        default,
10720        skip_serializing_if = "Option::is_none"
10721    )]
10722    pub display_name: Option<String>,
10723}
10724
10725#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10726pub struct Archive {
10727    pub id: String,
10728    pub r#type: ArchiveType,
10729    pub name: String,
10730    pub size: i64,
10731    #[serde(
10732        default,
10733        skip_serializing_if = "Option::is_none",
10734        deserialize_with = "double_option"
10735    )]
10736    pub description: Option<Option<String>>,
10737    #[serde(default, skip_serializing_if = "Option::is_none")]
10738    pub owned_by: Option<ArchiveOwnedBy>,
10739}
10740
10741#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10742pub struct Archives {
10743    #[serde(default, skip_serializing_if = "Option::is_none")]
10744    pub entries: Option<Vec<Archive>>,
10745    #[serde(default, skip_serializing_if = "Option::is_none")]
10746    pub limit: Option<i64>,
10747    #[serde(
10748        default,
10749        skip_serializing_if = "Option::is_none",
10750        deserialize_with = "double_option"
10751    )]
10752    pub next_marker: Option<Option<String>>,
10753}
10754
10755#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10756pub struct CollaborationPermissions {
10757    #[serde(default, skip_serializing_if = "Option::is_none")]
10758    pub is_co_owner_role_enabled: Option<bool>,
10759    #[serde(default, skip_serializing_if = "Option::is_none")]
10760    pub is_editor_role_enabled: Option<bool>,
10761    #[serde(default, skip_serializing_if = "Option::is_none")]
10762    pub is_previewer_role_enabled: Option<bool>,
10763    #[serde(default, skip_serializing_if = "Option::is_none")]
10764    pub is_previewer_uploader_role_enabled: Option<bool>,
10765    #[serde(default, skip_serializing_if = "Option::is_none")]
10766    pub is_uploader_role_enabled: Option<bool>,
10767    #[serde(default, skip_serializing_if = "Option::is_none")]
10768    pub is_viewer_role_enabled: Option<bool>,
10769    #[serde(default, skip_serializing_if = "Option::is_none")]
10770    pub is_viewer_uploader_role_enabled: Option<bool>,
10771}
10772
10773#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10774pub struct CustomSessionDurationGroupItem {
10775    #[serde(default, skip_serializing_if = "Option::is_none")]
10776    pub id: Option<String>,
10777    #[serde(default, skip_serializing_if = "Option::is_none")]
10778    pub name: Option<String>,
10779}
10780
10781#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10782pub struct DocGenBatchBase {
10783    pub id: String,
10784    pub r#type: DocGenBatchBaseType,
10785}
10786
10787#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10788pub struct DocGenBatchCreateRequest {
10789    pub file: FileReference,
10790    #[serde(default, skip_serializing_if = "Option::is_none")]
10791    pub file_version: Option<FileVersionBase>,
10792    pub input_source: String,
10793    pub destination_folder: DocGenBatchCreateRequestDestinationFolder,
10794    pub output_type: String,
10795    pub document_generation_data: Vec<DocGenDocumentGenerationData>,
10796}
10797
10798#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10799pub struct DocGenDocumentGenerationData {
10800    pub generated_file_name: String,
10801    pub user_input: std::collections::HashMap<String, serde_json::Value>,
10802}
10803
10804#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10805pub struct DocGenJob {
10806    pub id: String,
10807    pub r#type: DocGenJobType,
10808    pub batch: DocGenBatchBase,
10809    pub template_file: FileReference,
10810    pub template_file_version: FileVersionBase,
10811    #[serde(
10812        default,
10813        skip_serializing_if = "Option::is_none",
10814        deserialize_with = "double_option"
10815    )]
10816    pub output_file: Option<Option<FileReference>>,
10817    #[serde(
10818        default,
10819        skip_serializing_if = "Option::is_none",
10820        deserialize_with = "double_option"
10821    )]
10822    pub output_file_version: Option<Option<FileVersionBase>>,
10823    pub status: DocGenJobStatus,
10824    pub output_type: String,
10825    #[serde(
10826        default,
10827        skip_serializing_if = "Option::is_none",
10828        deserialize_with = "double_option"
10829    )]
10830    pub failures: Option<Option<DocGenJobFailures>>,
10831}
10832
10833#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10834pub struct DocGenJobBase {
10835    pub id: String,
10836    pub r#type: DocGenJobType,
10837}
10838
10839#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10840pub struct DocGenJobFull {
10841    pub id: String,
10842    pub r#type: DocGenJobType,
10843    pub batch: DocGenBatchBase,
10844    pub template_file: FileReference,
10845    pub template_file_version: FileVersionBase,
10846    #[serde(
10847        default,
10848        skip_serializing_if = "Option::is_none",
10849        deserialize_with = "double_option"
10850    )]
10851    pub output_file: Option<Option<FileReference>>,
10852    #[serde(
10853        default,
10854        skip_serializing_if = "Option::is_none",
10855        deserialize_with = "double_option"
10856    )]
10857    pub output_file_version: Option<Option<FileVersionBase>>,
10858    pub status: DocGenJobStatus,
10859    pub output_type: String,
10860    #[serde(
10861        default,
10862        skip_serializing_if = "Option::is_none",
10863        deserialize_with = "double_option"
10864    )]
10865    pub failures: Option<Option<DocGenJobFailures>>,
10866    #[serde(default, skip_serializing_if = "Option::is_none")]
10867    pub created_at: Option<String>,
10868    pub created_by: UserBase,
10869    pub enterprise: EnterpriseReference,
10870    pub source: String,
10871}
10872
10873#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10874pub struct DocGenJobs {
10875    #[serde(default, skip_serializing_if = "Option::is_none")]
10876    pub limit: Option<i64>,
10877    #[serde(
10878        default,
10879        skip_serializing_if = "Option::is_none",
10880        deserialize_with = "double_option"
10881    )]
10882    pub next_marker: Option<Option<String>>,
10883    #[serde(
10884        default,
10885        skip_serializing_if = "Option::is_none",
10886        deserialize_with = "double_option"
10887    )]
10888    pub prev_marker: Option<Option<String>>,
10889    #[serde(default, skip_serializing_if = "Option::is_none")]
10890    pub entries: Option<Vec<DocGenJob>>,
10891}
10892
10893#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10894pub struct DocGenJobsFull {
10895    #[serde(default, skip_serializing_if = "Option::is_none")]
10896    pub limit: Option<i64>,
10897    #[serde(
10898        default,
10899        skip_serializing_if = "Option::is_none",
10900        deserialize_with = "double_option"
10901    )]
10902    pub next_marker: Option<Option<String>>,
10903    #[serde(
10904        default,
10905        skip_serializing_if = "Option::is_none",
10906        deserialize_with = "double_option"
10907    )]
10908    pub prev_marker: Option<Option<String>>,
10909    #[serde(default, skip_serializing_if = "Option::is_none")]
10910    pub entries: Option<Vec<DocGenJobFull>>,
10911}
10912
10913#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10914pub struct DocGenTag {
10915    pub tag_content: String,
10916    pub tag_type: DocGenTagTagType,
10917    pub json_paths: Vec<String>,
10918}
10919
10920#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10921pub struct DocGenTags {
10922    #[serde(default, skip_serializing_if = "Option::is_none")]
10923    pub limit: Option<i64>,
10924    #[serde(
10925        default,
10926        skip_serializing_if = "Option::is_none",
10927        deserialize_with = "double_option"
10928    )]
10929    pub next_marker: Option<Option<String>>,
10930    #[serde(
10931        default,
10932        skip_serializing_if = "Option::is_none",
10933        deserialize_with = "double_option"
10934    )]
10935    pub prev_marker: Option<Option<String>>,
10936    #[serde(default, skip_serializing_if = "Option::is_none")]
10937    pub entries: Option<Vec<DocGenTag>>,
10938}
10939
10940#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10941pub struct DocGenTagsProcessingMessage {
10942    pub message: String,
10943}
10944
10945#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10946pub struct DocGenTemplate {
10947    #[serde(default, skip_serializing_if = "Option::is_none")]
10948    pub file: Option<FileReference>,
10949    #[serde(
10950        default,
10951        skip_serializing_if = "Option::is_none",
10952        deserialize_with = "double_option"
10953    )]
10954    pub file_name: Option<Option<String>>,
10955}
10956
10957#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10958pub struct DocGenTemplateBase {
10959    #[serde(default, skip_serializing_if = "Option::is_none")]
10960    pub file: Option<FileReference>,
10961}
10962
10963#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10964pub struct DocGenTemplateCreateRequest {
10965    pub file: FileReference,
10966}
10967
10968#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10969pub struct DocGenTemplates {
10970    #[serde(default, skip_serializing_if = "Option::is_none")]
10971    pub limit: Option<i64>,
10972    #[serde(
10973        default,
10974        skip_serializing_if = "Option::is_none",
10975        deserialize_with = "double_option"
10976    )]
10977    pub next_marker: Option<Option<String>>,
10978    #[serde(
10979        default,
10980        skip_serializing_if = "Option::is_none",
10981        deserialize_with = "double_option"
10982    )]
10983    pub prev_marker: Option<Option<String>>,
10984    #[serde(default, skip_serializing_if = "Option::is_none")]
10985    pub entries: Option<Vec<DocGenTemplate>>,
10986}
10987
10988#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
10989pub struct EnterpriseConfiguration {
10990    #[serde(default, skip_serializing_if = "Option::is_none")]
10991    pub id: Option<String>,
10992    #[serde(default, skip_serializing_if = "Option::is_none")]
10993    pub r#type: Option<EnterpriseConfigurationType>,
10994    #[serde(
10995        default,
10996        skip_serializing_if = "Option::is_none",
10997        deserialize_with = "double_option"
10998    )]
10999    pub security: Option<Option<EnterpriseConfigurationSecurity>>,
11000    #[serde(
11001        default,
11002        skip_serializing_if = "Option::is_none",
11003        deserialize_with = "double_option"
11004    )]
11005    pub content_and_sharing: Option<Option<EnterpriseConfigurationContentAndSharing>>,
11006    #[serde(
11007        default,
11008        skip_serializing_if = "Option::is_none",
11009        deserialize_with = "double_option"
11010    )]
11011    pub user_settings: Option<Option<EnterpriseConfigurationUserSettings>>,
11012    #[serde(
11013        default,
11014        skip_serializing_if = "Option::is_none",
11015        deserialize_with = "double_option"
11016    )]
11017    pub shield: Option<Option<EnterpriseConfigurationShield>>,
11018}
11019
11020#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11021pub struct EnterpriseConfigurationContentAndSharing {
11022    #[serde(default, skip_serializing_if = "Option::is_none")]
11023    pub enterprise_feature_settings: Option<Vec<EnterpriseFeatureSettingsItem>>,
11024    #[serde(default, skip_serializing_if = "Option::is_none")]
11025    pub sharing_item_type: Option<EnterpriseConfigurationItemString>,
11026    #[serde(default, skip_serializing_if = "Option::is_none")]
11027    pub shared_link_company_definition: Option<EnterpriseConfigurationItemString>,
11028    #[serde(default, skip_serializing_if = "Option::is_none")]
11029    pub shared_link_access: Option<EnterpriseConfigurationItemString>,
11030    #[serde(default, skip_serializing_if = "Option::is_none")]
11031    pub shared_link_default_access: Option<EnterpriseConfigurationItemString>,
11032    #[serde(default, skip_serializing_if = "Option::is_none")]
11033    pub shared_link_default_permissions_selected:
11034        Option<EnterpriseConfigurationContentAndSharingSharedLinkDefaultPermissionsSelected>,
11035    #[serde(default, skip_serializing_if = "Option::is_none")]
11036    pub is_open_custom_urls_disabled: Option<EnterpriseConfigurationItemBoolean>,
11037    #[serde(default, skip_serializing_if = "Option::is_none")]
11038    pub is_custom_domain_hidden_in_shared_link: Option<EnterpriseConfigurationItemBoolean>,
11039    #[serde(default, skip_serializing_if = "Option::is_none")]
11040    pub collaboration_permissions:
11041        Option<EnterpriseConfigurationContentAndSharingCollaborationPermissions>,
11042    #[serde(default, skip_serializing_if = "Option::is_none")]
11043    pub default_collaboration_role: Option<EnterpriseConfigurationItemString>,
11044    #[serde(default, skip_serializing_if = "Option::is_none")]
11045    pub is_invite_privilege_restricted: Option<EnterpriseConfigurationItemBoolean>,
11046    #[serde(default, skip_serializing_if = "Option::is_none")]
11047    pub collaboration_restrictions:
11048        Option<EnterpriseConfigurationContentAndSharingCollaborationRestrictions>,
11049    #[serde(default, skip_serializing_if = "Option::is_none")]
11050    pub is_collaborator_invite_links_disabled: Option<EnterpriseConfigurationItemBoolean>,
11051    #[serde(default, skip_serializing_if = "Option::is_none")]
11052    pub is_invite_group_collaborator_disabled: Option<EnterpriseConfigurationItemBoolean>,
11053    #[serde(default, skip_serializing_if = "Option::is_none")]
11054    pub is_ownership_transfer_restricted: Option<EnterpriseConfigurationItemBoolean>,
11055    #[serde(default, skip_serializing_if = "Option::is_none")]
11056    pub external_collaboration_status:
11057        Option<EnterpriseConfigurationContentAndSharingExternalCollaborationStatus>,
11058    #[serde(default, skip_serializing_if = "Option::is_none")]
11059    pub external_collaboration_allowlist_users:
11060        Option<EnterpriseConfigurationContentAndSharingExternalCollaborationAllowlistUsers>,
11061    #[serde(default, skip_serializing_if = "Option::is_none")]
11062    pub is_watermarking_enterprise_feature_enabled: Option<EnterpriseConfigurationItemBoolean>,
11063    #[serde(default, skip_serializing_if = "Option::is_none")]
11064    pub is_root_content_creation_restricted: Option<EnterpriseConfigurationItemBoolean>,
11065    #[serde(default, skip_serializing_if = "Option::is_none")]
11066    pub is_tag_creation_restricted: Option<EnterpriseConfigurationItemBoolean>,
11067    #[serde(default, skip_serializing_if = "Option::is_none")]
11068    pub tag_creation_restriction: Option<EnterpriseConfigurationItemString>,
11069    #[serde(default, skip_serializing_if = "Option::is_none")]
11070    pub is_email_uploads_enabled: Option<EnterpriseConfigurationItemBoolean>,
11071    #[serde(default, skip_serializing_if = "Option::is_none")]
11072    pub is_custom_settings_enabled: Option<EnterpriseConfigurationItemBoolean>,
11073    #[serde(default, skip_serializing_if = "Option::is_none")]
11074    pub is_forms_login_required: Option<EnterpriseConfigurationItemBoolean>,
11075    #[serde(default, skip_serializing_if = "Option::is_none")]
11076    pub is_forms_branding_default_enabled: Option<EnterpriseConfigurationItemBoolean>,
11077    #[serde(default, skip_serializing_if = "Option::is_none")]
11078    pub is_cc_free_trial_active: Option<EnterpriseConfigurationItemBoolean>,
11079    #[serde(default, skip_serializing_if = "Option::is_none")]
11080    pub is_file_request_editors_allowed: Option<EnterpriseConfigurationItemBoolean>,
11081    #[serde(default, skip_serializing_if = "Option::is_none")]
11082    pub is_file_request_branding_default_enabled: Option<EnterpriseConfigurationItemBoolean>,
11083    #[serde(default, skip_serializing_if = "Option::is_none")]
11084    pub is_file_request_login_required: Option<EnterpriseConfigurationItemBoolean>,
11085    #[serde(default, skip_serializing_if = "Option::is_none")]
11086    pub is_shared_links_expiration_enabled: Option<EnterpriseConfigurationItemBoolean>,
11087    #[serde(default, skip_serializing_if = "Option::is_none")]
11088    pub shared_links_expiration_days: Option<EnterpriseConfigurationItemInteger>,
11089    #[serde(default, skip_serializing_if = "Option::is_none")]
11090    pub is_public_shared_links_expiration_enabled: Option<EnterpriseConfigurationItemBoolean>,
11091    #[serde(default, skip_serializing_if = "Option::is_none")]
11092    pub public_shared_links_expiration_days: Option<EnterpriseConfigurationItemInteger>,
11093    #[serde(default, skip_serializing_if = "Option::is_none")]
11094    pub shared_expiration_target: Option<EnterpriseConfigurationItemString>,
11095    #[serde(default, skip_serializing_if = "Option::is_none")]
11096    pub is_shared_links_expiration_notification_enabled: Option<EnterpriseConfigurationItemBoolean>,
11097    #[serde(default, skip_serializing_if = "Option::is_none")]
11098    pub shared_links_expiration_notification_days: Option<EnterpriseConfigurationItemInteger>,
11099    #[serde(default, skip_serializing_if = "Option::is_none")]
11100    pub is_shared_links_expiration_notification_prevented:
11101        Option<EnterpriseConfigurationItemBoolean>,
11102    #[serde(default, skip_serializing_if = "Option::is_none")]
11103    pub is_auto_delete_enabled: Option<EnterpriseConfigurationItemBoolean>,
11104    #[serde(default, skip_serializing_if = "Option::is_none")]
11105    pub auto_delete_days: Option<EnterpriseConfigurationItemInteger>,
11106    #[serde(default, skip_serializing_if = "Option::is_none")]
11107    pub is_auto_delete_expiration_modification_prevented:
11108        Option<EnterpriseConfigurationItemBoolean>,
11109    #[serde(default, skip_serializing_if = "Option::is_none")]
11110    pub auto_delete_target: Option<EnterpriseConfigurationItemString>,
11111    #[serde(default, skip_serializing_if = "Option::is_none")]
11112    pub is_collaboration_expiration_enabled: Option<EnterpriseConfigurationItemBoolean>,
11113    #[serde(default, skip_serializing_if = "Option::is_none")]
11114    pub collaboration_expiration_days: Option<EnterpriseConfigurationItemInteger>,
11115    #[serde(default, skip_serializing_if = "Option::is_none")]
11116    pub is_collaboration_expiration_modification_prevented:
11117        Option<EnterpriseConfigurationItemBoolean>,
11118    #[serde(default, skip_serializing_if = "Option::is_none")]
11119    pub is_collaboration_expiration_notification_enabled:
11120        Option<EnterpriseConfigurationItemBoolean>,
11121    #[serde(default, skip_serializing_if = "Option::is_none")]
11122    pub collaboration_expiration_target: Option<EnterpriseConfigurationItemString>,
11123    #[serde(default, skip_serializing_if = "Option::is_none")]
11124    pub trash_auto_clear_time: Option<EnterpriseConfigurationItemInteger>,
11125    #[serde(default, skip_serializing_if = "Option::is_none")]
11126    pub permanent_deletion_access: Option<EnterpriseConfigurationItemString>,
11127    #[serde(default, skip_serializing_if = "Option::is_none")]
11128    pub permanent_deletion_allowlist_users:
11129        Option<EnterpriseConfigurationContentAndSharingExternalCollaborationAllowlistUsers>,
11130}
11131
11132#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11133pub struct EnterpriseConfigurationItem {
11134    #[serde(default, skip_serializing_if = "Option::is_none")]
11135    pub is_used: Option<bool>,
11136}
11137
11138#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11139pub struct EnterpriseConfigurationItemBoolean {
11140    #[serde(default, skip_serializing_if = "Option::is_none")]
11141    pub is_used: Option<bool>,
11142    #[serde(
11143        default,
11144        skip_serializing_if = "Option::is_none",
11145        deserialize_with = "double_option"
11146    )]
11147    pub value: Option<Option<bool>>,
11148}
11149
11150#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11151pub struct EnterpriseConfigurationItemInteger {
11152    #[serde(default, skip_serializing_if = "Option::is_none")]
11153    pub is_used: Option<bool>,
11154    #[serde(
11155        default,
11156        skip_serializing_if = "Option::is_none",
11157        deserialize_with = "double_option"
11158    )]
11159    pub value: Option<Option<i64>>,
11160}
11161
11162#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11163pub struct EnterpriseConfigurationItemString {
11164    #[serde(default, skip_serializing_if = "Option::is_none")]
11165    pub is_used: Option<bool>,
11166    #[serde(
11167        default,
11168        skip_serializing_if = "Option::is_none",
11169        deserialize_with = "double_option"
11170    )]
11171    pub value: Option<Option<String>>,
11172}
11173
11174#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11175pub struct EnterpriseConfigurationSecurity {
11176    #[serde(default, skip_serializing_if = "Option::is_none")]
11177    pub is_managed_user_signup_enabled: Option<EnterpriseConfigurationItemBoolean>,
11178    #[serde(default, skip_serializing_if = "Option::is_none")]
11179    pub is_managed_user_signup_notification_enabled: Option<EnterpriseConfigurationItemBoolean>,
11180    #[serde(default, skip_serializing_if = "Option::is_none")]
11181    pub is_managed_user_signup_corporate_email_enabled: Option<EnterpriseConfigurationItemBoolean>,
11182    #[serde(default, skip_serializing_if = "Option::is_none")]
11183    pub is_new_user_notification_daily_digest_enabled: Option<EnterpriseConfigurationItemBoolean>,
11184    #[serde(default, skip_serializing_if = "Option::is_none")]
11185    pub is_managed_user_email_change_disabled: Option<EnterpriseConfigurationItemBoolean>,
11186    #[serde(default, skip_serializing_if = "Option::is_none")]
11187    pub is_multi_factor_auth_required: Option<EnterpriseConfigurationItemBoolean>,
11188    #[serde(default, skip_serializing_if = "Option::is_none")]
11189    pub is_weak_password_prevention_enabled: Option<EnterpriseConfigurationItemBoolean>,
11190    #[serde(default, skip_serializing_if = "Option::is_none")]
11191    pub is_password_leak_detection_enabled: Option<EnterpriseConfigurationItemBoolean>,
11192    #[serde(default, skip_serializing_if = "Option::is_none")]
11193    pub last_password_reset_at: Option<EnterpriseConfigurationSecurityLastPasswordResetAt>,
11194    #[serde(default, skip_serializing_if = "Option::is_none")]
11195    pub is_password_request_notification_enabled: Option<EnterpriseConfigurationItemBoolean>,
11196    #[serde(default, skip_serializing_if = "Option::is_none")]
11197    pub is_password_change_notification_enabled: Option<EnterpriseConfigurationItemBoolean>,
11198    #[serde(default, skip_serializing_if = "Option::is_none")]
11199    pub is_strong_password_for_ext_collab_enabled: Option<EnterpriseConfigurationItemBoolean>,
11200    #[serde(default, skip_serializing_if = "Option::is_none")]
11201    pub is_managed_user_migration_disabled: Option<EnterpriseConfigurationItemBoolean>,
11202    #[serde(default, skip_serializing_if = "Option::is_none")]
11203    pub join_link: Option<EnterpriseConfigurationItemString>,
11204    #[serde(default, skip_serializing_if = "Option::is_none")]
11205    pub join_url: Option<EnterpriseConfigurationItemString>,
11206    #[serde(default, skip_serializing_if = "Option::is_none")]
11207    pub failed_login_attempts_to_trigger_admin_notification:
11208        Option<EnterpriseConfigurationItemInteger>,
11209    #[serde(default, skip_serializing_if = "Option::is_none")]
11210    pub password_min_length: Option<EnterpriseConfigurationItemInteger>,
11211    #[serde(default, skip_serializing_if = "Option::is_none")]
11212    pub password_min_uppercase_characters: Option<EnterpriseConfigurationItemInteger>,
11213    #[serde(default, skip_serializing_if = "Option::is_none")]
11214    pub password_min_numeric_characters: Option<EnterpriseConfigurationItemInteger>,
11215    #[serde(default, skip_serializing_if = "Option::is_none")]
11216    pub password_min_special_characters: Option<EnterpriseConfigurationItemInteger>,
11217    #[serde(default, skip_serializing_if = "Option::is_none")]
11218    pub password_reset_frequency: Option<EnterpriseConfigurationItemString>,
11219    #[serde(default, skip_serializing_if = "Option::is_none")]
11220    pub previous_password_reuse_limit: Option<EnterpriseConfigurationItemString>,
11221    #[serde(default, skip_serializing_if = "Option::is_none")]
11222    pub session_duration: Option<EnterpriseConfigurationItemString>,
11223    #[serde(default, skip_serializing_if = "Option::is_none")]
11224    pub external_collab_multi_factor_auth_settings:
11225        Option<EnterpriseConfigurationSecurityExternalCollabMultiFactorAuthSettings>,
11226    #[serde(default, skip_serializing_if = "Option::is_none")]
11227    pub keysafe: Option<EnterpriseConfigurationSecurityKeysafe>,
11228    #[serde(default, skip_serializing_if = "Option::is_none")]
11229    pub is_custom_session_duration_enabled: Option<EnterpriseConfigurationItemBoolean>,
11230    #[serde(default, skip_serializing_if = "Option::is_none")]
11231    pub custom_session_duration_value: Option<EnterpriseConfigurationItemString>,
11232    #[serde(default, skip_serializing_if = "Option::is_none")]
11233    pub custom_session_duration_groups:
11234        Option<EnterpriseConfigurationSecurityCustomSessionDurationGroups>,
11235    #[serde(default, skip_serializing_if = "Option::is_none")]
11236    pub multi_factor_auth_type: Option<EnterpriseConfigurationItemString>,
11237    #[serde(default, skip_serializing_if = "Option::is_none")]
11238    pub enforced_mfa_frequency: Option<EnterpriseConfigurationSecurityEnforcedMfaFrequency>,
11239}
11240
11241#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11242pub struct EnterpriseConfigurationShield {
11243    #[serde(default, skip_serializing_if = "Option::is_none")]
11244    pub shield_rules: Option<Vec<ShieldRuleItem>>,
11245}
11246
11247#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11248pub struct EnterpriseConfigurationUserSettings {
11249    #[serde(default, skip_serializing_if = "Option::is_none")]
11250    pub enterprise_feature_settings: Option<Vec<EnterpriseFeatureSettingsItem>>,
11251    #[serde(default, skip_serializing_if = "Option::is_none")]
11252    pub user_invites_expiration_time_frame: Option<EnterpriseConfigurationItemString>,
11253    #[serde(default, skip_serializing_if = "Option::is_none")]
11254    pub is_username_change_restricted: Option<EnterpriseConfigurationItemBoolean>,
11255    #[serde(default, skip_serializing_if = "Option::is_none")]
11256    pub is_box_sync_restricted_for_new_users: Option<EnterpriseConfigurationItemBoolean>,
11257    #[serde(default, skip_serializing_if = "Option::is_none")]
11258    pub is_view_all_users_enabled_for_new_users: Option<EnterpriseConfigurationItemBoolean>,
11259    #[serde(default, skip_serializing_if = "Option::is_none")]
11260    pub is_device_limit_exemption_enabled_for_new_users: Option<EnterpriseConfigurationItemBoolean>,
11261    #[serde(default, skip_serializing_if = "Option::is_none")]
11262    pub is_external_collaboration_restricted_for_new_users:
11263        Option<EnterpriseConfigurationItemBoolean>,
11264    #[serde(default, skip_serializing_if = "Option::is_none")]
11265    pub is_unlimited_storage_enabled_for_new_users: Option<EnterpriseConfigurationItemBoolean>,
11266    #[serde(default, skip_serializing_if = "Option::is_none")]
11267    pub new_user_default_storage_limit: Option<EnterpriseConfigurationItemInteger>,
11268    #[serde(default, skip_serializing_if = "Option::is_none")]
11269    pub new_user_default_timezone: Option<EnterpriseConfigurationItemString>,
11270    #[serde(default, skip_serializing_if = "Option::is_none")]
11271    pub new_user_default_language: Option<EnterpriseConfigurationItemString>,
11272    #[serde(default, skip_serializing_if = "Option::is_none")]
11273    pub is_enterprise_sso_required: Option<EnterpriseConfigurationItemBoolean>,
11274    #[serde(default, skip_serializing_if = "Option::is_none")]
11275    pub is_enterprise_sso_in_testing: Option<EnterpriseConfigurationItemBoolean>,
11276    #[serde(default, skip_serializing_if = "Option::is_none")]
11277    pub is_sso_auto_add_groups_enabled: Option<EnterpriseConfigurationItemBoolean>,
11278    #[serde(default, skip_serializing_if = "Option::is_none")]
11279    pub is_sso_auto_add_user_to_groups_enabled: Option<EnterpriseConfigurationItemBoolean>,
11280    #[serde(default, skip_serializing_if = "Option::is_none")]
11281    pub is_sso_auto_remove_user_from_groups_enabled: Option<EnterpriseConfigurationItemBoolean>,
11282    #[serde(default, skip_serializing_if = "Option::is_none")]
11283    pub user_tracking_codes: Option<EnterpriseConfigurationUserSettingsUserTrackingCodes>,
11284    #[serde(default, skip_serializing_if = "Option::is_none")]
11285    pub number_of_user_tracking_codes_remaining: Option<EnterpriseConfigurationItemInteger>,
11286    #[serde(default, skip_serializing_if = "Option::is_none")]
11287    pub is_instant_login_restricted: Option<EnterpriseConfigurationItemBoolean>,
11288}
11289
11290#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11291pub struct EnterpriseFeatureSetting {
11292    #[serde(
11293        default,
11294        skip_serializing_if = "Option::is_none",
11295        deserialize_with = "double_option"
11296    )]
11297    pub id: Option<Option<String>>,
11298    #[serde(default, skip_serializing_if = "Option::is_none")]
11299    pub feature: Option<EnterpriseFeatureSettingFeature>,
11300    #[serde(
11301        default,
11302        skip_serializing_if = "Option::is_none",
11303        deserialize_with = "double_option"
11304    )]
11305    pub state: Option<Option<String>>,
11306    #[serde(
11307        default,
11308        skip_serializing_if = "Option::is_none",
11309        deserialize_with = "double_option"
11310    )]
11311    pub can_configure: Option<Option<bool>>,
11312    #[serde(
11313        default,
11314        skip_serializing_if = "Option::is_none",
11315        deserialize_with = "double_option"
11316    )]
11317    pub is_configured: Option<Option<bool>>,
11318    #[serde(
11319        default,
11320        skip_serializing_if = "Option::is_none",
11321        deserialize_with = "double_option"
11322    )]
11323    pub allowlist: Option<Option<Vec<UserOrGroupReference>>>,
11324    #[serde(
11325        default,
11326        skip_serializing_if = "Option::is_none",
11327        deserialize_with = "double_option"
11328    )]
11329    pub denylist: Option<Option<Vec<UserOrGroupReference>>>,
11330}
11331
11332#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11333pub struct EnterpriseFeatureSettingsItem {
11334    #[serde(default, skip_serializing_if = "Option::is_none")]
11335    pub is_used: Option<bool>,
11336    #[serde(default, skip_serializing_if = "Option::is_none")]
11337    pub value: Option<EnterpriseFeatureSetting>,
11338}
11339
11340#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11341pub struct EnterpriseReference {
11342    #[serde(default, skip_serializing_if = "Option::is_none")]
11343    pub id: Option<String>,
11344    #[serde(default, skip_serializing_if = "Option::is_none")]
11345    pub r#type: Option<EnterpriseReferenceType>,
11346}
11347
11348#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11349pub struct ExternalCollabSecuritySettings {
11350    #[serde(default, skip_serializing_if = "Option::is_none")]
11351    pub denylist_domains: Option<Vec<String>>,
11352    #[serde(default, skip_serializing_if = "Option::is_none")]
11353    pub denylist_emails: Option<Vec<String>>,
11354    #[serde(default, skip_serializing_if = "Option::is_none")]
11355    pub allowlist_domains: Option<Vec<String>>,
11356    #[serde(default, skip_serializing_if = "Option::is_none")]
11357    pub allowlist_emails: Option<Vec<String>>,
11358    #[serde(
11359        default,
11360        skip_serializing_if = "Option::is_none",
11361        deserialize_with = "double_option"
11362    )]
11363    pub state: Option<Option<String>>,
11364    #[serde(
11365        default,
11366        skip_serializing_if = "Option::is_none",
11367        deserialize_with = "double_option"
11368    )]
11369    pub scheduled_status: Option<Option<String>>,
11370    #[serde(
11371        default,
11372        skip_serializing_if = "Option::is_none",
11373        deserialize_with = "double_option"
11374    )]
11375    pub scheduled_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
11376    #[serde(
11377        default,
11378        skip_serializing_if = "Option::is_none",
11379        deserialize_with = "double_option"
11380    )]
11381    pub factor_type_settings: Option<Option<String>>,
11382}
11383
11384#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11385pub struct ExternalUserDeletionResult {
11386    pub user_id: String,
11387    pub status: i64,
11388    #[serde(default, skip_serializing_if = "Option::is_none")]
11389    pub detail: Option<String>,
11390}
11391
11392#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11393pub struct ExternalUsersSubmitDeleteJobRequest {
11394    pub external_users: Vec<UserReference>,
11395}
11396
11397#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11398pub struct ExternalUsersSubmitDeleteJobResponse {
11399    pub entries: Vec<ExternalUserDeletionResult>,
11400}
11401
11402#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11403pub struct FileReference {
11404    pub r#type: FileReferenceType,
11405    pub id: String,
11406}
11407
11408#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11409pub struct Hub {
11410    pub id: String,
11411    pub r#type: HubType,
11412    #[serde(default, skip_serializing_if = "Option::is_none")]
11413    pub title: Option<String>,
11414    #[serde(default, skip_serializing_if = "Option::is_none")]
11415    pub description: Option<String>,
11416    #[serde(default, skip_serializing_if = "Option::is_none")]
11417    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11418    #[serde(default, skip_serializing_if = "Option::is_none")]
11419    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11420    #[serde(default, skip_serializing_if = "Option::is_none")]
11421    pub created_by: Option<UserMini>,
11422    #[serde(default, skip_serializing_if = "Option::is_none")]
11423    pub updated_by: Option<UserMini>,
11424    #[serde(default, skip_serializing_if = "Option::is_none")]
11425    pub view_count: Option<i64>,
11426    #[serde(default, skip_serializing_if = "Option::is_none")]
11427    pub is_ai_enabled: Option<bool>,
11428    #[serde(default, skip_serializing_if = "Option::is_none")]
11429    pub is_collaboration_restricted_to_enterprise: Option<bool>,
11430    #[serde(default, skip_serializing_if = "Option::is_none")]
11431    pub can_non_owners_invite: Option<bool>,
11432    #[serde(default, skip_serializing_if = "Option::is_none")]
11433    pub can_shared_link_be_created: Option<bool>,
11434    #[serde(default, skip_serializing_if = "Option::is_none")]
11435    pub can_public_shared_link_be_created: Option<bool>,
11436    #[serde(default, skip_serializing_if = "Option::is_none")]
11437    pub copy_hub_access: Option<HubCopyHubAccess>,
11438}
11439
11440#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11441pub struct HubBase {
11442    pub id: String,
11443    pub r#type: HubType,
11444}
11445
11446#[derive(Clone, Debug, PartialEq)]
11447pub enum HubAccessGrantee {
11448    User(HubCollaborationUser),
11449    Group(GroupMini),
11450    /// An unrecognized discriminator, retained verbatim (open union).
11451    Unknown(serde_json::Value),
11452}
11453
11454impl Default for HubAccessGrantee {
11455    fn default() -> Self {
11456        Self::Unknown(Default::default())
11457    }
11458}
11459
11460impl serde::Serialize for HubAccessGrantee {
11461    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11462        match self {
11463            Self::User(inner) => inner.serialize(serializer),
11464            Self::Group(inner) => inner.serialize(serializer),
11465            Self::Unknown(inner) => inner.serialize(serializer),
11466        }
11467    }
11468}
11469
11470impl<'de> serde::Deserialize<'de> for HubAccessGrantee {
11471    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11472        let value = serde_json::Value::deserialize(deserializer)?;
11473        let tag = value
11474            .get("type")
11475            .and_then(serde_json::Value::as_str)
11476            .map(str::to_owned);
11477        match tag.as_deref() {
11478            Some("user") => Ok(Self::User(
11479                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11480            )),
11481            Some("group") => Ok(Self::Group(
11482                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11483            )),
11484            _ => Ok(Self::Unknown(value)),
11485        }
11486    }
11487}
11488
11489#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11490pub struct HubCalloutBoxTextBlock {
11491    pub id: String,
11492    #[serde(
11493        default,
11494        skip_serializing_if = "Option::is_none",
11495        deserialize_with = "double_option"
11496    )]
11497    pub parent_id: Option<Option<String>>,
11498    pub r#type: HubCalloutBoxTextBlockType,
11499    pub fragment: String,
11500}
11501
11502#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11503pub struct HubCollaboration {
11504    pub id: String,
11505    pub r#type: HubCollaborationType,
11506    #[serde(default, skip_serializing_if = "Option::is_none")]
11507    pub hub: Option<HubBase>,
11508    #[serde(default, skip_serializing_if = "Option::is_none")]
11509    pub accessible_by: Option<HubAccessGrantee>,
11510    #[serde(default, skip_serializing_if = "Option::is_none")]
11511    pub role: Option<String>,
11512    #[serde(default, skip_serializing_if = "Option::is_none")]
11513    pub status: Option<HubCollaborationStatus>,
11514    #[serde(default, skip_serializing_if = "Option::is_none")]
11515    pub acceptance_requirements_status: Option<HubCollaborationAcceptanceRequirementsStatus>,
11516}
11517
11518#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11519pub struct HubCollaborationCreateRequest {
11520    pub hub: HubCollaborationCreateRequestHub,
11521    pub accessible_by: HubCollaborationCreateRequestAccessibleBy,
11522    pub role: String,
11523}
11524
11525#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11526pub struct HubCollaborations {
11527    #[serde(default, skip_serializing_if = "Option::is_none")]
11528    pub entries: Option<Vec<HubCollaboration>>,
11529    #[serde(default, skip_serializing_if = "Option::is_none")]
11530    pub limit: Option<i64>,
11531    #[serde(
11532        default,
11533        skip_serializing_if = "Option::is_none",
11534        deserialize_with = "double_option"
11535    )]
11536    pub next_marker: Option<Option<String>>,
11537}
11538
11539#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11540pub struct HubCollaborationUpdateRequest {
11541    #[serde(default, skip_serializing_if = "Option::is_none")]
11542    pub role: Option<String>,
11543}
11544
11545#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11546pub struct HubCollaborationUser {
11547    pub id: String,
11548    pub r#type: HubCollaborationUserType,
11549    #[serde(default, skip_serializing_if = "Option::is_none")]
11550    pub name: Option<String>,
11551    #[serde(default, skip_serializing_if = "Option::is_none")]
11552    pub login: Option<String>,
11553}
11554
11555#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11556pub struct HubCopyRequest {
11557    #[serde(default, skip_serializing_if = "Option::is_none")]
11558    pub title: Option<String>,
11559    #[serde(default, skip_serializing_if = "Option::is_none")]
11560    pub description: Option<String>,
11561    #[serde(default, skip_serializing_if = "Option::is_none")]
11562    pub include_items: Option<bool>,
11563}
11564
11565#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11566pub struct HubCreateRequest {
11567    pub title: String,
11568    #[serde(default, skip_serializing_if = "Option::is_none")]
11569    pub description: Option<String>,
11570}
11571
11572#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11573pub struct HubDividerBlock {
11574    pub id: String,
11575    #[serde(
11576        default,
11577        skip_serializing_if = "Option::is_none",
11578        deserialize_with = "double_option"
11579    )]
11580    pub parent_id: Option<Option<String>>,
11581    pub r#type: HubDividerBlockType,
11582}
11583
11584#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11585pub struct HubDocumentBlock {
11586    pub id: String,
11587    #[serde(
11588        default,
11589        skip_serializing_if = "Option::is_none",
11590        deserialize_with = "double_option"
11591    )]
11592    pub parent_id: Option<Option<String>>,
11593}
11594
11595#[derive(Clone, Debug, PartialEq)]
11596pub enum HubDocumentBlockEntry {
11597    Paragraph(HubParagraphTextBlock),
11598    SectionTitle(HubSectionTitleTextBlock),
11599    CalloutBox(HubCalloutBoxTextBlock),
11600    ItemList(HubItemListBlock),
11601    Divider(HubDividerBlock),
11602    /// An unrecognized discriminator, retained verbatim (open union).
11603    Unknown(serde_json::Value),
11604}
11605
11606impl Default for HubDocumentBlockEntry {
11607    fn default() -> Self {
11608        Self::Unknown(Default::default())
11609    }
11610}
11611
11612impl serde::Serialize for HubDocumentBlockEntry {
11613    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11614        match self {
11615            Self::Paragraph(inner) => inner.serialize(serializer),
11616            Self::SectionTitle(inner) => inner.serialize(serializer),
11617            Self::CalloutBox(inner) => inner.serialize(serializer),
11618            Self::ItemList(inner) => inner.serialize(serializer),
11619            Self::Divider(inner) => inner.serialize(serializer),
11620            Self::Unknown(inner) => inner.serialize(serializer),
11621        }
11622    }
11623}
11624
11625impl<'de> serde::Deserialize<'de> for HubDocumentBlockEntry {
11626    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11627        let value = serde_json::Value::deserialize(deserializer)?;
11628        let tag = value
11629            .get("type")
11630            .and_then(serde_json::Value::as_str)
11631            .map(str::to_owned);
11632        match tag.as_deref() {
11633            Some("paragraph") => Ok(Self::Paragraph(
11634                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11635            )),
11636            Some("section_title") => Ok(Self::SectionTitle(
11637                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11638            )),
11639            Some("callout_box") => Ok(Self::CalloutBox(
11640                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11641            )),
11642            Some("item_list") => Ok(Self::ItemList(
11643                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11644            )),
11645            Some("divider") => Ok(Self::Divider(
11646                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11647            )),
11648            _ => Ok(Self::Unknown(value)),
11649        }
11650    }
11651}
11652
11653#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11654pub struct HubDocumentBlocks {
11655    pub entries: Vec<HubDocumentBlockEntry>,
11656    pub r#type: HubDocumentBlocksType,
11657    #[serde(default, skip_serializing_if = "Option::is_none")]
11658    pub limit: Option<i64>,
11659    #[serde(
11660        default,
11661        skip_serializing_if = "Option::is_none",
11662        deserialize_with = "double_option"
11663    )]
11664    pub next_marker: Option<Option<String>>,
11665}
11666
11667#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11668pub struct HubDocumentPage {
11669    pub id: String,
11670    pub r#type: String,
11671    #[serde(
11672        default,
11673        skip_serializing_if = "Option::is_none",
11674        deserialize_with = "double_option"
11675    )]
11676    pub parent_id: Option<Option<String>>,
11677    pub title_fragment: String,
11678}
11679
11680#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11681pub struct HubDocumentPages {
11682    pub entries: Vec<HubDocumentPage>,
11683    pub r#type: HubDocumentPagesType,
11684    #[serde(default, skip_serializing_if = "Option::is_none")]
11685    pub limit: Option<i64>,
11686    #[serde(
11687        default,
11688        skip_serializing_if = "Option::is_none",
11689        deserialize_with = "double_option"
11690    )]
11691    pub next_marker: Option<Option<String>>,
11692}
11693
11694#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11695pub struct HubItem {
11696    pub id: String,
11697    pub r#type: HubItemType,
11698    pub name: String,
11699}
11700
11701#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11702pub struct HubItemListBlock {
11703    pub id: String,
11704    #[serde(
11705        default,
11706        skip_serializing_if = "Option::is_none",
11707        deserialize_with = "double_option"
11708    )]
11709    pub parent_id: Option<Option<String>>,
11710    pub r#type: HubItemListBlockType,
11711}
11712
11713#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11714pub struct HubItemOperation {
11715    pub action: HubItemOperationAction,
11716    pub item: HubItemReference,
11717    #[serde(default, skip_serializing_if = "Option::is_none")]
11718    pub parent_id: Option<String>,
11719}
11720
11721#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11722pub struct HubItemOperationResult {
11723    #[serde(default, skip_serializing_if = "Option::is_none")]
11724    pub action: Option<String>,
11725    #[serde(default, skip_serializing_if = "Option::is_none")]
11726    pub item: Option<HubItemReference>,
11727    #[serde(default, skip_serializing_if = "Option::is_none")]
11728    pub parent_id: Option<String>,
11729    #[serde(default, skip_serializing_if = "Option::is_none")]
11730    pub status: Option<i64>,
11731    #[serde(default, skip_serializing_if = "Option::is_none")]
11732    pub error: Option<String>,
11733}
11734
11735#[derive(Clone, Debug, PartialEq)]
11736pub enum HubItemReference {
11737    File(FileReference),
11738    Folder(FolderReference),
11739    WebLink(WeblinkReference),
11740    /// An unrecognized discriminator, retained verbatim (open union).
11741    Unknown(serde_json::Value),
11742}
11743
11744impl Default for HubItemReference {
11745    fn default() -> Self {
11746        Self::Unknown(Default::default())
11747    }
11748}
11749
11750impl serde::Serialize for HubItemReference {
11751    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11752        match self {
11753            Self::File(inner) => inner.serialize(serializer),
11754            Self::Folder(inner) => inner.serialize(serializer),
11755            Self::WebLink(inner) => inner.serialize(serializer),
11756            Self::Unknown(inner) => inner.serialize(serializer),
11757        }
11758    }
11759}
11760
11761impl<'de> serde::Deserialize<'de> for HubItemReference {
11762    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11763        let value = serde_json::Value::deserialize(deserializer)?;
11764        let tag = value
11765            .get("type")
11766            .and_then(serde_json::Value::as_str)
11767            .map(str::to_owned);
11768        match tag.as_deref() {
11769            Some("file") => Ok(Self::File(
11770                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11771            )),
11772            Some("folder") => Ok(Self::Folder(
11773                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11774            )),
11775            Some("web_link") => Ok(Self::WebLink(
11776                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11777            )),
11778            _ => Ok(Self::Unknown(value)),
11779        }
11780    }
11781}
11782
11783#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11784pub struct HubItems {
11785    #[serde(default, skip_serializing_if = "Option::is_none")]
11786    pub entries: Option<Vec<HubItem>>,
11787    #[serde(default, skip_serializing_if = "Option::is_none")]
11788    pub limit: Option<i64>,
11789    #[serde(
11790        default,
11791        skip_serializing_if = "Option::is_none",
11792        deserialize_with = "double_option"
11793    )]
11794    pub next_marker: Option<Option<String>>,
11795}
11796
11797#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11798pub struct HubItemsManageRequest {
11799    #[serde(default, skip_serializing_if = "Option::is_none")]
11800    pub operations: Option<Vec<HubItemOperation>>,
11801}
11802
11803#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11804pub struct HubItemsManageResponse {
11805    pub operations: Vec<HubItemOperationResult>,
11806}
11807
11808#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11809pub struct HubParagraphTextBlock {
11810    pub id: String,
11811    #[serde(
11812        default,
11813        skip_serializing_if = "Option::is_none",
11814        deserialize_with = "double_option"
11815    )]
11816    pub parent_id: Option<Option<String>>,
11817    pub r#type: HubParagraphTextBlockType,
11818    pub fragment: String,
11819}
11820
11821#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11822pub struct Hubs {
11823    #[serde(default, skip_serializing_if = "Option::is_none")]
11824    pub entries: Option<Vec<Hub>>,
11825    #[serde(default, skip_serializing_if = "Option::is_none")]
11826    pub limit: Option<i64>,
11827    #[serde(
11828        default,
11829        skip_serializing_if = "Option::is_none",
11830        deserialize_with = "double_option"
11831    )]
11832    pub next_marker: Option<Option<String>>,
11833}
11834
11835#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11836pub struct HubSectionTitleTextBlock {
11837    pub id: String,
11838    #[serde(
11839        default,
11840        skip_serializing_if = "Option::is_none",
11841        deserialize_with = "double_option"
11842    )]
11843    pub parent_id: Option<Option<String>>,
11844    pub r#type: HubSectionTitleTextBlockType,
11845    pub fragment: String,
11846}
11847
11848#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11849pub struct HubUpdateRequest {
11850    #[serde(default, skip_serializing_if = "Option::is_none")]
11851    pub title: Option<String>,
11852    #[serde(default, skip_serializing_if = "Option::is_none")]
11853    pub description: Option<String>,
11854    #[serde(default, skip_serializing_if = "Option::is_none")]
11855    pub is_ai_enabled: Option<bool>,
11856    #[serde(default, skip_serializing_if = "Option::is_none")]
11857    pub is_collaboration_restricted_to_enterprise: Option<bool>,
11858    #[serde(default, skip_serializing_if = "Option::is_none")]
11859    pub can_non_owners_invite: Option<bool>,
11860    #[serde(default, skip_serializing_if = "Option::is_none")]
11861    pub can_shared_link_be_created: Option<bool>,
11862    #[serde(default, skip_serializing_if = "Option::is_none")]
11863    pub can_public_shared_link_be_created: Option<bool>,
11864    #[serde(default, skip_serializing_if = "Option::is_none")]
11865    pub copy_hub_access: Option<HubCopyHubAccess>,
11866}
11867
11868#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11869pub struct KeysafeSettings {
11870    #[serde(default, skip_serializing_if = "Option::is_none")]
11871    pub keysafe_enabled: Option<bool>,
11872    #[serde(
11873        default,
11874        skip_serializing_if = "Option::is_none",
11875        deserialize_with = "double_option"
11876    )]
11877    pub cloud_provider: Option<Option<String>>,
11878    #[serde(
11879        default,
11880        skip_serializing_if = "Option::is_none",
11881        deserialize_with = "double_option"
11882    )]
11883    pub key_id: Option<Option<String>>,
11884    #[serde(
11885        default,
11886        skip_serializing_if = "Option::is_none",
11887        deserialize_with = "double_option"
11888    )]
11889    pub account_id: Option<Option<String>>,
11890    #[serde(
11891        default,
11892        skip_serializing_if = "Option::is_none",
11893        deserialize_with = "double_option"
11894    )]
11895    pub location_id: Option<Option<String>>,
11896    #[serde(
11897        default,
11898        skip_serializing_if = "Option::is_none",
11899        deserialize_with = "double_option"
11900    )]
11901    pub project_id: Option<Option<String>>,
11902    #[serde(
11903        default,
11904        skip_serializing_if = "Option::is_none",
11905        deserialize_with = "double_option"
11906    )]
11907    pub keyring_id: Option<Option<String>>,
11908}
11909
11910#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11911pub struct ListUser {
11912    #[serde(
11913        default,
11914        skip_serializing_if = "Option::is_none",
11915        deserialize_with = "double_option"
11916    )]
11917    pub id: Option<Option<i64>>,
11918    #[serde(
11919        default,
11920        skip_serializing_if = "Option::is_none",
11921        deserialize_with = "double_option"
11922    )]
11923    pub name: Option<Option<String>>,
11924    #[serde(
11925        default,
11926        skip_serializing_if = "Option::is_none",
11927        deserialize_with = "double_option"
11928    )]
11929    pub email: Option<Option<String>>,
11930}
11931
11932#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11933pub struct ShieldList {
11934    pub id: String,
11935    pub r#type: String,
11936    pub name: String,
11937    pub enterprise: EnterpriseReference,
11938    #[serde(default, skip_serializing_if = "Option::is_none")]
11939    pub description: Option<String>,
11940    pub created_at: chrono::DateTime<chrono::Utc>,
11941    pub updated_at: chrono::DateTime<chrono::Utc>,
11942    pub content: ShieldListContent,
11943}
11944
11945#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
11946pub struct ShieldListMini {
11947    pub id: String,
11948    pub r#type: ShieldListMiniType,
11949    pub name: String,
11950    pub content: ShieldListMiniContent,
11951}
11952
11953#[derive(Clone, Debug, PartialEq)]
11954pub enum ShieldListContent {
11955    Country(ShieldListContentCountry),
11956    Domain(ShieldListContentDomain),
11957    Email(ShieldListContentEmail),
11958    Ip(ShieldListContentIp),
11959    Integration(ShieldListContentIntegration),
11960    /// An unrecognized discriminator, retained verbatim (open union).
11961    Unknown(serde_json::Value),
11962}
11963
11964impl Default for ShieldListContent {
11965    fn default() -> Self {
11966        Self::Unknown(Default::default())
11967    }
11968}
11969
11970impl serde::Serialize for ShieldListContent {
11971    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
11972        match self {
11973            Self::Country(inner) => inner.serialize(serializer),
11974            Self::Domain(inner) => inner.serialize(serializer),
11975            Self::Email(inner) => inner.serialize(serializer),
11976            Self::Ip(inner) => inner.serialize(serializer),
11977            Self::Integration(inner) => inner.serialize(serializer),
11978            Self::Unknown(inner) => inner.serialize(serializer),
11979        }
11980    }
11981}
11982
11983impl<'de> serde::Deserialize<'de> for ShieldListContent {
11984    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
11985        let value = serde_json::Value::deserialize(deserializer)?;
11986        let tag = value
11987            .get("type")
11988            .and_then(serde_json::Value::as_str)
11989            .map(str::to_owned);
11990        match tag.as_deref() {
11991            Some("country") => Ok(Self::Country(
11992                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11993            )),
11994            Some("domain") => Ok(Self::Domain(
11995                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11996            )),
11997            Some("email") => Ok(Self::Email(
11998                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
11999            )),
12000            Some("ip") => Ok(Self::Ip(
12001                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
12002            )),
12003            Some("integration") => Ok(Self::Integration(
12004                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
12005            )),
12006            _ => Ok(Self::Unknown(value)),
12007        }
12008    }
12009}
12010
12011#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12012pub struct ShieldListContentCountry {
12013    pub r#type: ShieldListContentCountryType,
12014    pub country_codes: Vec<String>,
12015}
12016
12017#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12018pub struct ShieldListContentDomain {
12019    pub r#type: ShieldListContentDomainType,
12020    pub domains: Vec<String>,
12021}
12022
12023#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12024pub struct ShieldListContentEmail {
12025    pub r#type: ShieldListContentEmailType,
12026    pub email_addresses: Vec<String>,
12027}
12028
12029#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12030pub struct ShieldListContentIntegration {
12031    pub r#type: ShieldListContentIntegrationType,
12032    pub integrations: Vec<ShieldListContentIntegrationIntegrations>,
12033}
12034
12035#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12036pub struct ShieldListContentIp {
12037    pub r#type: ShieldListContentIpType,
12038    pub ip_addresses: Vec<String>,
12039}
12040
12041#[derive(Clone, Debug, PartialEq)]
12042pub enum ShieldListContentRequest {
12043    Country(ShieldListContentCountry),
12044    Domain(ShieldListContentDomain),
12045    Email(ShieldListContentEmail),
12046    Ip(ShieldListContentIp),
12047    /// An unrecognized discriminator, retained verbatim (open union).
12048    Unknown(serde_json::Value),
12049}
12050
12051impl Default for ShieldListContentRequest {
12052    fn default() -> Self {
12053        Self::Unknown(Default::default())
12054    }
12055}
12056
12057impl serde::Serialize for ShieldListContentRequest {
12058    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
12059        match self {
12060            Self::Country(inner) => inner.serialize(serializer),
12061            Self::Domain(inner) => inner.serialize(serializer),
12062            Self::Email(inner) => inner.serialize(serializer),
12063            Self::Ip(inner) => inner.serialize(serializer),
12064            Self::Unknown(inner) => inner.serialize(serializer),
12065        }
12066    }
12067}
12068
12069impl<'de> serde::Deserialize<'de> for ShieldListContentRequest {
12070    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
12071        let value = serde_json::Value::deserialize(deserializer)?;
12072        let tag = value
12073            .get("type")
12074            .and_then(serde_json::Value::as_str)
12075            .map(str::to_owned);
12076        match tag.as_deref() {
12077            Some("country") => Ok(Self::Country(
12078                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
12079            )),
12080            Some("domain") => Ok(Self::Domain(
12081                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
12082            )),
12083            Some("email") => Ok(Self::Email(
12084                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
12085            )),
12086            Some("ip") => Ok(Self::Ip(
12087                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
12088            )),
12089            _ => Ok(Self::Unknown(value)),
12090        }
12091    }
12092}
12093
12094#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12095pub struct ShieldLists {
12096    #[serde(default, skip_serializing_if = "Option::is_none")]
12097    pub entries: Option<Vec<ShieldListMini>>,
12098}
12099
12100#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12101pub struct ShieldListsCreate {
12102    pub name: String,
12103    #[serde(default, skip_serializing_if = "Option::is_none")]
12104    pub description: Option<String>,
12105    pub content: ShieldListContentRequest,
12106}
12107
12108#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12109pub struct ShieldListsUpdate {
12110    pub name: String,
12111    #[serde(default, skip_serializing_if = "Option::is_none")]
12112    pub description: Option<String>,
12113    pub content: ShieldListContentRequest,
12114}
12115
12116#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12117pub struct ShieldRuleItem {
12118    #[serde(default, skip_serializing_if = "Option::is_none")]
12119    pub id: Option<String>,
12120    #[serde(default, skip_serializing_if = "Option::is_none")]
12121    pub r#type: Option<ShieldRuleItemType>,
12122    #[serde(default, skip_serializing_if = "Option::is_none")]
12123    pub rule_category: Option<String>,
12124    #[serde(default, skip_serializing_if = "Option::is_none")]
12125    pub name: Option<String>,
12126    #[serde(default, skip_serializing_if = "Option::is_none")]
12127    pub description: Option<String>,
12128    #[serde(default, skip_serializing_if = "Option::is_none")]
12129    pub priority: Option<ShieldRuleItemPriority>,
12130    #[serde(default, skip_serializing_if = "Option::is_none")]
12131    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12132    #[serde(default, skip_serializing_if = "Option::is_none")]
12133    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
12134}
12135
12136#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12137pub struct UserOrGroupReference {
12138    #[serde(default, skip_serializing_if = "Option::is_none")]
12139    pub r#type: Option<UserOrGroupReferenceType>,
12140    #[serde(default, skip_serializing_if = "Option::is_none")]
12141    pub id: Option<String>,
12142}
12143
12144#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12145pub struct UserReference {
12146    pub r#type: HubCollaborationUserType,
12147    pub id: String,
12148}
12149
12150#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12151pub struct UserTrackingCode {
12152    #[serde(
12153        default,
12154        skip_serializing_if = "Option::is_none",
12155        deserialize_with = "double_option"
12156    )]
12157    pub id: Option<Option<i64>>,
12158    #[serde(
12159        default,
12160        skip_serializing_if = "Option::is_none",
12161        deserialize_with = "double_option"
12162    )]
12163    pub name: Option<Option<String>>,
12164}
12165
12166#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12167pub struct WeblinkReference {
12168    pub r#type: WeblinkReferenceType,
12169    pub id: String,
12170}
12171
12172#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12173#[serde(transparent)]
12174pub struct ArchiveType(pub String);
12175
12176impl ArchiveType {
12177    pub const ARCHIVE: &'static str = "archive";
12178}
12179
12180#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12181pub struct ArchiveOwnedBy {
12182    pub id: String,
12183    pub r#type: String,
12184}
12185
12186#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12187#[serde(transparent)]
12188pub struct DocGenBatchBaseType(pub String);
12189
12190impl DocGenBatchBaseType {
12191    pub const DOCGEN_BATCH: &'static str = "docgen_batch";
12192}
12193
12194#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12195#[serde(transparent)]
12196pub struct DestinationFolderType(pub String);
12197
12198impl DestinationFolderType {
12199    pub const FOLDER: &'static str = "folder";
12200}
12201
12202#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12203pub struct DocGenBatchCreateRequestDestinationFolder {
12204    pub r#type: DestinationFolderType,
12205    pub id: String,
12206}
12207
12208#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12209#[serde(transparent)]
12210pub struct DocGenJobType(pub String);
12211
12212impl DocGenJobType {
12213    pub const DOCGEN_JOB: &'static str = "docgen_job";
12214}
12215
12216#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12217#[serde(transparent)]
12218pub struct DocGenJobStatus(pub String);
12219
12220impl DocGenJobStatus {
12221    pub const SUBMITTED: &'static str = "submitted";
12222    pub const COMPLETED: &'static str = "completed";
12223    pub const FAILED: &'static str = "failed";
12224    pub const COMPLETED_WITH_ERROR: &'static str = "completed_with_error";
12225    pub const PENDING: &'static str = "pending";
12226}
12227
12228#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12229pub struct DocGenJobFailures {
12230    pub errors: Vec<String>,
12231    pub warnings: Vec<String>,
12232}
12233
12234#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12235#[serde(transparent)]
12236pub struct DocGenTagTagType(pub String);
12237
12238impl DocGenTagTagType {
12239    pub const TEXT: &'static str = "text";
12240    pub const ARITHMETIC: &'static str = "arithmetic";
12241    pub const CONDITIONAL: &'static str = "conditional";
12242    pub const FOR_LOOP: &'static str = "for-loop";
12243    pub const TABLE_LOOP: &'static str = "table-loop";
12244    pub const IMAGE: &'static str = "image";
12245}
12246
12247#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12248#[serde(transparent)]
12249pub struct EnterpriseConfigurationType(pub String);
12250
12251impl EnterpriseConfigurationType {
12252    pub const ENTERPRISE_CONFIGURATION: &'static str = "enterprise_configuration";
12253}
12254
12255#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12256pub struct EnterpriseConfigurationContentAndSharingSharedLinkDefaultPermissionsSelected {
12257    #[serde(default, skip_serializing_if = "Option::is_none")]
12258    pub is_used: Option<bool>,
12259    #[serde(default, skip_serializing_if = "Option::is_none")]
12260    pub value: Option<SharedLinkPermissions>,
12261}
12262
12263#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12264pub struct EnterpriseConfigurationContentAndSharingCollaborationPermissions {
12265    #[serde(default, skip_serializing_if = "Option::is_none")]
12266    pub is_used: Option<bool>,
12267    #[serde(default, skip_serializing_if = "Option::is_none")]
12268    pub value: Option<CollaborationPermissions>,
12269}
12270
12271#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12272pub struct EnterpriseConfigurationContentAndSharingCollaborationRestrictions {
12273    #[serde(default, skip_serializing_if = "Option::is_none")]
12274    pub is_used: Option<bool>,
12275    #[serde(default, skip_serializing_if = "Option::is_none")]
12276    pub value: Option<Vec<String>>,
12277}
12278
12279#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12280pub struct EnterpriseConfigurationContentAndSharingExternalCollaborationStatus {
12281    #[serde(default, skip_serializing_if = "Option::is_none")]
12282    pub is_used: Option<bool>,
12283    #[serde(
12284        default,
12285        skip_serializing_if = "Option::is_none",
12286        deserialize_with = "double_option"
12287    )]
12288    pub value: Option<Option<String>>,
12289}
12290
12291#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12292pub struct EnterpriseConfigurationContentAndSharingExternalCollaborationAllowlistUsers {
12293    #[serde(default, skip_serializing_if = "Option::is_none")]
12294    pub is_used: Option<bool>,
12295    #[serde(default, skip_serializing_if = "Option::is_none")]
12296    pub value: Option<Vec<ListUser>>,
12297}
12298
12299#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12300pub struct EnterpriseConfigurationSecurityLastPasswordResetAt {
12301    #[serde(default, skip_serializing_if = "Option::is_none")]
12302    pub is_used: Option<bool>,
12303    #[serde(
12304        default,
12305        skip_serializing_if = "Option::is_none",
12306        deserialize_with = "double_option"
12307    )]
12308    pub value: Option<Option<chrono::DateTime<chrono::Utc>>>,
12309}
12310
12311#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12312pub struct EnterpriseConfigurationSecurityExternalCollabMultiFactorAuthSettings {
12313    #[serde(default, skip_serializing_if = "Option::is_none")]
12314    pub is_used: Option<bool>,
12315    #[serde(
12316        default,
12317        skip_serializing_if = "Option::is_none",
12318        deserialize_with = "double_option"
12319    )]
12320    pub value: Option<Option<ExternalCollabSecuritySettings>>,
12321}
12322
12323#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12324pub struct EnterpriseConfigurationSecurityKeysafe {
12325    #[serde(default, skip_serializing_if = "Option::is_none")]
12326    pub is_used: Option<bool>,
12327    #[serde(
12328        default,
12329        skip_serializing_if = "Option::is_none",
12330        deserialize_with = "double_option"
12331    )]
12332    pub value: Option<Option<KeysafeSettings>>,
12333}
12334
12335#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12336pub struct EnterpriseConfigurationSecurityCustomSessionDurationGroups {
12337    #[serde(default, skip_serializing_if = "Option::is_none")]
12338    pub is_used: Option<bool>,
12339    #[serde(default, skip_serializing_if = "Option::is_none")]
12340    pub value: Option<Vec<CustomSessionDurationGroupItem>>,
12341}
12342
12343#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12344pub struct EnforcedMfaFrequencyValue {
12345    #[serde(
12346        default,
12347        skip_serializing_if = "Option::is_none",
12348        deserialize_with = "double_option"
12349    )]
12350    pub days: Option<Option<i64>>,
12351    #[serde(
12352        default,
12353        skip_serializing_if = "Option::is_none",
12354        deserialize_with = "double_option"
12355    )]
12356    pub hours: Option<Option<i64>>,
12357}
12358
12359#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12360pub struct EnterpriseConfigurationSecurityEnforcedMfaFrequency {
12361    #[serde(default, skip_serializing_if = "Option::is_none")]
12362    pub is_used: Option<bool>,
12363    #[serde(default, skip_serializing_if = "Option::is_none")]
12364    pub value: Option<EnforcedMfaFrequencyValue>,
12365}
12366
12367#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12368pub struct EnterpriseConfigurationUserSettingsUserTrackingCodes {
12369    #[serde(default, skip_serializing_if = "Option::is_none")]
12370    pub is_used: Option<bool>,
12371    #[serde(default, skip_serializing_if = "Option::is_none")]
12372    pub value: Option<Vec<UserTrackingCode>>,
12373}
12374
12375#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12376pub struct EnterpriseFeatureSettingFeature {
12377    #[serde(
12378        default,
12379        skip_serializing_if = "Option::is_none",
12380        deserialize_with = "double_option"
12381    )]
12382    pub id: Option<Option<String>>,
12383}
12384
12385#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12386#[serde(transparent)]
12387pub struct EnterpriseReferenceType(pub String);
12388
12389impl EnterpriseReferenceType {
12390    pub const ENTERPRISE: &'static str = "enterprise";
12391}
12392
12393#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12394#[serde(transparent)]
12395pub struct FileReferenceType(pub String);
12396
12397impl FileReferenceType {
12398    pub const FILE: &'static str = "file";
12399}
12400
12401#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12402#[serde(transparent)]
12403pub struct FileVersionBaseType(pub String);
12404
12405impl FileVersionBaseType {
12406    pub const FILE_VERSION: &'static str = "file_version";
12407}
12408
12409#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12410#[serde(transparent)]
12411pub struct GroupBaseType(pub String);
12412
12413impl GroupBaseType {
12414    pub const GROUP: &'static str = "group";
12415}
12416
12417#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12418#[serde(transparent)]
12419pub struct GroupMiniGroupType(pub String);
12420
12421impl GroupMiniGroupType {
12422    pub const MANAGED_GROUP: &'static str = "managed_group";
12423    pub const ALL_USERS_GROUP: &'static str = "all_users_group";
12424}
12425
12426#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12427#[serde(transparent)]
12428pub struct HubType(pub String);
12429
12430impl HubType {
12431    pub const HUBS: &'static str = "hubs";
12432}
12433
12434#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12435#[serde(transparent)]
12436pub struct HubCopyHubAccess(pub String);
12437
12438impl HubCopyHubAccess {
12439    pub const ALL: &'static str = "all";
12440    pub const COMPANY: &'static str = "company";
12441    pub const NONE: &'static str = "none";
12442}
12443
12444#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12445#[serde(transparent)]
12446pub struct HubCalloutBoxTextBlockType(pub String);
12447
12448impl HubCalloutBoxTextBlockType {
12449    pub const CALLOUT_BOX: &'static str = "callout_box";
12450}
12451
12452#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12453#[serde(transparent)]
12454pub struct HubCollaborationType(pub String);
12455
12456impl HubCollaborationType {
12457    pub const HUB_COLLABORATION: &'static str = "hub_collaboration";
12458}
12459
12460#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12461#[serde(transparent)]
12462pub struct HubCollaborationStatus(pub String);
12463
12464impl HubCollaborationStatus {
12465    pub const ACCEPTED: &'static str = "accepted";
12466    pub const PENDING: &'static str = "pending";
12467    pub const REJECTED: &'static str = "rejected";
12468}
12469
12470#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12471pub struct HubCollaborationAcceptanceRequirementsStatus {
12472    #[serde(default, skip_serializing_if = "Option::is_none")]
12473    pub terms_of_service_requirement: Option<AcceptanceRequirementsStatusTermsOfServiceRequirement>,
12474    #[serde(default, skip_serializing_if = "Option::is_none")]
12475    pub strong_password_requirement: Option<AcceptanceRequirementsStatusStrongPasswordRequirement>,
12476    #[serde(default, skip_serializing_if = "Option::is_none")]
12477    pub two_factor_authentication_requirement:
12478        Option<AcceptanceRequirementsStatusTwoFactorAuthenticationRequirement>,
12479}
12480
12481#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12482pub struct HubCollaborationCreateRequestHub {
12483    pub r#type: HubType,
12484    pub id: String,
12485}
12486
12487#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12488pub struct HubCollaborationCreateRequestAccessibleBy {
12489    pub r#type: String,
12490    #[serde(default, skip_serializing_if = "Option::is_none")]
12491    pub id: Option<String>,
12492    #[serde(default, skip_serializing_if = "Option::is_none")]
12493    pub login: Option<String>,
12494}
12495
12496#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12497#[serde(transparent)]
12498pub struct HubCollaborationUserType(pub String);
12499
12500impl HubCollaborationUserType {
12501    pub const USER: &'static str = "user";
12502}
12503
12504#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12505#[serde(transparent)]
12506pub struct HubDividerBlockType(pub String);
12507
12508impl HubDividerBlockType {
12509    pub const DIVIDER: &'static str = "divider";
12510}
12511
12512#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12513#[serde(transparent)]
12514pub struct HubDocumentBlocksType(pub String);
12515
12516impl HubDocumentBlocksType {
12517    pub const DOCUMENT_BLOCKS: &'static str = "document_blocks";
12518}
12519
12520#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12521#[serde(transparent)]
12522pub struct HubDocumentPagesType(pub String);
12523
12524impl HubDocumentPagesType {
12525    pub const DOCUMENT_PAGES: &'static str = "document_pages";
12526}
12527
12528#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12529#[serde(transparent)]
12530pub struct HubItemType(pub String);
12531
12532impl HubItemType {
12533    pub const FILE: &'static str = "file";
12534    pub const FOLDER: &'static str = "folder";
12535    pub const WEB_LINK: &'static str = "web_link";
12536}
12537
12538#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12539#[serde(transparent)]
12540pub struct HubItemListBlockType(pub String);
12541
12542impl HubItemListBlockType {
12543    pub const ITEM_LIST: &'static str = "item_list";
12544}
12545
12546#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12547#[serde(transparent)]
12548pub struct HubItemOperationAction(pub String);
12549
12550impl HubItemOperationAction {
12551    pub const ADD: &'static str = "add";
12552    pub const REMOVE: &'static str = "remove";
12553}
12554
12555#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12556#[serde(transparent)]
12557pub struct HubParagraphTextBlockType(pub String);
12558
12559impl HubParagraphTextBlockType {
12560    pub const PARAGRAPH: &'static str = "paragraph";
12561}
12562
12563#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12564#[serde(transparent)]
12565pub struct HubSectionTitleTextBlockType(pub String);
12566
12567impl HubSectionTitleTextBlockType {
12568    pub const SECTION_TITLE: &'static str = "section_title";
12569}
12570
12571#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12572#[serde(transparent)]
12573pub struct ShieldListMiniType(pub String);
12574
12575impl ShieldListMiniType {
12576    pub const SHIELD_LIST: &'static str = "shield_list";
12577}
12578
12579#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12580pub struct ShieldListMiniContent {
12581    #[serde(default, skip_serializing_if = "Option::is_none")]
12582    pub r#type: Option<String>,
12583}
12584
12585#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12586#[serde(transparent)]
12587pub struct ShieldListContentCountryType(pub String);
12588
12589impl ShieldListContentCountryType {
12590    pub const COUNTRY: &'static str = "country";
12591}
12592
12593#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12594#[serde(transparent)]
12595pub struct ShieldListContentDomainType(pub String);
12596
12597impl ShieldListContentDomainType {
12598    pub const DOMAIN: &'static str = "domain";
12599}
12600
12601#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12602#[serde(transparent)]
12603pub struct ShieldListContentEmailType(pub String);
12604
12605impl ShieldListContentEmailType {
12606    pub const EMAIL: &'static str = "email";
12607}
12608
12609#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12610#[serde(transparent)]
12611pub struct ShieldListContentIntegrationType(pub String);
12612
12613impl ShieldListContentIntegrationType {
12614    pub const INTEGRATION: &'static str = "integration";
12615}
12616
12617#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12618pub struct ShieldListContentIntegrationIntegrations {
12619    #[serde(default, skip_serializing_if = "Option::is_none")]
12620    pub id: Option<String>,
12621}
12622
12623#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12624#[serde(transparent)]
12625pub struct ShieldListContentIpType(pub String);
12626
12627impl ShieldListContentIpType {
12628    pub const IP: &'static str = "ip";
12629}
12630
12631#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12632#[serde(transparent)]
12633pub struct ShieldRuleItemType(pub String);
12634
12635impl ShieldRuleItemType {
12636    pub const SHIELD_RULE: &'static str = "shield_rule";
12637}
12638
12639#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12640#[serde(transparent)]
12641pub struct ShieldRuleItemPriority(pub String);
12642
12643impl ShieldRuleItemPriority {
12644    pub const INFORMATIONAL: &'static str = "informational";
12645    pub const LOW: &'static str = "low";
12646    pub const MEDIUM: &'static str = "medium";
12647    pub const HIGH: &'static str = "high";
12648    pub const CRITICAL: &'static str = "critical";
12649}
12650
12651#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12652#[serde(transparent)]
12653pub struct TermsOfServiceBaseType(pub String);
12654
12655impl TermsOfServiceBaseType {
12656    pub const TERMS_OF_SERVICE: &'static str = "terms_of_service";
12657}
12658
12659#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12660#[serde(transparent)]
12661pub struct UserOrGroupReferenceType(pub String);
12662
12663impl UserOrGroupReferenceType {
12664    pub const USER: &'static str = "user";
12665    pub const GROUP: &'static str = "group";
12666}
12667
12668#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12669#[serde(transparent)]
12670pub struct WeblinkReferenceType(pub String);
12671
12672impl WeblinkReferenceType {
12673    pub const WEB_LINK: &'static str = "web_link";
12674}
12675
12676#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12677pub struct CreateArchiveRequest {
12678    pub name: String,
12679    #[serde(default, skip_serializing_if = "Option::is_none")]
12680    pub description: Option<String>,
12681    #[serde(default, skip_serializing_if = "Option::is_none")]
12682    pub storage_policy_id: Option<String>,
12683}
12684
12685#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12686pub struct UpdateArchiveRequest {
12687    #[serde(default, skip_serializing_if = "Option::is_none")]
12688    pub name: Option<String>,
12689    #[serde(default, skip_serializing_if = "Option::is_none")]
12690    pub description: Option<String>,
12691}
12692
12693#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12694pub struct AutomateWorkflowAction {
12695    pub id: String,
12696    pub r#type: AutomateWorkflowActionType,
12697    pub action_type: AutomateWorkflowActionActionType,
12698    #[serde(default, skip_serializing_if = "Option::is_none")]
12699    pub description: Option<String>,
12700    #[serde(default, skip_serializing_if = "Option::is_none")]
12701    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12702    #[serde(default, skip_serializing_if = "Option::is_none")]
12703    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
12704    #[serde(default, skip_serializing_if = "Option::is_none")]
12705    pub created_by: Option<UserMini>,
12706    #[serde(default, skip_serializing_if = "Option::is_none")]
12707    pub updated_by: Option<UserMini>,
12708    pub workflow: AutomateWorkflowReference,
12709}
12710
12711#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12712pub struct AutomateWorkflowReference {
12713    pub id: String,
12714    pub r#type: AutomateWorkflowReferenceType,
12715    #[serde(default, skip_serializing_if = "Option::is_none")]
12716    pub name: Option<String>,
12717}
12718
12719#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12720pub struct AutomateWorkflows {
12721    #[serde(default, skip_serializing_if = "Option::is_none")]
12722    pub entries: Option<Vec<AutomateWorkflowAction>>,
12723    #[serde(default, skip_serializing_if = "Option::is_none")]
12724    pub limit: Option<i64>,
12725    #[serde(
12726        default,
12727        skip_serializing_if = "Option::is_none",
12728        deserialize_with = "double_option"
12729    )]
12730    pub next_marker: Option<Option<String>>,
12731}
12732
12733#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12734pub struct AutomateWorkflowStartRequest {
12735    pub workflow_action_id: String,
12736    pub file_ids: Vec<String>,
12737}
12738
12739#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12740pub struct NotesConvertRequestBody {
12741    pub content: String,
12742    pub content_format: NotesConvertRequestBodyContentFormat,
12743    pub parent: FolderReference,
12744    pub name: String,
12745}
12746
12747#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12748pub struct NotesConvertResponse {
12749    pub r#type: NotesConvertResponseType,
12750    pub id: String,
12751}
12752
12753#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12754pub struct QueryAncestorReference {
12755    pub id: String,
12756    pub r#type: String,
12757}
12758
12759#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12760pub struct QueryInsightEntry {
12761    pub key: Vec<String>,
12762    pub r#type: QueryInsightEntryType,
12763    pub metrics: std::collections::HashMap<String, QueryInsightMetricResult>,
12764}
12765
12766#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12767pub struct QueryInsightMetricResult {
12768    pub r#type: String,
12769    pub values: std::collections::HashMap<String, f64>,
12770}
12771
12772#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12773pub struct QueryInsights {
12774    pub insights: Vec<QueryInsightEntry>,
12775}
12776
12777#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12778pub struct QueryInsightsGroupBy {
12779    pub field: String,
12780    #[serde(default, skip_serializing_if = "Option::is_none")]
12781    pub bucket_limit: Option<i64>,
12782}
12783
12784#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12785pub struct QueryInsightsMetricDefinition {
12786    pub r#type: QueryInsightsMetricDefinitionType,
12787    pub field: String,
12788}
12789
12790#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12791pub struct QueryInsightsRequestBody {
12792    pub query: QueryInsightsRequestBodyQuery,
12793    pub metrics: std::collections::HashMap<String, QueryInsightsMetricDefinition>,
12794}
12795
12796#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12797pub struct QueryOrderBy {
12798    pub field_key: String,
12799    pub direction: QueryOrderByDirection,
12800}
12801
12802#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12803pub struct QueryRequestBody {
12804    pub query: QueryRequestBodyQuery,
12805    #[serde(default, skip_serializing_if = "Option::is_none")]
12806    pub order_by: Option<Vec<QueryOrderBy>>,
12807    #[serde(default, skip_serializing_if = "Option::is_none")]
12808    pub limit: Option<i64>,
12809    #[serde(default, skip_serializing_if = "Option::is_none")]
12810    pub fields: Option<Vec<String>>,
12811    #[serde(default, skip_serializing_if = "Option::is_none")]
12812    pub marker: Option<String>,
12813}
12814
12815#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12816pub struct QueryResultEntry {
12817    pub id: String,
12818    pub r#type: String,
12819    #[serde(flatten)]
12820    pub extra: std::collections::HashMap<String, serde_json::Value>,
12821}
12822
12823#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12824pub struct QueryResults {
12825    pub entries: Vec<QueryResultEntry>,
12826    pub next_marker: Option<String>,
12827    pub limit: i64,
12828}
12829
12830#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12831#[serde(transparent)]
12832pub struct AutomateWorkflowActionType(pub String);
12833
12834impl AutomateWorkflowActionType {
12835    pub const WORKFLOW_ACTION: &'static str = "workflow_action";
12836}
12837
12838#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12839#[serde(transparent)]
12840pub struct AutomateWorkflowActionActionType(pub String);
12841
12842impl AutomateWorkflowActionActionType {
12843    pub const RUN_WORKFLOW: &'static str = "run_workflow";
12844}
12845
12846#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12847#[serde(transparent)]
12848pub struct AutomateWorkflowReferenceType(pub String);
12849
12850impl AutomateWorkflowReferenceType {
12851    pub const WORKFLOW: &'static str = "workflow";
12852}
12853
12854#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12855#[serde(transparent)]
12856pub struct FolderReferenceType(pub String);
12857
12858impl FolderReferenceType {
12859    pub const FOLDER: &'static str = "folder";
12860}
12861
12862#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12863#[serde(transparent)]
12864pub struct NotesConvertRequestBodyContentFormat(pub String);
12865
12866impl NotesConvertRequestBodyContentFormat {
12867    pub const MARKDOWN: &'static str = "markdown";
12868}
12869
12870#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12871#[serde(transparent)]
12872pub struct NotesConvertResponseType(pub String);
12873
12874impl NotesConvertResponseType {
12875    pub const FILE: &'static str = "file";
12876}
12877
12878#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12879#[serde(transparent)]
12880pub struct QueryInsightEntryType(pub String);
12881
12882impl QueryInsightEntryType {
12883    pub const GROUP: &'static str = "group";
12884    pub const OVERALL: &'static str = "overall";
12885    pub const OTHER: &'static str = "other";
12886}
12887
12888#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12889#[serde(transparent)]
12890pub struct QueryInsightsMetricDefinitionType(pub String);
12891
12892impl QueryInsightsMetricDefinitionType {
12893    pub const SUM: &'static str = "sum";
12894    pub const AVG: &'static str = "avg";
12895    pub const MIN: &'static str = "min";
12896    pub const MAX: &'static str = "max";
12897    pub const COUNT: &'static str = "count";
12898}
12899
12900#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12901pub struct QueryInsightsRequestBodyQuery {
12902    pub predicate: String,
12903    #[serde(default, skip_serializing_if = "Option::is_none")]
12904    pub params: Option<std::collections::HashMap<String, serde_json::Value>>,
12905    #[serde(default, skip_serializing_if = "Option::is_none")]
12906    pub ancestors: Option<Vec<QueryAncestorReference>>,
12907    #[serde(default, skip_serializing_if = "Option::is_none")]
12908    pub group_by: Option<Vec<QueryInsightsGroupBy>>,
12909}
12910
12911#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12912#[serde(transparent)]
12913pub struct QueryOrderByDirection(pub String);
12914
12915impl QueryOrderByDirection {
12916    pub const ASC: &'static str = "asc";
12917    pub const DESC: &'static str = "desc";
12918}
12919
12920#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
12921pub struct QueryRequestBodyQuery {
12922    pub predicate: String,
12923    #[serde(default, skip_serializing_if = "Option::is_none")]
12924    pub params: Option<std::collections::HashMap<String, serde_json::Value>>,
12925    #[serde(default, skip_serializing_if = "Option::is_none")]
12926    pub ancestors: Option<Vec<QueryAncestorReference>>,
12927}
12928
12929#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
12930#[serde(transparent)]
12931pub struct UserBaseType(pub String);
12932
12933impl UserBaseType {
12934    pub const USER: &'static str = "user";
12935}