1use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct TrackingCode {
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub r#type: Option<TrackingCodeType>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub name: Option<String>,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub value: Option<String>,
15}
16
17#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
18pub struct UserFull {
19 pub id: String,
20 pub r#type: VariableValueType,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub name: Option<String>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub login: Option<String>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub language: Option<String>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub timezone: Option<String>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub space_amount: Option<i64>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub space_used: Option<i64>,
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub max_upload_size: Option<i64>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub status: Option<UserStatus>,
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub job_title: Option<String>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub phone: Option<String>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub address: Option<String>,
47 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub avatar_url: Option<String>,
49 #[serde(
50 default,
51 skip_serializing_if = "Option::is_none",
52 deserialize_with = "double_option"
53 )]
54 pub notification_email: Option<Option<UserNotificationEmail>>,
55 #[serde(default, skip_serializing_if = "Option::is_none")]
56 pub role: Option<UserFullRole>,
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub tracking_codes: Option<Vec<TrackingCode>>,
59 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub can_see_managed_users: Option<bool>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub is_sync_enabled: Option<bool>,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub is_external_collab_restricted: Option<bool>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub is_exempt_from_device_limits: Option<bool>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub is_exempt_from_login_verification: Option<bool>,
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub is_collaborated_content_available_when_owner_inactive: Option<bool>,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
72 pub enterprise: Option<CollaborationAllowlistEntryEnterprise>,
73 #[serde(default, skip_serializing_if = "Option::is_none")]
74 pub my_tags: Option<Vec<String>>,
75 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub hostname: Option<String>,
77 #[serde(default, skip_serializing_if = "Option::is_none")]
78 pub is_platform_access_only: Option<bool>,
79 #[serde(default, skip_serializing_if = "Option::is_none")]
80 pub external_app_user_id: Option<String>,
81}
82
83#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
84pub struct Users {
85 #[serde(default, skip_serializing_if = "Option::is_none")]
86 pub limit: Option<i64>,
87 #[serde(
88 default,
89 skip_serializing_if = "Option::is_none",
90 deserialize_with = "double_option"
91 )]
92 pub next_marker: Option<Option<String>>,
93 #[serde(
94 default,
95 skip_serializing_if = "Option::is_none",
96 deserialize_with = "double_option"
97 )]
98 pub prev_marker: Option<Option<String>>,
99 #[serde(default, skip_serializing_if = "Option::is_none")]
100 pub total_count: Option<i64>,
101 #[serde(default, skip_serializing_if = "Option::is_none")]
102 pub offset: Option<i64>,
103 #[serde(default, skip_serializing_if = "Option::is_none")]
104 pub order: Option<Vec<CollectionsOrder>>,
105 #[serde(default, skip_serializing_if = "Option::is_none")]
106 pub entries: Option<Vec<UserFull>>,
107}
108
109#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
110#[serde(transparent)]
111pub struct TrackingCodeType(pub String);
112
113impl TrackingCodeType {
114 pub const TRACKING_CODE: &'static str = "tracking_code";
115}
116
117#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
118#[serde(transparent)]
119pub struct UserFullRole(pub String);
120
121impl UserFullRole {
122 pub const ADMIN: &'static str = "admin";
123 pub const COADMIN: &'static str = "coadmin";
124 pub const USER: &'static str = "user";
125}
126
127#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
128#[serde(transparent)]
129pub struct GetUserType(pub String);
130
131impl GetUserType {
132 pub const ALL: &'static str = "all";
133 pub const MANAGED: &'static str = "managed";
134 pub const EXTERNAL: &'static str = "external";
135}
136
137#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
138#[serde(transparent)]
139pub struct PostRole(pub String);
140
141impl PostRole {
142 pub const COADMIN: &'static str = "coadmin";
143 pub const USER: &'static str = "user";
144}
145
146#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
147pub struct CreateUserRequest {
148 pub name: String,
149 #[serde(default, skip_serializing_if = "Option::is_none")]
150 pub login: Option<String>,
151 #[serde(default, skip_serializing_if = "Option::is_none")]
152 pub is_platform_access_only: Option<bool>,
153 #[serde(default, skip_serializing_if = "Option::is_none")]
154 pub role: Option<PostRole>,
155 #[serde(default, skip_serializing_if = "Option::is_none")]
156 pub language: Option<String>,
157 #[serde(default, skip_serializing_if = "Option::is_none")]
158 pub is_sync_enabled: Option<bool>,
159 #[serde(default, skip_serializing_if = "Option::is_none")]
160 pub job_title: Option<String>,
161 #[serde(default, skip_serializing_if = "Option::is_none")]
162 pub phone: Option<String>,
163 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub address: Option<String>,
165 #[serde(default, skip_serializing_if = "Option::is_none")]
166 pub space_amount: Option<i64>,
167 #[serde(default, skip_serializing_if = "Option::is_none")]
168 pub tracking_codes: Option<Vec<TrackingCode>>,
169 #[serde(default, skip_serializing_if = "Option::is_none")]
170 pub can_see_managed_users: Option<bool>,
171 #[serde(default, skip_serializing_if = "Option::is_none")]
172 pub timezone: Option<String>,
173 #[serde(default, skip_serializing_if = "Option::is_none")]
174 pub is_external_collab_restricted: Option<bool>,
175 #[serde(default, skip_serializing_if = "Option::is_none")]
176 pub is_exempt_from_device_limits: Option<bool>,
177 #[serde(default, skip_serializing_if = "Option::is_none")]
178 pub is_exempt_from_login_verification: Option<bool>,
179 #[serde(default, skip_serializing_if = "Option::is_none")]
180 pub status: Option<UserStatus>,
181 #[serde(default, skip_serializing_if = "Option::is_none")]
182 pub external_app_user_id: Option<String>,
183}
184
185#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
186pub struct PutIdNotificationEmail {
187 #[serde(default, skip_serializing_if = "Option::is_none")]
188 pub email: Option<String>,
189}
190
191#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
192pub struct UpdateUserRequest {
193 #[serde(
194 default,
195 skip_serializing_if = "Option::is_none",
196 deserialize_with = "double_option"
197 )]
198 pub enterprise: Option<Option<String>>,
199 #[serde(default, skip_serializing_if = "Option::is_none")]
200 pub notify: Option<bool>,
201 #[serde(default, skip_serializing_if = "Option::is_none")]
202 pub name: Option<String>,
203 #[serde(default, skip_serializing_if = "Option::is_none")]
204 pub login: Option<String>,
205 #[serde(default, skip_serializing_if = "Option::is_none")]
206 pub role: Option<PostRole>,
207 #[serde(default, skip_serializing_if = "Option::is_none")]
208 pub language: Option<String>,
209 #[serde(default, skip_serializing_if = "Option::is_none")]
210 pub is_sync_enabled: Option<bool>,
211 #[serde(default, skip_serializing_if = "Option::is_none")]
212 pub job_title: Option<String>,
213 #[serde(default, skip_serializing_if = "Option::is_none")]
214 pub phone: Option<String>,
215 #[serde(default, skip_serializing_if = "Option::is_none")]
216 pub address: Option<String>,
217 #[serde(default, skip_serializing_if = "Option::is_none")]
218 pub tracking_codes: Option<Vec<TrackingCode>>,
219 #[serde(default, skip_serializing_if = "Option::is_none")]
220 pub can_see_managed_users: Option<bool>,
221 #[serde(default, skip_serializing_if = "Option::is_none")]
222 pub timezone: Option<String>,
223 #[serde(default, skip_serializing_if = "Option::is_none")]
224 pub is_external_collab_restricted: Option<bool>,
225 #[serde(default, skip_serializing_if = "Option::is_none")]
226 pub is_exempt_from_device_limits: Option<bool>,
227 #[serde(default, skip_serializing_if = "Option::is_none")]
228 pub is_exempt_from_login_verification: Option<bool>,
229 #[serde(default, skip_serializing_if = "Option::is_none")]
230 pub is_password_reset_required: Option<bool>,
231 #[serde(default, skip_serializing_if = "Option::is_none")]
232 pub is_collaborated_content_available_when_owner_inactive: Option<bool>,
233 #[serde(default, skip_serializing_if = "Option::is_none")]
234 pub status: Option<UserStatus>,
235 #[serde(default, skip_serializing_if = "Option::is_none")]
236 pub space_amount: Option<i64>,
237 #[serde(
238 default,
239 skip_serializing_if = "Option::is_none",
240 deserialize_with = "double_option"
241 )]
242 pub notification_email: Option<Option<PutIdNotificationEmail>>,
243 #[serde(default, skip_serializing_if = "Option::is_none")]
244 pub external_app_user_id: Option<String>,
245}