box_open_sdk/models/schemas/
retention_policies.rs1use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct RetentionPolicies {
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub entries: Option<Vec<RetentionPolicy>>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub limit: Option<i64>,
13 #[serde(
14 default,
15 skip_serializing_if = "Option::is_none",
16 deserialize_with = "double_option"
17 )]
18 pub next_marker: Option<Option<String>>,
19}
20
21#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
22pub struct RetentionPolicy {
23 pub id: String,
24 pub r#type: RetentionPolicyType,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub policy_name: Option<String>,
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub retention_length: Option<String>,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub disposition_action: Option<RetentionPolicyDispositionAction>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthResponse>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub description: Option<String>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub policy_type: Option<RetentionPolicyPolicyType>,
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub retention_type: Option<RetentionPolicyRetentionType>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub status: Option<RetentionPolicyStatus>,
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub created_by: Option<UserMini>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
47 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub can_owner_extend_retention: Option<bool>,
49 #[serde(default, skip_serializing_if = "Option::is_none")]
50 pub are_owners_notified: Option<bool>,
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub custom_notification_recipients: Option<Vec<UserMini>>,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub assignment_counts: Option<RetentionPolicyAssignmentCounts>,
55}
56
57#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
58#[serde(transparent)]
59pub struct RetentionPolicyMaxExtensionLengthRequest(pub serde_json::Value);
60
61#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
62#[serde(transparent)]
63pub struct RetentionPolicyPolicyType(pub String);
64
65impl RetentionPolicyPolicyType {
66 pub const FINITE: &'static str = "finite";
67 pub const INDEFINITE: &'static str = "indefinite";
68}
69
70#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
71#[serde(transparent)]
72pub struct RetentionPolicyRetentionType(pub String);
73
74impl RetentionPolicyRetentionType {
75 pub const MODIFIABLE: &'static str = "modifiable";
76 pub const NON_MODIFIABLE: &'static str = "non_modifiable";
77}
78
79#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
80#[serde(transparent)]
81pub struct RetentionPolicyStatus(pub String);
82
83impl RetentionPolicyStatus {
84 pub const ACTIVE: &'static str = "active";
85 pub const RETIRED: &'static str = "retired";
86}
87
88#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
89pub struct RetentionPolicyAssignmentCounts {
90 #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub enterprise: Option<i64>,
92 #[serde(default, skip_serializing_if = "Option::is_none")]
93 pub folder: Option<i64>,
94 #[serde(default, skip_serializing_if = "Option::is_none")]
95 pub metadata_template: Option<i64>,
96}
97
98#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
99#[serde(transparent)]
100pub struct PostRetentionLength(pub serde_json::Value);
101
102#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
103pub struct CreateRetentionPolicyRequest {
104 pub policy_name: String,
105 #[serde(default, skip_serializing_if = "Option::is_none")]
106 pub description: Option<String>,
107 pub policy_type: RetentionPolicyPolicyType,
108 pub disposition_action: RetentionPolicyDispositionAction,
109 #[serde(default, skip_serializing_if = "Option::is_none")]
110 pub retention_length: Option<PostRetentionLength>,
111 #[serde(default, skip_serializing_if = "Option::is_none")]
112 pub retention_type: Option<RetentionPolicyRetentionType>,
113 #[serde(default, skip_serializing_if = "Option::is_none")]
114 pub can_owner_extend_retention: Option<bool>,
115 #[serde(default, skip_serializing_if = "Option::is_none")]
116 pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthRequest>,
117 #[serde(default, skip_serializing_if = "Option::is_none")]
118 pub are_owners_notified: Option<bool>,
119 #[serde(default, skip_serializing_if = "Option::is_none")]
120 pub custom_notification_recipients: Option<Vec<UserMini>>,
121}
122
123#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
124#[serde(transparent)]
125pub struct PutIdDispositionAction(pub serde_json::Value);
126
127#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
128pub struct UpdateRetentionPolicyRequest {
129 #[serde(
130 default,
131 skip_serializing_if = "Option::is_none",
132 deserialize_with = "double_option"
133 )]
134 pub policy_name: Option<Option<String>>,
135 #[serde(
136 default,
137 skip_serializing_if = "Option::is_none",
138 deserialize_with = "double_option"
139 )]
140 pub description: Option<Option<String>>,
141 #[serde(default, skip_serializing_if = "Option::is_none")]
142 pub disposition_action: Option<PutIdDispositionAction>,
143 #[serde(
144 default,
145 skip_serializing_if = "Option::is_none",
146 deserialize_with = "double_option"
147 )]
148 pub retention_type: Option<Option<String>>,
149 #[serde(default, skip_serializing_if = "Option::is_none")]
150 pub retention_length: Option<PostRetentionLength>,
151 #[serde(
152 default,
153 skip_serializing_if = "Option::is_none",
154 deserialize_with = "double_option"
155 )]
156 pub status: Option<Option<String>>,
157 #[serde(
158 default,
159 skip_serializing_if = "Option::is_none",
160 deserialize_with = "double_option"
161 )]
162 pub can_owner_extend_retention: Option<Option<bool>>,
163 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub max_extension_length: Option<RetentionPolicyMaxExtensionLengthRequest>,
165 #[serde(
166 default,
167 skip_serializing_if = "Option::is_none",
168 deserialize_with = "double_option"
169 )]
170 pub are_owners_notified: Option<Option<bool>>,
171 #[serde(
172 default,
173 skip_serializing_if = "Option::is_none",
174 deserialize_with = "double_option"
175 )]
176 pub custom_notification_recipients: Option<Option<Vec<UserBase>>>,
177}