box_open_sdk/models/schemas/
retention_policy_assignments.rs1use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct FilesUnderRetention {
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub limit: Option<i64>,
11 #[serde(
12 default,
13 skip_serializing_if = "Option::is_none",
14 deserialize_with = "double_option"
15 )]
16 pub next_marker: Option<Option<String>>,
17 #[serde(
18 default,
19 skip_serializing_if = "Option::is_none",
20 deserialize_with = "double_option"
21 )]
22 pub prev_marker: Option<Option<String>>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub entries: Option<Vec<FileMini>>,
25}
26
27#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
28pub struct RetentionPolicyAssignment {
29 pub id: String,
30 pub r#type: RetentionPolicyAssignmentType,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub retention_policy: Option<RetentionPolicyMini>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub assigned_to: Option<RetentionPolicyAssignmentAssignedTo>,
35 #[serde(
36 default,
37 skip_serializing_if = "Option::is_none",
38 deserialize_with = "double_option"
39 )]
40 pub filter_fields: Option<Option<Vec<RetentionPolicyAssignmentFilterFields>>>,
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub assigned_by: Option<UserMini>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub start_date_field: Option<String>,
47}
48
49#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
50pub struct RetentionPolicyAssignments {
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub entries: Option<Vec<RetentionPolicyAssignment>>,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub limit: Option<i64>,
55 #[serde(
56 default,
57 skip_serializing_if = "Option::is_none",
58 deserialize_with = "double_option"
59 )]
60 pub next_marker: Option<Option<String>>,
61}
62
63#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
64#[serde(transparent)]
65pub struct RetentionPolicyAssignmentType(pub String);
66
67impl RetentionPolicyAssignmentType {
68 pub const RETENTION_POLICY_ASSIGNMENT: &'static str = "retention_policy_assignment";
69}
70
71#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
72#[serde(transparent)]
73pub struct AssignedToType(pub String);
74
75impl AssignedToType {
76 pub const FOLDER: &'static str = "folder";
77 pub const ENTERPRISE: &'static str = "enterprise";
78 pub const METADATA_TEMPLATE: &'static str = "metadata_template";
79}
80
81#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
82pub struct RetentionPolicyAssignmentAssignedTo {
83 #[serde(
84 default,
85 skip_serializing_if = "Option::is_none",
86 deserialize_with = "double_option"
87 )]
88 pub id: Option<Option<String>>,
89 #[serde(default, skip_serializing_if = "Option::is_none")]
90 pub r#type: Option<AssignedToType>,
91}
92
93#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
94pub struct RetentionPolicyAssignmentFilterFields {
95 #[serde(
96 default,
97 skip_serializing_if = "Option::is_none",
98 deserialize_with = "double_option"
99 )]
100 pub field: Option<Option<String>>,
101 #[serde(
102 default,
103 skip_serializing_if = "Option::is_none",
104 deserialize_with = "double_option"
105 )]
106 pub value: Option<Option<String>>,
107}
108
109#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
110#[serde(transparent)]
111pub struct AssignToType(pub String);
112
113impl AssignToType {
114 pub const ENTERPRISE: &'static str = "enterprise";
115 pub const FOLDER: &'static str = "folder";
116 pub const METADATA_TEMPLATE: &'static str = "metadata_template";
117}
118
119#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
120pub struct CreateRetentionPolicyAssignmentRequestAssignTo {
121 pub r#type: AssignToType,
122 #[serde(
123 default,
124 skip_serializing_if = "Option::is_none",
125 deserialize_with = "double_option"
126 )]
127 pub id: Option<Option<String>>,
128}
129
130#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
131pub struct PostFilterFields {
132 #[serde(default, skip_serializing_if = "Option::is_none")]
133 pub field: Option<String>,
134 #[serde(default, skip_serializing_if = "Option::is_none")]
135 pub value: Option<String>,
136}
137
138#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
139pub struct CreateRetentionPolicyAssignmentRequest {
140 pub policy_id: String,
141 pub assign_to: CreateRetentionPolicyAssignmentRequestAssignTo,
142 #[serde(default, skip_serializing_if = "Option::is_none")]
143 pub filter_fields: Option<Vec<PostFilterFields>>,
144 #[serde(default, skip_serializing_if = "Option::is_none")]
145 pub start_date_field: Option<String>,
146}