Skip to main content

box_open_sdk/models/schemas/
retention_policies.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
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}