1use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6pub struct DriveThemes {
7 #[serde(
11 default,
12 skip_serializing_if = "String::is_empty",
13 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
14 rename = "backgroundImageLink"
15 )]
16 pub background_image_link: String,
17 #[serde(
21 default,
22 skip_serializing_if = "String::is_empty",
23 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
24 rename = "colorRgb"
25 )]
26 pub color_rgb: String,
27 #[serde(
31 default,
32 skip_serializing_if = "String::is_empty",
33 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
34 )]
35 pub id: String,
36}
37
38#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
40pub struct StorageQuota {
41 #[serde(
45 default,
46 skip_serializing_if = "crate::utils::zero_i64",
47 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
48 )]
49 pub limit: i64,
50 #[serde(
54 default,
55 skip_serializing_if = "crate::utils::zero_i64",
56 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
57 )]
58 pub usage: i64,
59 #[serde(
63 default,
64 skip_serializing_if = "crate::utils::zero_i64",
65 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
66 rename = "usageInDrive"
67 )]
68 pub usage_in_drive: i64,
69 #[serde(
73 default,
74 skip_serializing_if = "crate::utils::zero_i64",
75 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
76 rename = "usageInDriveTrash"
77 )]
78 pub usage_in_drive_trash: i64,
79}
80
81#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
83pub struct About {
84 #[serde(
88 default,
89 skip_serializing_if = "Option::is_none",
90 rename = "appInstalled"
91 )]
92 pub app_installed: Option<bool>,
93 #[serde(
97 default,
98 skip_serializing_if = "Option::is_none",
99 rename = "canCreateDrives"
100 )]
101 pub can_create_drives: Option<bool>,
102 #[serde(
106 default,
107 skip_serializing_if = "Option::is_none",
108 rename = "canCreateTeamDrives"
109 )]
110 pub can_create_team_drives: Option<bool>,
111 #[serde(
115 default,
116 skip_serializing_if = "Vec::is_empty",
117 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
118 rename = "driveThemes"
119 )]
120 pub drive_themes: Vec<DriveThemes>,
121 #[serde(
125 default,
126 skip_serializing_if = "Vec::is_empty",
127 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
128 rename = "exportFormats"
129 )]
130 pub export_formats: Vec<String>,
131 #[serde(
135 default,
136 skip_serializing_if = "Vec::is_empty",
137 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
138 rename = "folderColorPalette"
139 )]
140 pub folder_color_palette: Vec<String>,
141 #[serde(
145 default,
146 skip_serializing_if = "Vec::is_empty",
147 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
148 rename = "importFormats"
149 )]
150 pub import_formats: Vec<String>,
151 #[serde(
155 default,
156 skip_serializing_if = "String::is_empty",
157 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
158 )]
159 pub kind: String,
160 #[serde(
164 default,
165 skip_serializing_if = "crate::utils::zero_i64",
166 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
167 rename = "maxImportSizes"
168 )]
169 pub max_import_sizes: i64,
170 #[serde(
174 default,
175 skip_serializing_if = "crate::utils::zero_i64",
176 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
177 rename = "maxUploadSize"
178 )]
179 pub max_upload_size: i64,
180 #[serde(
184 default,
185 skip_serializing_if = "Option::is_none",
186 rename = "storageQuota"
187 )]
188 pub storage_quota: Option<StorageQuota>,
189 #[serde(
193 default,
194 skip_serializing_if = "Vec::is_empty",
195 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
196 rename = "teamDriveThemes"
197 )]
198 pub team_drive_themes: Vec<DriveThemes>,
199 #[serde(default, skip_serializing_if = "Option::is_none")]
203 pub user: Option<User>,
204}
205
206#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
208pub struct Change {
209 #[serde(
213 default,
214 skip_serializing_if = "String::is_empty",
215 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
216 rename = "changeType"
217 )]
218 pub change_type: String,
219 #[serde(default, skip_serializing_if = "Option::is_none")]
223 pub drive: Option<Drive>,
224 #[serde(
228 default,
229 skip_serializing_if = "String::is_empty",
230 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
231 rename = "driveId"
232 )]
233 pub drive_id: String,
234 #[serde(default, skip_serializing_if = "Option::is_none")]
238 pub file: Option<File>,
239 #[serde(
243 default,
244 skip_serializing_if = "String::is_empty",
245 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
246 rename = "fileId"
247 )]
248 pub file_id: String,
249 #[serde(
253 default,
254 skip_serializing_if = "String::is_empty",
255 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
256 )]
257 pub kind: String,
258 #[serde(default, skip_serializing_if = "Option::is_none")]
262 pub removed: Option<bool>,
263 #[serde(default, skip_serializing_if = "Option::is_none", rename = "teamDrive")]
267 pub team_drive: Option<TeamDrive>,
268 #[serde(
272 default,
273 skip_serializing_if = "String::is_empty",
274 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
275 rename = "teamDriveId"
276 )]
277 pub team_drive_id: String,
278 #[serde(
282 default,
283 skip_serializing_if = "Option::is_none",
284 deserialize_with = "crate::utils::date_time_format::deserialize"
285 )]
286 pub time: Option<chrono::DateTime<chrono::Utc>>,
287 #[serde(
291 default,
292 skip_serializing_if = "String::is_empty",
293 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
294 rename = "type"
295 )]
296 pub type_: String,
297}
298
299#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
301pub struct ChangeList {
302 #[serde(
306 default,
307 skip_serializing_if = "Vec::is_empty",
308 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
309 )]
310 pub changes: Vec<Change>,
311 #[serde(
315 default,
316 skip_serializing_if = "String::is_empty",
317 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
318 )]
319 pub kind: String,
320 #[serde(
324 default,
325 skip_serializing_if = "String::is_empty",
326 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
327 rename = "newStartPageToken"
328 )]
329 pub new_start_page_token: String,
330 #[serde(
334 default,
335 skip_serializing_if = "String::is_empty",
336 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
337 rename = "nextPageToken"
338 )]
339 pub next_page_token: String,
340}
341
342#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
344pub struct Channel {
345 #[serde(
349 default,
350 skip_serializing_if = "String::is_empty",
351 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
352 )]
353 pub address: String,
354 #[serde(
358 default,
359 skip_serializing_if = "crate::utils::zero_i64",
360 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
361 )]
362 pub expiration: i64,
363 #[serde(
367 default,
368 skip_serializing_if = "String::is_empty",
369 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
370 )]
371 pub id: String,
372 #[serde(
376 default,
377 skip_serializing_if = "String::is_empty",
378 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
379 )]
380 pub kind: String,
381 #[serde(
385 default,
386 skip_serializing_if = "String::is_empty",
387 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
388 )]
389 pub params: String,
390 #[serde(default, skip_serializing_if = "Option::is_none")]
394 pub payload: Option<bool>,
395 #[serde(
399 default,
400 skip_serializing_if = "String::is_empty",
401 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
402 rename = "resourceId"
403 )]
404 pub resource_id: String,
405 #[serde(
409 default,
410 skip_serializing_if = "String::is_empty",
411 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
412 rename = "resourceUri"
413 )]
414 pub resource_uri: String,
415 #[serde(
419 default,
420 skip_serializing_if = "String::is_empty",
421 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
422 )]
423 pub token: String,
424 #[serde(
428 default,
429 skip_serializing_if = "String::is_empty",
430 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
431 rename = "type"
432 )]
433 pub type_: String,
434}
435
436#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
438pub struct QuotedFileContent {
439 #[serde(
443 default,
444 skip_serializing_if = "String::is_empty",
445 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
446 rename = "mimeType"
447 )]
448 pub mime_type: String,
449 #[serde(
453 default,
454 skip_serializing_if = "String::is_empty",
455 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
456 )]
457 pub value: String,
458}
459
460#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
462pub struct Comment {
463 #[serde(
467 default,
468 skip_serializing_if = "String::is_empty",
469 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
470 )]
471 pub anchor: String,
472 #[serde(default, skip_serializing_if = "Option::is_none")]
476 pub author: Option<User>,
477 #[serde(
481 default,
482 skip_serializing_if = "String::is_empty",
483 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
484 )]
485 pub content: String,
486 #[serde(
490 default,
491 skip_serializing_if = "Option::is_none",
492 deserialize_with = "crate::utils::date_time_format::deserialize",
493 rename = "createdTime"
494 )]
495 pub created_time: Option<chrono::DateTime<chrono::Utc>>,
496 #[serde(default, skip_serializing_if = "Option::is_none")]
500 pub deleted: Option<bool>,
501 #[serde(
505 default,
506 skip_serializing_if = "String::is_empty",
507 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
508 rename = "htmlContent"
509 )]
510 pub html_content: String,
511 #[serde(
515 default,
516 skip_serializing_if = "String::is_empty",
517 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
518 )]
519 pub id: String,
520 #[serde(
524 default,
525 skip_serializing_if = "String::is_empty",
526 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
527 )]
528 pub kind: String,
529 #[serde(
533 default,
534 skip_serializing_if = "Option::is_none",
535 deserialize_with = "crate::utils::date_time_format::deserialize",
536 rename = "modifiedTime"
537 )]
538 pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
539 #[serde(
543 default,
544 skip_serializing_if = "Option::is_none",
545 rename = "quotedFileContent"
546 )]
547 pub quoted_file_content: Option<QuotedFileContent>,
548 #[serde(
552 default,
553 skip_serializing_if = "Vec::is_empty",
554 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
555 )]
556 pub replies: Vec<Reply>,
557 #[serde(default, skip_serializing_if = "Option::is_none")]
561 pub resolved: Option<bool>,
562}
563
564#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
566pub struct CommentList {
567 #[serde(
571 default,
572 skip_serializing_if = "Vec::is_empty",
573 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
574 )]
575 pub comments: Vec<Comment>,
576 #[serde(
580 default,
581 skip_serializing_if = "String::is_empty",
582 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
583 )]
584 pub kind: String,
585 #[serde(
589 default,
590 skip_serializing_if = "String::is_empty",
591 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
592 rename = "nextPageToken"
593 )]
594 pub next_page_token: String,
595}
596
597#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
599pub struct ContentRestriction {
600 #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")]
604 pub read_only: Option<bool>,
605 #[serde(
609 default,
610 skip_serializing_if = "String::is_empty",
611 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
612 )]
613 pub reason: String,
614 #[serde(
618 default,
619 skip_serializing_if = "Option::is_none",
620 rename = "restrictingUser"
621 )]
622 pub restricting_user: Option<User>,
623 #[serde(
627 default,
628 skip_serializing_if = "Option::is_none",
629 deserialize_with = "crate::utils::date_time_format::deserialize",
630 rename = "restrictionTime"
631 )]
632 pub restriction_time: Option<chrono::DateTime<chrono::Utc>>,
633 #[serde(
637 default,
638 skip_serializing_if = "String::is_empty",
639 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
640 rename = "type"
641 )]
642 pub type_: String,
643}
644
645#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
647pub struct BackgroundImageFile {
648 #[serde(
652 default,
653 skip_serializing_if = "String::is_empty",
654 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
655 )]
656 pub id: String,
657 #[serde(
661 default,
662 skip_serializing_if = "crate::utils::zero_f64",
663 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
664 )]
665 pub width: f64,
666 #[serde(
670 default,
671 skip_serializing_if = "crate::utils::zero_f64",
672 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
673 rename = "xCoordinate"
674 )]
675 pub x_coordinate: f64,
676 #[serde(
680 default,
681 skip_serializing_if = "crate::utils::zero_f64",
682 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
683 rename = "yCoordinate"
684 )]
685 pub y_coordinate: f64,
686}
687
688#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
690pub struct Capabilities {
691 #[serde(
695 default,
696 skip_serializing_if = "Option::is_none",
697 rename = "canAddChildren"
698 )]
699 pub can_add_children: Option<bool>,
700 #[serde(
704 default,
705 skip_serializing_if = "Option::is_none",
706 rename = "canChangeCopyRequiresWriterPermissionRestriction"
707 )]
708 pub can_change_copy_requires_writer_permission_restriction: Option<bool>,
709 #[serde(
713 default,
714 skip_serializing_if = "Option::is_none",
715 rename = "canChangeDomainUsersOnlyRestriction"
716 )]
717 pub can_change_domain_users_only_restriction: Option<bool>,
718 #[serde(
722 default,
723 skip_serializing_if = "Option::is_none",
724 rename = "canChangeDriveBackground"
725 )]
726 pub can_change_drive_background: Option<bool>,
727 #[serde(
731 default,
732 skip_serializing_if = "Option::is_none",
733 rename = "canChangeDriveMembersOnlyRestriction"
734 )]
735 pub can_change_drive_members_only_restriction: Option<bool>,
736 #[serde(
740 default,
741 skip_serializing_if = "Option::is_none",
742 rename = "canComment"
743 )]
744 pub can_comment: Option<bool>,
745 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
749 pub can_copy: Option<bool>,
750 #[serde(
754 default,
755 skip_serializing_if = "Option::is_none",
756 rename = "canDeleteChildren"
757 )]
758 pub can_delete_children: Option<bool>,
759 #[serde(
763 default,
764 skip_serializing_if = "Option::is_none",
765 rename = "canDeleteDrive"
766 )]
767 pub can_delete_drive: Option<bool>,
768 #[serde(
772 default,
773 skip_serializing_if = "Option::is_none",
774 rename = "canDownload"
775 )]
776 pub can_download: Option<bool>,
777 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
781 pub can_edit: Option<bool>,
782 #[serde(
786 default,
787 skip_serializing_if = "Option::is_none",
788 rename = "canListChildren"
789 )]
790 pub can_list_children: Option<bool>,
791 #[serde(
795 default,
796 skip_serializing_if = "Option::is_none",
797 rename = "canManageMembers"
798 )]
799 pub can_manage_members: Option<bool>,
800 #[serde(
804 default,
805 skip_serializing_if = "Option::is_none",
806 rename = "canReadRevisions"
807 )]
808 pub can_read_revisions: Option<bool>,
809 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
813 pub can_rename: Option<bool>,
814 #[serde(
818 default,
819 skip_serializing_if = "Option::is_none",
820 rename = "canRenameDrive"
821 )]
822 pub can_rename_drive: Option<bool>,
823 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
827 pub can_share: Option<bool>,
828 #[serde(
832 default,
833 skip_serializing_if = "Option::is_none",
834 rename = "canTrashChildren"
835 )]
836 pub can_trash_children: Option<bool>,
837}
838
839#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
841pub struct Restrictions {
842 #[serde(
846 default,
847 skip_serializing_if = "Option::is_none",
848 rename = "adminManagedRestrictions"
849 )]
850 pub admin_managed_restrictions: Option<bool>,
851 #[serde(
855 default,
856 skip_serializing_if = "Option::is_none",
857 rename = "copyRequiresWriterPermission"
858 )]
859 pub copy_requires_writer_permission: Option<bool>,
860 #[serde(
864 default,
865 skip_serializing_if = "Option::is_none",
866 rename = "domainUsersOnly"
867 )]
868 pub domain_users_only: Option<bool>,
869 #[serde(
873 default,
874 skip_serializing_if = "Option::is_none",
875 rename = "driveMembersOnly"
876 )]
877 pub drive_members_only: Option<bool>,
878}
879
880#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
882pub struct Drive {
883 #[serde(
887 default,
888 skip_serializing_if = "Option::is_none",
889 rename = "backgroundImageFile"
890 )]
891 pub background_image_file: Option<BackgroundImageFile>,
892 #[serde(
896 default,
897 skip_serializing_if = "String::is_empty",
898 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
899 rename = "backgroundImageLink"
900 )]
901 pub background_image_link: String,
902 #[serde(default, skip_serializing_if = "Option::is_none")]
906 pub capabilities: Option<Capabilities>,
907 #[serde(
911 default,
912 skip_serializing_if = "String::is_empty",
913 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
914 rename = "colorRgb"
915 )]
916 pub color_rgb: String,
917 #[serde(
921 default,
922 skip_serializing_if = "Option::is_none",
923 deserialize_with = "crate::utils::date_time_format::deserialize",
924 rename = "createdTime"
925 )]
926 pub created_time: Option<chrono::DateTime<chrono::Utc>>,
927 #[serde(default, skip_serializing_if = "Option::is_none")]
931 pub hidden: Option<bool>,
932 #[serde(
936 default,
937 skip_serializing_if = "String::is_empty",
938 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
939 )]
940 pub id: String,
941 #[serde(
945 default,
946 skip_serializing_if = "String::is_empty",
947 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
948 )]
949 pub kind: String,
950 #[serde(
954 default,
955 skip_serializing_if = "String::is_empty",
956 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
957 )]
958 pub name: String,
959 #[serde(default, skip_serializing_if = "Option::is_none")]
963 pub restrictions: Option<Restrictions>,
964 #[serde(
968 default,
969 skip_serializing_if = "String::is_empty",
970 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
971 rename = "themeId"
972 )]
973 pub theme_id: String,
974}
975
976#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
978pub struct DriveList {
979 #[serde(
983 default,
984 skip_serializing_if = "Vec::is_empty",
985 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
986 )]
987 pub drives: Vec<Drive>,
988 #[serde(
992 default,
993 skip_serializing_if = "String::is_empty",
994 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
995 )]
996 pub kind: String,
997 #[serde(
1001 default,
1002 skip_serializing_if = "String::is_empty",
1003 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1004 rename = "nextPageToken"
1005 )]
1006 pub next_page_token: String,
1007}
1008
1009#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1011pub struct FileCapabilities {
1012 #[serde(
1016 default,
1017 skip_serializing_if = "Option::is_none",
1018 rename = "canAddChildren"
1019 )]
1020 pub can_add_children: Option<bool>,
1021 #[serde(
1025 default,
1026 skip_serializing_if = "Option::is_none",
1027 rename = "canAddFolderFromAnotherDrive"
1028 )]
1029 pub can_add_folder_from_another_drive: Option<bool>,
1030 #[serde(
1034 default,
1035 skip_serializing_if = "Option::is_none",
1036 rename = "canAddMyDriveParent"
1037 )]
1038 pub can_add_my_drive_parent: Option<bool>,
1039 #[serde(
1043 default,
1044 skip_serializing_if = "Option::is_none",
1045 rename = "canChangeCopyRequiresWriterPermission"
1046 )]
1047 pub can_change_copy_requires_writer_permission: Option<bool>,
1048 #[serde(
1052 default,
1053 skip_serializing_if = "Option::is_none",
1054 rename = "canChangeSecurityUpdateEnabled"
1055 )]
1056 pub can_change_security_update_enabled: Option<bool>,
1057 #[serde(
1061 default,
1062 skip_serializing_if = "Option::is_none",
1063 rename = "canChangeViewersCanCopyContent"
1064 )]
1065 pub can_change_viewers_can_copy_content: Option<bool>,
1066 #[serde(
1070 default,
1071 skip_serializing_if = "Option::is_none",
1072 rename = "canComment"
1073 )]
1074 pub can_comment: Option<bool>,
1075 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
1079 pub can_copy: Option<bool>,
1080 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canDelete")]
1084 pub can_delete: Option<bool>,
1085 #[serde(
1089 default,
1090 skip_serializing_if = "Option::is_none",
1091 rename = "canDeleteChildren"
1092 )]
1093 pub can_delete_children: Option<bool>,
1094 #[serde(
1098 default,
1099 skip_serializing_if = "Option::is_none",
1100 rename = "canDownload"
1101 )]
1102 pub can_download: Option<bool>,
1103 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
1107 pub can_edit: Option<bool>,
1108 #[serde(
1112 default,
1113 skip_serializing_if = "Option::is_none",
1114 rename = "canListChildren"
1115 )]
1116 pub can_list_children: Option<bool>,
1117 #[serde(
1121 default,
1122 skip_serializing_if = "Option::is_none",
1123 rename = "canModifyContent"
1124 )]
1125 pub can_modify_content: Option<bool>,
1126 #[serde(
1130 default,
1131 skip_serializing_if = "Option::is_none",
1132 rename = "canModifyContentRestriction"
1133 )]
1134 pub can_modify_content_restriction: Option<bool>,
1135 #[serde(
1139 default,
1140 skip_serializing_if = "Option::is_none",
1141 rename = "canMoveChildrenOutOfDrive"
1142 )]
1143 pub can_move_children_out_of_drive: Option<bool>,
1144 #[serde(
1148 default,
1149 skip_serializing_if = "Option::is_none",
1150 rename = "canMoveChildrenOutOfTeamDrive"
1151 )]
1152 pub can_move_children_out_of_team_drive: Option<bool>,
1153 #[serde(
1157 default,
1158 skip_serializing_if = "Option::is_none",
1159 rename = "canMoveChildrenWithinDrive"
1160 )]
1161 pub can_move_children_within_drive: Option<bool>,
1162 #[serde(
1166 default,
1167 skip_serializing_if = "Option::is_none",
1168 rename = "canMoveChildrenWithinTeamDrive"
1169 )]
1170 pub can_move_children_within_team_drive: Option<bool>,
1171 #[serde(
1175 default,
1176 skip_serializing_if = "Option::is_none",
1177 rename = "canMoveItemIntoTeamDrive"
1178 )]
1179 pub can_move_item_into_team_drive: Option<bool>,
1180 #[serde(
1184 default,
1185 skip_serializing_if = "Option::is_none",
1186 rename = "canMoveItemOutOfDrive"
1187 )]
1188 pub can_move_item_out_of_drive: Option<bool>,
1189 #[serde(
1193 default,
1194 skip_serializing_if = "Option::is_none",
1195 rename = "canMoveItemOutOfTeamDrive"
1196 )]
1197 pub can_move_item_out_of_team_drive: Option<bool>,
1198 #[serde(
1202 default,
1203 skip_serializing_if = "Option::is_none",
1204 rename = "canMoveItemWithinDrive"
1205 )]
1206 pub can_move_item_within_drive: Option<bool>,
1207 #[serde(
1211 default,
1212 skip_serializing_if = "Option::is_none",
1213 rename = "canMoveItemWithinTeamDrive"
1214 )]
1215 pub can_move_item_within_team_drive: Option<bool>,
1216 #[serde(
1220 default,
1221 skip_serializing_if = "Option::is_none",
1222 rename = "canMoveTeamDriveItem"
1223 )]
1224 pub can_move_team_drive_item: Option<bool>,
1225 #[serde(
1229 default,
1230 skip_serializing_if = "Option::is_none",
1231 rename = "canReadDrive"
1232 )]
1233 pub can_read_drive: Option<bool>,
1234 #[serde(
1238 default,
1239 skip_serializing_if = "Option::is_none",
1240 rename = "canReadRevisions"
1241 )]
1242 pub can_read_revisions: Option<bool>,
1243 #[serde(
1247 default,
1248 skip_serializing_if = "Option::is_none",
1249 rename = "canReadTeamDrive"
1250 )]
1251 pub can_read_team_drive: Option<bool>,
1252 #[serde(
1256 default,
1257 skip_serializing_if = "Option::is_none",
1258 rename = "canRemoveChildren"
1259 )]
1260 pub can_remove_children: Option<bool>,
1261 #[serde(
1265 default,
1266 skip_serializing_if = "Option::is_none",
1267 rename = "canRemoveMyDriveParent"
1268 )]
1269 pub can_remove_my_drive_parent: Option<bool>,
1270 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
1274 pub can_rename: Option<bool>,
1275 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
1279 pub can_share: Option<bool>,
1280 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canTrash")]
1284 pub can_trash: Option<bool>,
1285 #[serde(
1289 default,
1290 skip_serializing_if = "Option::is_none",
1291 rename = "canTrashChildren"
1292 )]
1293 pub can_trash_children: Option<bool>,
1294 #[serde(
1298 default,
1299 skip_serializing_if = "Option::is_none",
1300 rename = "canUntrash"
1301 )]
1302 pub can_untrash: Option<bool>,
1303}
1304
1305#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1307pub struct Thumbnail {
1308 #[serde(default, skip_serializing_if = "Option::is_none")]
1312 pub image: Option<bytes::Bytes>,
1313 #[serde(
1317 default,
1318 skip_serializing_if = "String::is_empty",
1319 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1320 rename = "mimeType"
1321 )]
1322 pub mime_type: String,
1323}
1324
1325#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1327pub struct ContentHints {
1328 #[serde(
1332 default,
1333 skip_serializing_if = "String::is_empty",
1334 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1335 rename = "indexableText"
1336 )]
1337 pub indexable_text: String,
1338 #[serde(default, skip_serializing_if = "Option::is_none")]
1342 pub thumbnail: Option<Thumbnail>,
1343}
1344
1345#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1347pub struct Location {
1348 #[serde(
1352 default,
1353 skip_serializing_if = "crate::utils::zero_f64",
1354 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1355 )]
1356 pub altitude: f64,
1357 #[serde(
1361 default,
1362 skip_serializing_if = "crate::utils::zero_f64",
1363 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1364 )]
1365 pub latitude: f64,
1366 #[serde(
1370 default,
1371 skip_serializing_if = "crate::utils::zero_f64",
1372 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1373 )]
1374 pub longitude: f64,
1375}
1376
1377#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1379pub struct ImageMediaMetadata {
1380 #[serde(
1384 default,
1385 skip_serializing_if = "crate::utils::zero_f64",
1386 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
1387 )]
1388 pub aperture: f64,
1389 #[serde(
1393 default,
1394 skip_serializing_if = "String::is_empty",
1395 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1396 rename = "cameraMake"
1397 )]
1398 pub camera_make: String,
1399 #[serde(
1403 default,
1404 skip_serializing_if = "String::is_empty",
1405 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1406 rename = "cameraModel"
1407 )]
1408 pub camera_model: String,
1409 #[serde(
1413 default,
1414 skip_serializing_if = "String::is_empty",
1415 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1416 rename = "colorSpace"
1417 )]
1418 pub color_space: String,
1419 #[serde(
1423 default,
1424 skip_serializing_if = "crate::utils::zero_f64",
1425 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
1426 rename = "exposureBias"
1427 )]
1428 pub exposure_bias: f64,
1429 #[serde(
1433 default,
1434 skip_serializing_if = "String::is_empty",
1435 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1436 rename = "exposureMode"
1437 )]
1438 pub exposure_mode: String,
1439 #[serde(
1443 default,
1444 skip_serializing_if = "crate::utils::zero_f64",
1445 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
1446 rename = "exposureTime"
1447 )]
1448 pub exposure_time: f64,
1449 #[serde(default, skip_serializing_if = "Option::is_none", rename = "flashUsed")]
1453 pub flash_used: Option<bool>,
1454 #[serde(
1458 default,
1459 skip_serializing_if = "crate::utils::zero_f64",
1460 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
1461 rename = "focalLength"
1462 )]
1463 pub focal_length: f64,
1464 #[serde(
1468 default,
1469 skip_serializing_if = "crate::utils::zero_i64",
1470 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1471 )]
1472 pub height: i64,
1473 #[serde(
1477 default,
1478 skip_serializing_if = "crate::utils::zero_i64",
1479 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
1480 rename = "isoSpeed"
1481 )]
1482 pub iso_speed: i64,
1483 #[serde(
1487 default,
1488 skip_serializing_if = "String::is_empty",
1489 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1490 )]
1491 pub lens: String,
1492 #[serde(default, skip_serializing_if = "Option::is_none")]
1496 pub location: Option<Location>,
1497 #[serde(
1501 default,
1502 skip_serializing_if = "crate::utils::zero_f64",
1503 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
1504 rename = "maxApertureValue"
1505 )]
1506 pub max_aperture_value: f64,
1507 #[serde(
1511 default,
1512 skip_serializing_if = "String::is_empty",
1513 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1514 rename = "meteringMode"
1515 )]
1516 pub metering_mode: String,
1517 #[serde(
1521 default,
1522 skip_serializing_if = "crate::utils::zero_i64",
1523 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1524 )]
1525 pub rotation: i64,
1526 #[serde(
1530 default,
1531 skip_serializing_if = "String::is_empty",
1532 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1533 )]
1534 pub sensor: String,
1535 #[serde(
1539 default,
1540 skip_serializing_if = "crate::utils::zero_i64",
1541 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
1542 rename = "subjectDistance"
1543 )]
1544 pub subject_distance: i64,
1545 #[serde(
1549 default,
1550 skip_serializing_if = "String::is_empty",
1551 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1552 )]
1553 pub time: String,
1554 #[serde(
1558 default,
1559 skip_serializing_if = "String::is_empty",
1560 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1561 rename = "whiteBalance"
1562 )]
1563 pub white_balance: String,
1564 #[serde(
1568 default,
1569 skip_serializing_if = "crate::utils::zero_i64",
1570 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1571 )]
1572 pub width: i64,
1573}
1574
1575#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1577pub struct LinkShareMetadata {
1578 #[serde(
1582 default,
1583 skip_serializing_if = "Option::is_none",
1584 rename = "securityUpdateEligible"
1585 )]
1586 pub security_update_eligible: Option<bool>,
1587 #[serde(
1591 default,
1592 skip_serializing_if = "Option::is_none",
1593 rename = "securityUpdateEnabled"
1594 )]
1595 pub security_update_enabled: Option<bool>,
1596}
1597
1598#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1600pub struct ShortcutDetails {
1601 #[serde(
1605 default,
1606 skip_serializing_if = "String::is_empty",
1607 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1608 rename = "targetId"
1609 )]
1610 pub target_id: String,
1611 #[serde(
1615 default,
1616 skip_serializing_if = "String::is_empty",
1617 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1618 rename = "targetMimeType"
1619 )]
1620 pub target_mime_type: String,
1621 #[serde(
1625 default,
1626 skip_serializing_if = "String::is_empty",
1627 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1628 rename = "targetResourceKey"
1629 )]
1630 pub target_resource_key: String,
1631}
1632
1633#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1635pub struct VideoMediaMetadata {
1636 #[serde(
1640 default,
1641 skip_serializing_if = "crate::utils::zero_i64",
1642 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
1643 rename = "durationMillis"
1644 )]
1645 pub duration_millis: i64,
1646 #[serde(
1650 default,
1651 skip_serializing_if = "crate::utils::zero_i64",
1652 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1653 )]
1654 pub height: i64,
1655 #[serde(
1659 default,
1660 skip_serializing_if = "crate::utils::zero_i64",
1661 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1662 )]
1663 pub width: i64,
1664}
1665
1666#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1668pub struct File {
1669 #[serde(
1673 default,
1674 skip_serializing_if = "String::is_empty",
1675 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1676 rename = "appProperties"
1677 )]
1678 pub app_properties: String,
1679 #[serde(default, skip_serializing_if = "Option::is_none")]
1683 pub capabilities: Option<FileCapabilities>,
1684 #[serde(
1688 default,
1689 skip_serializing_if = "Option::is_none",
1690 rename = "contentHints"
1691 )]
1692 pub content_hints: Option<ContentHints>,
1693 #[serde(
1697 default,
1698 skip_serializing_if = "Vec::is_empty",
1699 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
1700 rename = "contentRestrictions"
1701 )]
1702 pub content_restrictions: Vec<ContentRestriction>,
1703 #[serde(
1707 default,
1708 skip_serializing_if = "Option::is_none",
1709 rename = "copyRequiresWriterPermission"
1710 )]
1711 pub copy_requires_writer_permission: Option<bool>,
1712 #[serde(
1716 default,
1717 skip_serializing_if = "Option::is_none",
1718 deserialize_with = "crate::utils::date_time_format::deserialize",
1719 rename = "createdTime"
1720 )]
1721 pub created_time: Option<chrono::DateTime<chrono::Utc>>,
1722 #[serde(
1726 default,
1727 skip_serializing_if = "String::is_empty",
1728 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1729 )]
1730 pub description: String,
1731 #[serde(
1735 default,
1736 skip_serializing_if = "String::is_empty",
1737 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1738 rename = "driveId"
1739 )]
1740 pub drive_id: String,
1741 #[serde(
1745 default,
1746 skip_serializing_if = "Option::is_none",
1747 rename = "explicitlyTrashed"
1748 )]
1749 pub explicitly_trashed: Option<bool>,
1750 #[serde(
1754 default,
1755 skip_serializing_if = "String::is_empty",
1756 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1757 rename = "exportLinks"
1758 )]
1759 pub export_links: String,
1760 #[serde(
1764 default,
1765 skip_serializing_if = "String::is_empty",
1766 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1767 rename = "fileExtension"
1768 )]
1769 pub file_extension: String,
1770 #[serde(
1774 default,
1775 skip_serializing_if = "String::is_empty",
1776 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1777 rename = "folderColorRgb"
1778 )]
1779 pub folder_color_rgb: String,
1780 #[serde(
1784 default,
1785 skip_serializing_if = "String::is_empty",
1786 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1787 rename = "fullFileExtension"
1788 )]
1789 pub full_file_extension: String,
1790 #[serde(
1794 default,
1795 skip_serializing_if = "Option::is_none",
1796 rename = "hasAugmentedPermissions"
1797 )]
1798 pub has_augmented_permissions: Option<bool>,
1799 #[serde(
1803 default,
1804 skip_serializing_if = "Option::is_none",
1805 rename = "hasThumbnail"
1806 )]
1807 pub has_thumbnail: Option<bool>,
1808 #[serde(
1812 default,
1813 skip_serializing_if = "String::is_empty",
1814 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1815 rename = "headRevisionId"
1816 )]
1817 pub head_revision_id: String,
1818 #[serde(
1822 default,
1823 skip_serializing_if = "String::is_empty",
1824 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1825 rename = "iconLink"
1826 )]
1827 pub icon_link: String,
1828 #[serde(
1832 default,
1833 skip_serializing_if = "String::is_empty",
1834 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1835 )]
1836 pub id: String,
1837 #[serde(
1841 default,
1842 skip_serializing_if = "Option::is_none",
1843 rename = "imageMediaMetadata"
1844 )]
1845 pub image_media_metadata: Option<ImageMediaMetadata>,
1846 #[serde(
1850 default,
1851 skip_serializing_if = "Option::is_none",
1852 rename = "isAppAuthorized"
1853 )]
1854 pub is_app_authorized: Option<bool>,
1855 #[serde(
1859 default,
1860 skip_serializing_if = "String::is_empty",
1861 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1862 )]
1863 pub kind: String,
1864 #[serde(
1868 default,
1869 skip_serializing_if = "Option::is_none",
1870 rename = "lastModifyingUser"
1871 )]
1872 pub last_modifying_user: Option<User>,
1873 #[serde(
1877 default,
1878 skip_serializing_if = "Option::is_none",
1879 rename = "linkShareMetadata"
1880 )]
1881 pub link_share_metadata: Option<LinkShareMetadata>,
1882 #[serde(
1886 default,
1887 skip_serializing_if = "String::is_empty",
1888 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1889 rename = "md5Checksum"
1890 )]
1891 pub md_5_checksum: String,
1892 #[serde(
1896 default,
1897 skip_serializing_if = "String::is_empty",
1898 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1899 rename = "mimeType"
1900 )]
1901 pub mime_type: String,
1902 #[serde(
1906 default,
1907 skip_serializing_if = "Option::is_none",
1908 rename = "modifiedByMe"
1909 )]
1910 pub modified_by_me: Option<bool>,
1911 #[serde(
1915 default,
1916 skip_serializing_if = "Option::is_none",
1917 deserialize_with = "crate::utils::date_time_format::deserialize",
1918 rename = "modifiedByMeTime"
1919 )]
1920 pub modified_by_me_time: Option<chrono::DateTime<chrono::Utc>>,
1921 #[serde(
1925 default,
1926 skip_serializing_if = "Option::is_none",
1927 deserialize_with = "crate::utils::date_time_format::deserialize",
1928 rename = "modifiedTime"
1929 )]
1930 pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
1931 #[serde(
1935 default,
1936 skip_serializing_if = "String::is_empty",
1937 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1938 )]
1939 pub name: String,
1940 #[serde(
1944 default,
1945 skip_serializing_if = "String::is_empty",
1946 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1947 rename = "originalFilename"
1948 )]
1949 pub original_filename: String,
1950 #[serde(default, skip_serializing_if = "Option::is_none", rename = "ownedByMe")]
1954 pub owned_by_me: Option<bool>,
1955 #[serde(
1959 default,
1960 skip_serializing_if = "Vec::is_empty",
1961 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1962 )]
1963 pub owners: Vec<User>,
1964 #[serde(
1968 default,
1969 skip_serializing_if = "Vec::is_empty",
1970 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1971 )]
1972 pub parents: Vec<String>,
1973 #[serde(
1977 default,
1978 skip_serializing_if = "Vec::is_empty",
1979 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
1980 rename = "permissionIds"
1981 )]
1982 pub permission_ids: Vec<String>,
1983 #[serde(
1987 default,
1988 skip_serializing_if = "Vec::is_empty",
1989 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1990 )]
1991 pub permissions: Vec<Permission>,
1992 #[serde(
1996 default,
1997 skip_serializing_if = "String::is_empty",
1998 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1999 )]
2000 pub properties: String,
2001 #[serde(
2005 default,
2006 skip_serializing_if = "crate::utils::zero_i64",
2007 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
2008 rename = "quotaBytesUsed"
2009 )]
2010 pub quota_bytes_used: i64,
2011 #[serde(
2015 default,
2016 skip_serializing_if = "String::is_empty",
2017 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2018 rename = "resourceKey"
2019 )]
2020 pub resource_key: String,
2021 #[serde(default, skip_serializing_if = "Option::is_none")]
2025 pub shared: Option<bool>,
2026 #[serde(
2030 default,
2031 skip_serializing_if = "Option::is_none",
2032 deserialize_with = "crate::utils::date_time_format::deserialize",
2033 rename = "sharedWithMeTime"
2034 )]
2035 pub shared_with_me_time: Option<chrono::DateTime<chrono::Utc>>,
2036 #[serde(
2040 default,
2041 skip_serializing_if = "Option::is_none",
2042 rename = "sharingUser"
2043 )]
2044 pub sharing_user: Option<User>,
2045 #[serde(
2049 default,
2050 skip_serializing_if = "Option::is_none",
2051 rename = "shortcutDetails"
2052 )]
2053 pub shortcut_details: Option<ShortcutDetails>,
2054 #[serde(
2058 default,
2059 skip_serializing_if = "crate::utils::zero_i64",
2060 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2061 )]
2062 pub size: i64,
2063 #[serde(
2067 default,
2068 skip_serializing_if = "Vec::is_empty",
2069 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2070 )]
2071 pub spaces: Vec<String>,
2072 #[serde(default, skip_serializing_if = "Option::is_none")]
2076 pub starred: Option<bool>,
2077 #[serde(
2081 default,
2082 skip_serializing_if = "String::is_empty",
2083 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2084 rename = "teamDriveId"
2085 )]
2086 pub team_drive_id: String,
2087 #[serde(
2091 default,
2092 skip_serializing_if = "String::is_empty",
2093 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2094 rename = "thumbnailLink"
2095 )]
2096 pub thumbnail_link: String,
2097 #[serde(
2101 default,
2102 skip_serializing_if = "crate::utils::zero_i64",
2103 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
2104 rename = "thumbnailVersion"
2105 )]
2106 pub thumbnail_version: i64,
2107 #[serde(default, skip_serializing_if = "Option::is_none")]
2111 pub trashed: Option<bool>,
2112 #[serde(
2116 default,
2117 skip_serializing_if = "Option::is_none",
2118 deserialize_with = "crate::utils::date_time_format::deserialize",
2119 rename = "trashedTime"
2120 )]
2121 pub trashed_time: Option<chrono::DateTime<chrono::Utc>>,
2122 #[serde(
2126 default,
2127 skip_serializing_if = "Option::is_none",
2128 rename = "trashingUser"
2129 )]
2130 pub trashing_user: Option<User>,
2131 #[serde(
2135 default,
2136 skip_serializing_if = "crate::utils::zero_i64",
2137 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2138 )]
2139 pub version: i64,
2140 #[serde(
2144 default,
2145 skip_serializing_if = "Option::is_none",
2146 rename = "videoMediaMetadata"
2147 )]
2148 pub video_media_metadata: Option<VideoMediaMetadata>,
2149 #[serde(
2153 default,
2154 skip_serializing_if = "Option::is_none",
2155 rename = "viewedByMe"
2156 )]
2157 pub viewed_by_me: Option<bool>,
2158 #[serde(
2162 default,
2163 skip_serializing_if = "Option::is_none",
2164 deserialize_with = "crate::utils::date_time_format::deserialize",
2165 rename = "viewedByMeTime"
2166 )]
2167 pub viewed_by_me_time: Option<chrono::DateTime<chrono::Utc>>,
2168 #[serde(
2172 default,
2173 skip_serializing_if = "Option::is_none",
2174 rename = "viewersCanCopyContent"
2175 )]
2176 pub viewers_can_copy_content: Option<bool>,
2177 #[serde(
2181 default,
2182 skip_serializing_if = "String::is_empty",
2183 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2184 rename = "webContentLink"
2185 )]
2186 pub web_content_link: String,
2187 #[serde(
2191 default,
2192 skip_serializing_if = "String::is_empty",
2193 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2194 rename = "webViewLink"
2195 )]
2196 pub web_view_link: String,
2197 #[serde(
2201 default,
2202 skip_serializing_if = "Option::is_none",
2203 rename = "writersCanShare"
2204 )]
2205 pub writers_can_share: Option<bool>,
2206}
2207
2208#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2210pub struct FileList {
2211 #[serde(
2215 default,
2216 skip_serializing_if = "Vec::is_empty",
2217 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2218 )]
2219 pub files: Vec<File>,
2220 #[serde(
2224 default,
2225 skip_serializing_if = "Option::is_none",
2226 rename = "incompleteSearch"
2227 )]
2228 pub incomplete_search: Option<bool>,
2229 #[serde(
2233 default,
2234 skip_serializing_if = "String::is_empty",
2235 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2236 )]
2237 pub kind: String,
2238 #[serde(
2242 default,
2243 skip_serializing_if = "String::is_empty",
2244 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2245 rename = "nextPageToken"
2246 )]
2247 pub next_page_token: String,
2248}
2249
2250#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2252pub struct GeneratedIds {
2253 #[serde(
2257 default,
2258 skip_serializing_if = "Vec::is_empty",
2259 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2260 )]
2261 pub ids: Vec<String>,
2262 #[serde(
2266 default,
2267 skip_serializing_if = "String::is_empty",
2268 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2269 )]
2270 pub kind: String,
2271 #[serde(
2275 default,
2276 skip_serializing_if = "String::is_empty",
2277 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2278 )]
2279 pub space: String,
2280}
2281
2282#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2283pub struct PermissionDetails {
2284 #[serde(default, skip_serializing_if = "Option::is_none")]
2288 pub inherited: Option<bool>,
2289 #[serde(
2293 default,
2294 skip_serializing_if = "String::is_empty",
2295 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2296 rename = "inheritedFrom"
2297 )]
2298 pub inherited_from: String,
2299 #[serde(
2303 default,
2304 skip_serializing_if = "String::is_empty",
2305 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2306 rename = "permissionType"
2307 )]
2308 pub permission_type: String,
2309 #[serde(
2313 default,
2314 skip_serializing_if = "String::is_empty",
2315 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2316 )]
2317 pub role: String,
2318}
2319
2320#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2321pub struct TeamDrivePermissionDetails {
2322 #[serde(default, skip_serializing_if = "Option::is_none")]
2326 pub inherited: Option<bool>,
2327 #[serde(
2331 default,
2332 skip_serializing_if = "String::is_empty",
2333 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2334 rename = "inheritedFrom"
2335 )]
2336 pub inherited_from: String,
2337 #[serde(
2341 default,
2342 skip_serializing_if = "String::is_empty",
2343 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2344 )]
2345 pub role: String,
2346 #[serde(
2350 default,
2351 skip_serializing_if = "String::is_empty",
2352 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2353 rename = "teamDrivePermissionType"
2354 )]
2355 pub team_drive_permission_type: String,
2356}
2357
2358#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2360pub struct Permission {
2361 #[serde(
2365 default,
2366 skip_serializing_if = "Option::is_none",
2367 rename = "allowFileDiscovery"
2368 )]
2369 pub allow_file_discovery: Option<bool>,
2370 #[serde(default, skip_serializing_if = "Option::is_none")]
2374 pub deleted: Option<bool>,
2375 #[serde(
2379 default,
2380 skip_serializing_if = "String::is_empty",
2381 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2382 rename = "displayName"
2383 )]
2384 pub display_name: String,
2385 #[serde(
2389 default,
2390 skip_serializing_if = "String::is_empty",
2391 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2392 )]
2393 pub domain: String,
2394 #[serde(
2398 default,
2399 skip_serializing_if = "String::is_empty",
2400 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2401 rename = "emailAddress"
2402 )]
2403 pub email_address: String,
2404 #[serde(
2408 default,
2409 skip_serializing_if = "Option::is_none",
2410 deserialize_with = "crate::utils::date_time_format::deserialize",
2411 rename = "expirationTime"
2412 )]
2413 pub expiration_time: Option<chrono::DateTime<chrono::Utc>>,
2414 #[serde(
2418 default,
2419 skip_serializing_if = "String::is_empty",
2420 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2421 )]
2422 pub id: String,
2423 #[serde(
2427 default,
2428 skip_serializing_if = "String::is_empty",
2429 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2430 )]
2431 pub kind: String,
2432 #[serde(
2436 default,
2437 skip_serializing_if = "Vec::is_empty",
2438 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
2439 rename = "permissionDetails"
2440 )]
2441 pub permission_details: Vec<PermissionDetails>,
2442 #[serde(
2446 default,
2447 skip_serializing_if = "String::is_empty",
2448 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2449 rename = "photoLink"
2450 )]
2451 pub photo_link: String,
2452 #[serde(
2456 default,
2457 skip_serializing_if = "String::is_empty",
2458 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2459 )]
2460 pub role: String,
2461 #[serde(
2465 default,
2466 skip_serializing_if = "Vec::is_empty",
2467 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
2468 rename = "teamDrivePermissionDetails"
2469 )]
2470 pub team_drive_permission_details: Vec<TeamDrivePermissionDetails>,
2471 #[serde(
2475 default,
2476 skip_serializing_if = "String::is_empty",
2477 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2478 rename = "type"
2479 )]
2480 pub type_: String,
2481 #[serde(
2485 default,
2486 skip_serializing_if = "String::is_empty",
2487 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2488 )]
2489 pub view: String,
2490}
2491
2492#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2494pub struct PermissionList {
2495 #[serde(
2499 default,
2500 skip_serializing_if = "String::is_empty",
2501 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2502 )]
2503 pub kind: String,
2504 #[serde(
2508 default,
2509 skip_serializing_if = "String::is_empty",
2510 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2511 rename = "nextPageToken"
2512 )]
2513 pub next_page_token: String,
2514 #[serde(
2518 default,
2519 skip_serializing_if = "Vec::is_empty",
2520 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2521 )]
2522 pub permissions: Vec<Permission>,
2523}
2524
2525#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2527pub struct Reply {
2528 #[serde(
2532 default,
2533 skip_serializing_if = "String::is_empty",
2534 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2535 )]
2536 pub action: String,
2537 #[serde(default, skip_serializing_if = "Option::is_none")]
2541 pub author: Option<User>,
2542 #[serde(
2546 default,
2547 skip_serializing_if = "String::is_empty",
2548 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2549 )]
2550 pub content: String,
2551 #[serde(
2555 default,
2556 skip_serializing_if = "Option::is_none",
2557 deserialize_with = "crate::utils::date_time_format::deserialize",
2558 rename = "createdTime"
2559 )]
2560 pub created_time: Option<chrono::DateTime<chrono::Utc>>,
2561 #[serde(default, skip_serializing_if = "Option::is_none")]
2565 pub deleted: Option<bool>,
2566 #[serde(
2570 default,
2571 skip_serializing_if = "String::is_empty",
2572 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2573 rename = "htmlContent"
2574 )]
2575 pub html_content: String,
2576 #[serde(
2580 default,
2581 skip_serializing_if = "String::is_empty",
2582 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2583 )]
2584 pub id: String,
2585 #[serde(
2589 default,
2590 skip_serializing_if = "String::is_empty",
2591 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2592 )]
2593 pub kind: String,
2594 #[serde(
2598 default,
2599 skip_serializing_if = "Option::is_none",
2600 deserialize_with = "crate::utils::date_time_format::deserialize",
2601 rename = "modifiedTime"
2602 )]
2603 pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
2604}
2605
2606#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2608pub struct ReplyList {
2609 #[serde(
2613 default,
2614 skip_serializing_if = "String::is_empty",
2615 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2616 )]
2617 pub kind: String,
2618 #[serde(
2622 default,
2623 skip_serializing_if = "String::is_empty",
2624 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2625 rename = "nextPageToken"
2626 )]
2627 pub next_page_token: String,
2628 #[serde(
2632 default,
2633 skip_serializing_if = "Vec::is_empty",
2634 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2635 )]
2636 pub replies: Vec<Reply>,
2637}
2638
2639#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2641pub struct Revision {
2642 #[serde(
2646 default,
2647 skip_serializing_if = "String::is_empty",
2648 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2649 rename = "exportLinks"
2650 )]
2651 pub export_links: String,
2652 #[serde(
2656 default,
2657 skip_serializing_if = "String::is_empty",
2658 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2659 )]
2660 pub id: String,
2661 #[serde(
2665 default,
2666 skip_serializing_if = "Option::is_none",
2667 rename = "keepForever"
2668 )]
2669 pub keep_forever: Option<bool>,
2670 #[serde(
2674 default,
2675 skip_serializing_if = "String::is_empty",
2676 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2677 )]
2678 pub kind: String,
2679 #[serde(
2683 default,
2684 skip_serializing_if = "Option::is_none",
2685 rename = "lastModifyingUser"
2686 )]
2687 pub last_modifying_user: Option<User>,
2688 #[serde(
2692 default,
2693 skip_serializing_if = "String::is_empty",
2694 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2695 rename = "md5Checksum"
2696 )]
2697 pub md_5_checksum: String,
2698 #[serde(
2702 default,
2703 skip_serializing_if = "String::is_empty",
2704 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2705 rename = "mimeType"
2706 )]
2707 pub mime_type: String,
2708 #[serde(
2712 default,
2713 skip_serializing_if = "Option::is_none",
2714 deserialize_with = "crate::utils::date_time_format::deserialize",
2715 rename = "modifiedTime"
2716 )]
2717 pub modified_time: Option<chrono::DateTime<chrono::Utc>>,
2718 #[serde(
2722 default,
2723 skip_serializing_if = "String::is_empty",
2724 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2725 rename = "originalFilename"
2726 )]
2727 pub original_filename: String,
2728 #[serde(
2732 default,
2733 skip_serializing_if = "Option::is_none",
2734 rename = "publishAuto"
2735 )]
2736 pub publish_auto: Option<bool>,
2737 #[serde(default, skip_serializing_if = "Option::is_none")]
2741 pub published: Option<bool>,
2742 #[serde(
2746 default,
2747 skip_serializing_if = "String::is_empty",
2748 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2749 rename = "publishedLink"
2750 )]
2751 pub published_link: String,
2752 #[serde(
2756 default,
2757 skip_serializing_if = "Option::is_none",
2758 rename = "publishedOutsideDomain"
2759 )]
2760 pub published_outside_domain: Option<bool>,
2761 #[serde(
2765 default,
2766 skip_serializing_if = "crate::utils::zero_i64",
2767 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
2768 )]
2769 pub size: i64,
2770}
2771
2772#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2774pub struct RevisionList {
2775 #[serde(
2779 default,
2780 skip_serializing_if = "String::is_empty",
2781 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2782 )]
2783 pub kind: String,
2784 #[serde(
2788 default,
2789 skip_serializing_if = "String::is_empty",
2790 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2791 rename = "nextPageToken"
2792 )]
2793 pub next_page_token: String,
2794 #[serde(
2798 default,
2799 skip_serializing_if = "Vec::is_empty",
2800 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2801 )]
2802 pub revisions: Vec<Revision>,
2803}
2804
2805#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2806pub struct StartPageToken {
2807 #[serde(
2811 default,
2812 skip_serializing_if = "String::is_empty",
2813 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2814 )]
2815 pub kind: String,
2816 #[serde(
2820 default,
2821 skip_serializing_if = "String::is_empty",
2822 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2823 rename = "startPageToken"
2824 )]
2825 pub start_page_token: String,
2826}
2827
2828#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2830pub struct TeamDriveBackgroundImageFile {
2831 #[serde(
2835 default,
2836 skip_serializing_if = "String::is_empty",
2837 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2838 )]
2839 pub id: String,
2840 #[serde(
2844 default,
2845 skip_serializing_if = "crate::utils::zero_f64",
2846 deserialize_with = "crate::utils::deserialize_null_f64::deserialize"
2847 )]
2848 pub width: f64,
2849 #[serde(
2853 default,
2854 skip_serializing_if = "crate::utils::zero_f64",
2855 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
2856 rename = "xCoordinate"
2857 )]
2858 pub x_coordinate: f64,
2859 #[serde(
2863 default,
2864 skip_serializing_if = "crate::utils::zero_f64",
2865 deserialize_with = "crate::utils::deserialize_null_f64::deserialize",
2866 rename = "yCoordinate"
2867 )]
2868 pub y_coordinate: f64,
2869}
2870
2871#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2873pub struct TeamDriveCapabilities {
2874 #[serde(
2878 default,
2879 skip_serializing_if = "Option::is_none",
2880 rename = "canAddChildren"
2881 )]
2882 pub can_add_children: Option<bool>,
2883 #[serde(
2887 default,
2888 skip_serializing_if = "Option::is_none",
2889 rename = "canChangeCopyRequiresWriterPermissionRestriction"
2890 )]
2891 pub can_change_copy_requires_writer_permission_restriction: Option<bool>,
2892 #[serde(
2896 default,
2897 skip_serializing_if = "Option::is_none",
2898 rename = "canChangeDomainUsersOnlyRestriction"
2899 )]
2900 pub can_change_domain_users_only_restriction: Option<bool>,
2901 #[serde(
2905 default,
2906 skip_serializing_if = "Option::is_none",
2907 rename = "canChangeTeamDriveBackground"
2908 )]
2909 pub can_change_team_drive_background: Option<bool>,
2910 #[serde(
2914 default,
2915 skip_serializing_if = "Option::is_none",
2916 rename = "canChangeTeamMembersOnlyRestriction"
2917 )]
2918 pub can_change_team_members_only_restriction: Option<bool>,
2919 #[serde(
2923 default,
2924 skip_serializing_if = "Option::is_none",
2925 rename = "canComment"
2926 )]
2927 pub can_comment: Option<bool>,
2928 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
2932 pub can_copy: Option<bool>,
2933 #[serde(
2937 default,
2938 skip_serializing_if = "Option::is_none",
2939 rename = "canDeleteChildren"
2940 )]
2941 pub can_delete_children: Option<bool>,
2942 #[serde(
2946 default,
2947 skip_serializing_if = "Option::is_none",
2948 rename = "canDeleteTeamDrive"
2949 )]
2950 pub can_delete_team_drive: Option<bool>,
2951 #[serde(
2955 default,
2956 skip_serializing_if = "Option::is_none",
2957 rename = "canDownload"
2958 )]
2959 pub can_download: Option<bool>,
2960 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
2964 pub can_edit: Option<bool>,
2965 #[serde(
2969 default,
2970 skip_serializing_if = "Option::is_none",
2971 rename = "canListChildren"
2972 )]
2973 pub can_list_children: Option<bool>,
2974 #[serde(
2978 default,
2979 skip_serializing_if = "Option::is_none",
2980 rename = "canManageMembers"
2981 )]
2982 pub can_manage_members: Option<bool>,
2983 #[serde(
2987 default,
2988 skip_serializing_if = "Option::is_none",
2989 rename = "canReadRevisions"
2990 )]
2991 pub can_read_revisions: Option<bool>,
2992 #[serde(
2996 default,
2997 skip_serializing_if = "Option::is_none",
2998 rename = "canRemoveChildren"
2999 )]
3000 pub can_remove_children: Option<bool>,
3001 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
3005 pub can_rename: Option<bool>,
3006 #[serde(
3010 default,
3011 skip_serializing_if = "Option::is_none",
3012 rename = "canRenameTeamDrive"
3013 )]
3014 pub can_rename_team_drive: Option<bool>,
3015 #[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
3019 pub can_share: Option<bool>,
3020 #[serde(
3024 default,
3025 skip_serializing_if = "Option::is_none",
3026 rename = "canTrashChildren"
3027 )]
3028 pub can_trash_children: Option<bool>,
3029}
3030
3031#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3033pub struct TeamDriveRestrictions {
3034 #[serde(
3038 default,
3039 skip_serializing_if = "Option::is_none",
3040 rename = "adminManagedRestrictions"
3041 )]
3042 pub admin_managed_restrictions: Option<bool>,
3043 #[serde(
3047 default,
3048 skip_serializing_if = "Option::is_none",
3049 rename = "copyRequiresWriterPermission"
3050 )]
3051 pub copy_requires_writer_permission: Option<bool>,
3052 #[serde(
3056 default,
3057 skip_serializing_if = "Option::is_none",
3058 rename = "domainUsersOnly"
3059 )]
3060 pub domain_users_only: Option<bool>,
3061 #[serde(
3065 default,
3066 skip_serializing_if = "Option::is_none",
3067 rename = "teamMembersOnly"
3068 )]
3069 pub team_members_only: Option<bool>,
3070}
3071
3072#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3074pub struct TeamDrive {
3075 #[serde(
3079 default,
3080 skip_serializing_if = "Option::is_none",
3081 rename = "backgroundImageFile"
3082 )]
3083 pub background_image_file: Option<TeamDriveBackgroundImageFile>,
3084 #[serde(
3088 default,
3089 skip_serializing_if = "String::is_empty",
3090 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3091 rename = "backgroundImageLink"
3092 )]
3093 pub background_image_link: String,
3094 #[serde(default, skip_serializing_if = "Option::is_none")]
3098 pub capabilities: Option<TeamDriveCapabilities>,
3099 #[serde(
3103 default,
3104 skip_serializing_if = "String::is_empty",
3105 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3106 rename = "colorRgb"
3107 )]
3108 pub color_rgb: String,
3109 #[serde(
3113 default,
3114 skip_serializing_if = "Option::is_none",
3115 deserialize_with = "crate::utils::date_time_format::deserialize",
3116 rename = "createdTime"
3117 )]
3118 pub created_time: Option<chrono::DateTime<chrono::Utc>>,
3119 #[serde(
3123 default,
3124 skip_serializing_if = "String::is_empty",
3125 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3126 )]
3127 pub id: String,
3128 #[serde(
3132 default,
3133 skip_serializing_if = "String::is_empty",
3134 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3135 )]
3136 pub kind: String,
3137 #[serde(
3141 default,
3142 skip_serializing_if = "String::is_empty",
3143 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3144 )]
3145 pub name: String,
3146 #[serde(default, skip_serializing_if = "Option::is_none")]
3150 pub restrictions: Option<TeamDriveRestrictions>,
3151 #[serde(
3155 default,
3156 skip_serializing_if = "String::is_empty",
3157 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3158 rename = "themeId"
3159 )]
3160 pub theme_id: String,
3161}
3162
3163#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3165pub struct TeamDriveList {
3166 #[serde(
3170 default,
3171 skip_serializing_if = "String::is_empty",
3172 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3173 )]
3174 pub kind: String,
3175 #[serde(
3179 default,
3180 skip_serializing_if = "String::is_empty",
3181 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3182 rename = "nextPageToken"
3183 )]
3184 pub next_page_token: String,
3185 #[serde(
3189 default,
3190 skip_serializing_if = "Vec::is_empty",
3191 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
3192 rename = "teamDrives"
3193 )]
3194 pub team_drives: Vec<TeamDrive>,
3195}
3196
3197#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3199pub struct User {
3200 #[serde(
3204 default,
3205 skip_serializing_if = "String::is_empty",
3206 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3207 rename = "displayName"
3208 )]
3209 pub display_name: String,
3210 #[serde(
3214 default,
3215 skip_serializing_if = "String::is_empty",
3216 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3217 rename = "emailAddress"
3218 )]
3219 pub email_address: String,
3220 #[serde(
3224 default,
3225 skip_serializing_if = "String::is_empty",
3226 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
3227 )]
3228 pub kind: String,
3229 #[serde(default, skip_serializing_if = "Option::is_none")]
3233 pub me: Option<bool>,
3234 #[serde(
3238 default,
3239 skip_serializing_if = "String::is_empty",
3240 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3241 rename = "permissionId"
3242 )]
3243 pub permission_id: String,
3244 #[serde(
3248 default,
3249 skip_serializing_if = "String::is_empty",
3250 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
3251 rename = "photoLink"
3252 )]
3253 pub photo_link: String,
3254}
3255
3256#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
3260pub enum Alt {
3261 #[serde(rename = "json")]
3262 Json,
3263 #[serde(rename = "")]
3264 #[default]
3265 Noop,
3266 #[serde(other)]
3267 FallthroughString,
3268}
3269
3270impl std::fmt::Display for Alt {
3271 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3272 match self {
3273 Alt::Json => "json",
3274 Alt::Noop => "",
3275 Alt::FallthroughString => "*",
3276 }
3277 .fmt(f)
3278 }
3279}
3280
3281impl Alt {
3282 pub fn is_noop(&self) -> bool {
3283 matches!(self, Alt::Noop)
3284 }
3285}
3286
3287#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
3291pub enum Corpus {
3292 #[serde(rename = "domain")]
3293 Domain,
3294 #[serde(rename = "user")]
3295 User,
3296 #[serde(rename = "")]
3297 #[default]
3298 Noop,
3299 #[serde(other)]
3300 FallthroughString,
3301}
3302
3303impl std::fmt::Display for Corpus {
3304 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3305 match self {
3306 Corpus::Domain => "domain",
3307 Corpus::User => "user",
3308 Corpus::Noop => "",
3309 Corpus::FallthroughString => "*",
3310 }
3311 .fmt(f)
3312 }
3313}
3314
3315impl Corpus {
3316 pub fn is_noop(&self) -> bool {
3317 matches!(self, Corpus::Noop)
3318 }
3319}