google_drive/
types.rs

1//! The data types sent to and returned from the API client.
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6pub struct DriveThemes {
7    /**
8     * A link to this theme's background image.
9     */
10    #[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    /**
18     * A link to this theme's background image.
19     */
20    #[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    /**
28     * A link to this theme's background image.
29     */
30    #[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/// The user's storage quota limits and usage. All fields are measured in bytes.
39#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
40pub struct StorageQuota {
41    /**
42     * The user's storage quota limits and usage. All fields are measured in bytes.
43     */
44    #[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    /**
51     * The user's storage quota limits and usage. All fields are measured in bytes.
52     */
53    #[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    /**
60     * The user's storage quota limits and usage. All fields are measured in bytes.
61     */
62    #[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    /**
70     * The user's storage quota limits and usage. All fields are measured in bytes.
71     */
72    #[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/// Information about the user, the user's Drive, and system capabilities.
82#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
83pub struct About {
84    /**
85     * Information about the user, the user's Drive, and system capabilities.
86     */
87    #[serde(
88        default,
89        skip_serializing_if = "Option::is_none",
90        rename = "appInstalled"
91    )]
92    pub app_installed: Option<bool>,
93    /**
94     * Information about the user, the user's Drive, and system capabilities.
95     */
96    #[serde(
97        default,
98        skip_serializing_if = "Option::is_none",
99        rename = "canCreateDrives"
100    )]
101    pub can_create_drives: Option<bool>,
102    /**
103     * Information about the user, the user's Drive, and system capabilities.
104     */
105    #[serde(
106        default,
107        skip_serializing_if = "Option::is_none",
108        rename = "canCreateTeamDrives"
109    )]
110    pub can_create_team_drives: Option<bool>,
111    /**
112     * Information about the user, the user's Drive, and system capabilities.
113     */
114    #[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    /**
122     * Information about the user, the user's Drive, and system capabilities.
123     */
124    #[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    /**
132     * Information about the user, the user's Drive, and system capabilities.
133     */
134    #[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    /**
142     * Information about the user, the user's Drive, and system capabilities.
143     */
144    #[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    /**
152     * Information about the user, the user's Drive, and system capabilities.
153     */
154    #[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    /**
161     * Information about the user, the user's Drive, and system capabilities.
162     */
163    #[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    /**
171     * Information about the user, the user's Drive, and system capabilities.
172     */
173    #[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    /**
181     * Information about the user, the user's Drive, and system capabilities.
182     */
183    #[serde(
184        default,
185        skip_serializing_if = "Option::is_none",
186        rename = "storageQuota"
187    )]
188    pub storage_quota: Option<StorageQuota>,
189    /**
190     * Information about the user, the user's Drive, and system capabilities.
191     */
192    #[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    /**
200     * Information about the user, the user's Drive, and system capabilities.
201     */
202    #[serde(default, skip_serializing_if = "Option::is_none")]
203    pub user: Option<User>,
204}
205
206/// A change to a file or shared drive.
207#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
208pub struct Change {
209    /**
210     * A change to a file or shared drive.
211     */
212    #[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    /**
220     * A change to a file or shared drive.
221     */
222    #[serde(default, skip_serializing_if = "Option::is_none")]
223    pub drive: Option<Drive>,
224    /**
225     * A change to a file or shared drive.
226     */
227    #[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    /**
235     * A change to a file or shared drive.
236     */
237    #[serde(default, skip_serializing_if = "Option::is_none")]
238    pub file: Option<File>,
239    /**
240     * A change to a file or shared drive.
241     */
242    #[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    /**
250     * A change to a file or shared drive.
251     */
252    #[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    /**
259     * A change to a file or shared drive.
260     */
261    #[serde(default, skip_serializing_if = "Option::is_none")]
262    pub removed: Option<bool>,
263    /**
264     * A change to a file or shared drive.
265     */
266    #[serde(default, skip_serializing_if = "Option::is_none", rename = "teamDrive")]
267    pub team_drive: Option<TeamDrive>,
268    /**
269     * A change to a file or shared drive.
270     */
271    #[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    /**
279     * A change to a file or shared drive.
280     */
281    #[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    /**
288     * A change to a file or shared drive.
289     */
290    #[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/// A list of changes for a user.
300#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
301pub struct ChangeList {
302    /**
303     * A list of changes for a user.
304     */
305    #[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    /**
312     * A list of changes for a user.
313     */
314    #[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    /**
321     * A list of changes for a user.
322     */
323    #[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    /**
331     * A list of changes for a user.
332     */
333    #[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/// An notification channel used to watch for resource changes.
343#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
344pub struct Channel {
345    /**
346     * An notification channel used to watch for resource changes.
347     */
348    #[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    /**
355     * An notification channel used to watch for resource changes.
356     */
357    #[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    /**
364     * An notification channel used to watch for resource changes.
365     */
366    #[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    /**
373     * An notification channel used to watch for resource changes.
374     */
375    #[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    /**
382     * An notification channel used to watch for resource changes.
383     */
384    #[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    /**
391     * An notification channel used to watch for resource changes.
392     */
393    #[serde(default, skip_serializing_if = "Option::is_none")]
394    pub payload: Option<bool>,
395    /**
396     * An notification channel used to watch for resource changes.
397     */
398    #[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    /**
406     * An notification channel used to watch for resource changes.
407     */
408    #[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    /**
416     * An notification channel used to watch for resource changes.
417     */
418    #[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    /**
425     * An notification channel used to watch for resource changes.
426     */
427    #[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/// The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
437#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
438pub struct QuotedFileContent {
439    /**
440     * The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
441     */
442    #[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    /**
450     * The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
451     */
452    #[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/// A comment on a file.
461#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
462pub struct Comment {
463    /**
464     * A comment on a file.
465     */
466    #[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    /**
473     * A comment on a file.
474     */
475    #[serde(default, skip_serializing_if = "Option::is_none")]
476    pub author: Option<User>,
477    /**
478     * A comment on a file.
479     */
480    #[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    /**
487     * A comment on a file.
488     */
489    #[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    /**
497     * A comment on a file.
498     */
499    #[serde(default, skip_serializing_if = "Option::is_none")]
500    pub deleted: Option<bool>,
501    /**
502     * A comment on a file.
503     */
504    #[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    /**
512     * A comment on a file.
513     */
514    #[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    /**
521     * A comment on a file.
522     */
523    #[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    /**
530     * A comment on a file.
531     */
532    #[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    /**
540     * A comment on a file.
541     */
542    #[serde(
543        default,
544        skip_serializing_if = "Option::is_none",
545        rename = "quotedFileContent"
546    )]
547    pub quoted_file_content: Option<QuotedFileContent>,
548    /**
549     * A comment on a file.
550     */
551    #[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    /**
558     * A comment on a file.
559     */
560    #[serde(default, skip_serializing_if = "Option::is_none")]
561    pub resolved: Option<bool>,
562}
563
564/// A list of comments on a file.
565#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
566pub struct CommentList {
567    /**
568     * A list of comments on a file.
569     */
570    #[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    /**
577     * A list of comments on a file.
578     */
579    #[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    /**
586     * A list of comments on a file.
587     */
588    #[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/// A restriction for accessing the content of the file.
598#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
599pub struct ContentRestriction {
600    /**
601     * A restriction for accessing the content of the file.
602     */
603    #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")]
604    pub read_only: Option<bool>,
605    /**
606     * A restriction for accessing the content of the file.
607     */
608    #[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    /**
615     * A restriction for accessing the content of the file.
616     */
617    #[serde(
618        default,
619        skip_serializing_if = "Option::is_none",
620        rename = "restrictingUser"
621    )]
622    pub restricting_user: Option<User>,
623    /**
624     * A restriction for accessing the content of the file.
625     */
626    #[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    /**
634     * A restriction for accessing the content of the file.
635     */
636    #[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/// An image file and cropping parameters from which a background image for this shared drive is set. This is a write only field; it can only be set on drive.drives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
646#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
647pub struct BackgroundImageFile {
648    /**
649     * An image file and cropping parameters from which a background image for this shared drive is set. This is a write only field; it can only be set on drive.drives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
650     */
651    #[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    /**
658     * An image file and cropping parameters from which a background image for this shared drive is set. This is a write only field; it can only be set on drive.drives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
659     */
660    #[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    /**
667     * An image file and cropping parameters from which a background image for this shared drive is set. This is a write only field; it can only be set on drive.drives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
668     */
669    #[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    /**
677     * An image file and cropping parameters from which a background image for this shared drive is set. This is a write only field; it can only be set on drive.drives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
678     */
679    #[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/// Capabilities the current user has on this shared drive.
689#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
690pub struct Capabilities {
691    /**
692     * Capabilities the current user has on this shared drive.
693     */
694    #[serde(
695        default,
696        skip_serializing_if = "Option::is_none",
697        rename = "canAddChildren"
698    )]
699    pub can_add_children: Option<bool>,
700    /**
701     * Capabilities the current user has on this shared drive.
702     */
703    #[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    /**
710     * Capabilities the current user has on this shared drive.
711     */
712    #[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    /**
719     * Capabilities the current user has on this shared drive.
720     */
721    #[serde(
722        default,
723        skip_serializing_if = "Option::is_none",
724        rename = "canChangeDriveBackground"
725    )]
726    pub can_change_drive_background: Option<bool>,
727    /**
728     * Capabilities the current user has on this shared drive.
729     */
730    #[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    /**
737     * Capabilities the current user has on this shared drive.
738     */
739    #[serde(
740        default,
741        skip_serializing_if = "Option::is_none",
742        rename = "canComment"
743    )]
744    pub can_comment: Option<bool>,
745    /**
746     * Capabilities the current user has on this shared drive.
747     */
748    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
749    pub can_copy: Option<bool>,
750    /**
751     * Capabilities the current user has on this shared drive.
752     */
753    #[serde(
754        default,
755        skip_serializing_if = "Option::is_none",
756        rename = "canDeleteChildren"
757    )]
758    pub can_delete_children: Option<bool>,
759    /**
760     * Capabilities the current user has on this shared drive.
761     */
762    #[serde(
763        default,
764        skip_serializing_if = "Option::is_none",
765        rename = "canDeleteDrive"
766    )]
767    pub can_delete_drive: Option<bool>,
768    /**
769     * Capabilities the current user has on this shared drive.
770     */
771    #[serde(
772        default,
773        skip_serializing_if = "Option::is_none",
774        rename = "canDownload"
775    )]
776    pub can_download: Option<bool>,
777    /**
778     * Capabilities the current user has on this shared drive.
779     */
780    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
781    pub can_edit: Option<bool>,
782    /**
783     * Capabilities the current user has on this shared drive.
784     */
785    #[serde(
786        default,
787        skip_serializing_if = "Option::is_none",
788        rename = "canListChildren"
789    )]
790    pub can_list_children: Option<bool>,
791    /**
792     * Capabilities the current user has on this shared drive.
793     */
794    #[serde(
795        default,
796        skip_serializing_if = "Option::is_none",
797        rename = "canManageMembers"
798    )]
799    pub can_manage_members: Option<bool>,
800    /**
801     * Capabilities the current user has on this shared drive.
802     */
803    #[serde(
804        default,
805        skip_serializing_if = "Option::is_none",
806        rename = "canReadRevisions"
807    )]
808    pub can_read_revisions: Option<bool>,
809    /**
810     * Capabilities the current user has on this shared drive.
811     */
812    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
813    pub can_rename: Option<bool>,
814    /**
815     * Capabilities the current user has on this shared drive.
816     */
817    #[serde(
818        default,
819        skip_serializing_if = "Option::is_none",
820        rename = "canRenameDrive"
821    )]
822    pub can_rename_drive: Option<bool>,
823    /**
824     * Capabilities the current user has on this shared drive.
825     */
826    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
827    pub can_share: Option<bool>,
828    /**
829     * Capabilities the current user has on this shared drive.
830     */
831    #[serde(
832        default,
833        skip_serializing_if = "Option::is_none",
834        rename = "canTrashChildren"
835    )]
836    pub can_trash_children: Option<bool>,
837}
838
839/// A set of restrictions that apply to this shared drive or items inside this shared drive.
840#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
841pub struct Restrictions {
842    /**
843     * A set of restrictions that apply to this shared drive or items inside this shared drive.
844     */
845    #[serde(
846        default,
847        skip_serializing_if = "Option::is_none",
848        rename = "adminManagedRestrictions"
849    )]
850    pub admin_managed_restrictions: Option<bool>,
851    /**
852     * A set of restrictions that apply to this shared drive or items inside this shared drive.
853     */
854    #[serde(
855        default,
856        skip_serializing_if = "Option::is_none",
857        rename = "copyRequiresWriterPermission"
858    )]
859    pub copy_requires_writer_permission: Option<bool>,
860    /**
861     * A set of restrictions that apply to this shared drive or items inside this shared drive.
862     */
863    #[serde(
864        default,
865        skip_serializing_if = "Option::is_none",
866        rename = "domainUsersOnly"
867    )]
868    pub domain_users_only: Option<bool>,
869    /**
870     * A set of restrictions that apply to this shared drive or items inside this shared drive.
871     */
872    #[serde(
873        default,
874        skip_serializing_if = "Option::is_none",
875        rename = "driveMembersOnly"
876    )]
877    pub drive_members_only: Option<bool>,
878}
879
880/// Representation of a shared drive.
881#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
882pub struct Drive {
883    /**
884     * Representation of a shared drive.
885     */
886    #[serde(
887        default,
888        skip_serializing_if = "Option::is_none",
889        rename = "backgroundImageFile"
890    )]
891    pub background_image_file: Option<BackgroundImageFile>,
892    /**
893     * Representation of a shared drive.
894     */
895    #[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    /**
903     * Representation of a shared drive.
904     */
905    #[serde(default, skip_serializing_if = "Option::is_none")]
906    pub capabilities: Option<Capabilities>,
907    /**
908     * Representation of a shared drive.
909     */
910    #[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    /**
918     * Representation of a shared drive.
919     */
920    #[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    /**
928     * Representation of a shared drive.
929     */
930    #[serde(default, skip_serializing_if = "Option::is_none")]
931    pub hidden: Option<bool>,
932    /**
933     * Representation of a shared drive.
934     */
935    #[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    /**
942     * Representation of a shared drive.
943     */
944    #[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    /**
951     * Representation of a shared drive.
952     */
953    #[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    /**
960     * Representation of a shared drive.
961     */
962    #[serde(default, skip_serializing_if = "Option::is_none")]
963    pub restrictions: Option<Restrictions>,
964    /**
965     * Representation of a shared drive.
966     */
967    #[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/// A list of shared drives.
977#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
978pub struct DriveList {
979    /**
980     * A list of shared drives.
981     */
982    #[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    /**
989     * A list of shared drives.
990     */
991    #[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    /**
998     * A list of shared drives.
999     */
1000    #[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/// Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1010#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1011pub struct FileCapabilities {
1012    /**
1013     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1014     */
1015    #[serde(
1016        default,
1017        skip_serializing_if = "Option::is_none",
1018        rename = "canAddChildren"
1019    )]
1020    pub can_add_children: Option<bool>,
1021    /**
1022     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1023     */
1024    #[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    /**
1031     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1032     */
1033    #[serde(
1034        default,
1035        skip_serializing_if = "Option::is_none",
1036        rename = "canAddMyDriveParent"
1037    )]
1038    pub can_add_my_drive_parent: Option<bool>,
1039    /**
1040     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1041     */
1042    #[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    /**
1049     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1050     */
1051    #[serde(
1052        default,
1053        skip_serializing_if = "Option::is_none",
1054        rename = "canChangeSecurityUpdateEnabled"
1055    )]
1056    pub can_change_security_update_enabled: Option<bool>,
1057    /**
1058     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1059     */
1060    #[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    /**
1067     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1068     */
1069    #[serde(
1070        default,
1071        skip_serializing_if = "Option::is_none",
1072        rename = "canComment"
1073    )]
1074    pub can_comment: Option<bool>,
1075    /**
1076     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1077     */
1078    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
1079    pub can_copy: Option<bool>,
1080    /**
1081     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1082     */
1083    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canDelete")]
1084    pub can_delete: Option<bool>,
1085    /**
1086     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1087     */
1088    #[serde(
1089        default,
1090        skip_serializing_if = "Option::is_none",
1091        rename = "canDeleteChildren"
1092    )]
1093    pub can_delete_children: Option<bool>,
1094    /**
1095     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1096     */
1097    #[serde(
1098        default,
1099        skip_serializing_if = "Option::is_none",
1100        rename = "canDownload"
1101    )]
1102    pub can_download: Option<bool>,
1103    /**
1104     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1105     */
1106    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
1107    pub can_edit: Option<bool>,
1108    /**
1109     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1110     */
1111    #[serde(
1112        default,
1113        skip_serializing_if = "Option::is_none",
1114        rename = "canListChildren"
1115    )]
1116    pub can_list_children: Option<bool>,
1117    /**
1118     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1119     */
1120    #[serde(
1121        default,
1122        skip_serializing_if = "Option::is_none",
1123        rename = "canModifyContent"
1124    )]
1125    pub can_modify_content: Option<bool>,
1126    /**
1127     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1128     */
1129    #[serde(
1130        default,
1131        skip_serializing_if = "Option::is_none",
1132        rename = "canModifyContentRestriction"
1133    )]
1134    pub can_modify_content_restriction: Option<bool>,
1135    /**
1136     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1137     */
1138    #[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    /**
1145     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1146     */
1147    #[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    /**
1154     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1155     */
1156    #[serde(
1157        default,
1158        skip_serializing_if = "Option::is_none",
1159        rename = "canMoveChildrenWithinDrive"
1160    )]
1161    pub can_move_children_within_drive: Option<bool>,
1162    /**
1163     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1164     */
1165    #[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    /**
1172     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1173     */
1174    #[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    /**
1181     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1182     */
1183    #[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    /**
1190     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1191     */
1192    #[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    /**
1199     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1200     */
1201    #[serde(
1202        default,
1203        skip_serializing_if = "Option::is_none",
1204        rename = "canMoveItemWithinDrive"
1205    )]
1206    pub can_move_item_within_drive: Option<bool>,
1207    /**
1208     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1209     */
1210    #[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    /**
1217     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1218     */
1219    #[serde(
1220        default,
1221        skip_serializing_if = "Option::is_none",
1222        rename = "canMoveTeamDriveItem"
1223    )]
1224    pub can_move_team_drive_item: Option<bool>,
1225    /**
1226     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1227     */
1228    #[serde(
1229        default,
1230        skip_serializing_if = "Option::is_none",
1231        rename = "canReadDrive"
1232    )]
1233    pub can_read_drive: Option<bool>,
1234    /**
1235     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1236     */
1237    #[serde(
1238        default,
1239        skip_serializing_if = "Option::is_none",
1240        rename = "canReadRevisions"
1241    )]
1242    pub can_read_revisions: Option<bool>,
1243    /**
1244     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1245     */
1246    #[serde(
1247        default,
1248        skip_serializing_if = "Option::is_none",
1249        rename = "canReadTeamDrive"
1250    )]
1251    pub can_read_team_drive: Option<bool>,
1252    /**
1253     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1254     */
1255    #[serde(
1256        default,
1257        skip_serializing_if = "Option::is_none",
1258        rename = "canRemoveChildren"
1259    )]
1260    pub can_remove_children: Option<bool>,
1261    /**
1262     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1263     */
1264    #[serde(
1265        default,
1266        skip_serializing_if = "Option::is_none",
1267        rename = "canRemoveMyDriveParent"
1268    )]
1269    pub can_remove_my_drive_parent: Option<bool>,
1270    /**
1271     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1272     */
1273    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
1274    pub can_rename: Option<bool>,
1275    /**
1276     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1277     */
1278    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
1279    pub can_share: Option<bool>,
1280    /**
1281     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1282     */
1283    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canTrash")]
1284    pub can_trash: Option<bool>,
1285    /**
1286     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1287     */
1288    #[serde(
1289        default,
1290        skip_serializing_if = "Option::is_none",
1291        rename = "canTrashChildren"
1292    )]
1293    pub can_trash_children: Option<bool>,
1294    /**
1295     * Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
1296     */
1297    #[serde(
1298        default,
1299        skip_serializing_if = "Option::is_none",
1300        rename = "canUntrash"
1301    )]
1302    pub can_untrash: Option<bool>,
1303}
1304
1305/// A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
1306#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1307pub struct Thumbnail {
1308    /**
1309     * A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
1310     */
1311    #[serde(default, skip_serializing_if = "Option::is_none")]
1312    pub image: Option<bytes::Bytes>,
1313    /**
1314     * A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
1315     */
1316    #[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/// Additional information about the content of the file. These fields are never populated in responses.
1326#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1327pub struct ContentHints {
1328    /**
1329     * Additional information about the content of the file. These fields are never populated in responses.
1330     */
1331    #[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    /**
1339     * Additional information about the content of the file. These fields are never populated in responses.
1340     */
1341    #[serde(default, skip_serializing_if = "Option::is_none")]
1342    pub thumbnail: Option<Thumbnail>,
1343}
1344
1345/// Geographic location information stored in the image.
1346#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1347pub struct Location {
1348    /**
1349     * Geographic location information stored in the image.
1350     */
1351    #[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    /**
1358     * Geographic location information stored in the image.
1359     */
1360    #[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    /**
1367     * Geographic location information stored in the image.
1368     */
1369    #[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/// Additional metadata about image media, if available.
1378#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1379pub struct ImageMediaMetadata {
1380    /**
1381     * Additional metadata about image media, if available.
1382     */
1383    #[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    /**
1390     * Additional metadata about image media, if available.
1391     */
1392    #[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    /**
1400     * Additional metadata about image media, if available.
1401     */
1402    #[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    /**
1410     * Additional metadata about image media, if available.
1411     */
1412    #[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    /**
1420     * Additional metadata about image media, if available.
1421     */
1422    #[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    /**
1430     * Additional metadata about image media, if available.
1431     */
1432    #[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    /**
1440     * Additional metadata about image media, if available.
1441     */
1442    #[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    /**
1450     * Additional metadata about image media, if available.
1451     */
1452    #[serde(default, skip_serializing_if = "Option::is_none", rename = "flashUsed")]
1453    pub flash_used: Option<bool>,
1454    /**
1455     * Additional metadata about image media, if available.
1456     */
1457    #[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    /**
1465     * Additional metadata about image media, if available.
1466     */
1467    #[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    /**
1474     * Additional metadata about image media, if available.
1475     */
1476    #[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    /**
1484     * Additional metadata about image media, if available.
1485     */
1486    #[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    /**
1493     * Additional metadata about image media, if available.
1494     */
1495    #[serde(default, skip_serializing_if = "Option::is_none")]
1496    pub location: Option<Location>,
1497    /**
1498     * Additional metadata about image media, if available.
1499     */
1500    #[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    /**
1508     * Additional metadata about image media, if available.
1509     */
1510    #[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    /**
1518     * Additional metadata about image media, if available.
1519     */
1520    #[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    /**
1527     * Additional metadata about image media, if available.
1528     */
1529    #[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    /**
1536     * Additional metadata about image media, if available.
1537     */
1538    #[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    /**
1546     * Additional metadata about image media, if available.
1547     */
1548    #[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    /**
1555     * Additional metadata about image media, if available.
1556     */
1557    #[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    /**
1565     * Additional metadata about image media, if available.
1566     */
1567    #[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/// Contains details about the link URLs that clients are using to refer to this item.
1576#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1577pub struct LinkShareMetadata {
1578    /**
1579     * Contains details about the link URLs that clients are using to refer to this item.
1580     */
1581    #[serde(
1582        default,
1583        skip_serializing_if = "Option::is_none",
1584        rename = "securityUpdateEligible"
1585    )]
1586    pub security_update_eligible: Option<bool>,
1587    /**
1588     * Contains details about the link URLs that clients are using to refer to this item.
1589     */
1590    #[serde(
1591        default,
1592        skip_serializing_if = "Option::is_none",
1593        rename = "securityUpdateEnabled"
1594    )]
1595    pub security_update_enabled: Option<bool>,
1596}
1597
1598/// Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
1599#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1600pub struct ShortcutDetails {
1601    /**
1602     * Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
1603     */
1604    #[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    /**
1612     * Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
1613     */
1614    #[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    /**
1622     * Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
1623     */
1624    #[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/// Additional metadata about video media. This may not be available immediately upon upload.
1634#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1635pub struct VideoMediaMetadata {
1636    /**
1637     * Additional metadata about video media. This may not be available immediately upon upload.
1638     */
1639    #[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    /**
1647     * Additional metadata about video media. This may not be available immediately upon upload.
1648     */
1649    #[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    /**
1656     * Additional metadata about video media. This may not be available immediately upon upload.
1657     */
1658    #[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/// The metadata for a file.
1667#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1668pub struct File {
1669    /**
1670     * The metadata for a file.
1671     */
1672    #[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    /**
1680     * The metadata for a file.
1681     */
1682    #[serde(default, skip_serializing_if = "Option::is_none")]
1683    pub capabilities: Option<FileCapabilities>,
1684    /**
1685     * The metadata for a file.
1686     */
1687    #[serde(
1688        default,
1689        skip_serializing_if = "Option::is_none",
1690        rename = "contentHints"
1691    )]
1692    pub content_hints: Option<ContentHints>,
1693    /**
1694     * The metadata for a file.
1695     */
1696    #[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    /**
1704     * The metadata for a file.
1705     */
1706    #[serde(
1707        default,
1708        skip_serializing_if = "Option::is_none",
1709        rename = "copyRequiresWriterPermission"
1710    )]
1711    pub copy_requires_writer_permission: Option<bool>,
1712    /**
1713     * The metadata for a file.
1714     */
1715    #[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    /**
1723     * The metadata for a file.
1724     */
1725    #[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    /**
1732     * The metadata for a file.
1733     */
1734    #[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    /**
1742     * The metadata for a file.
1743     */
1744    #[serde(
1745        default,
1746        skip_serializing_if = "Option::is_none",
1747        rename = "explicitlyTrashed"
1748    )]
1749    pub explicitly_trashed: Option<bool>,
1750    /**
1751     * The metadata for a file.
1752     */
1753    #[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    /**
1761     * The metadata for a file.
1762     */
1763    #[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    /**
1771     * The metadata for a file.
1772     */
1773    #[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    /**
1781     * The metadata for a file.
1782     */
1783    #[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    /**
1791     * The metadata for a file.
1792     */
1793    #[serde(
1794        default,
1795        skip_serializing_if = "Option::is_none",
1796        rename = "hasAugmentedPermissions"
1797    )]
1798    pub has_augmented_permissions: Option<bool>,
1799    /**
1800     * The metadata for a file.
1801     */
1802    #[serde(
1803        default,
1804        skip_serializing_if = "Option::is_none",
1805        rename = "hasThumbnail"
1806    )]
1807    pub has_thumbnail: Option<bool>,
1808    /**
1809     * The metadata for a file.
1810     */
1811    #[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    /**
1819     * The metadata for a file.
1820     */
1821    #[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    /**
1829     * The metadata for a file.
1830     */
1831    #[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    /**
1838     * The metadata for a file.
1839     */
1840    #[serde(
1841        default,
1842        skip_serializing_if = "Option::is_none",
1843        rename = "imageMediaMetadata"
1844    )]
1845    pub image_media_metadata: Option<ImageMediaMetadata>,
1846    /**
1847     * The metadata for a file.
1848     */
1849    #[serde(
1850        default,
1851        skip_serializing_if = "Option::is_none",
1852        rename = "isAppAuthorized"
1853    )]
1854    pub is_app_authorized: Option<bool>,
1855    /**
1856     * The metadata for a file.
1857     */
1858    #[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    /**
1865     * The metadata for a file.
1866     */
1867    #[serde(
1868        default,
1869        skip_serializing_if = "Option::is_none",
1870        rename = "lastModifyingUser"
1871    )]
1872    pub last_modifying_user: Option<User>,
1873    /**
1874     * The metadata for a file.
1875     */
1876    #[serde(
1877        default,
1878        skip_serializing_if = "Option::is_none",
1879        rename = "linkShareMetadata"
1880    )]
1881    pub link_share_metadata: Option<LinkShareMetadata>,
1882    /**
1883     * The metadata for a file.
1884     */
1885    #[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    /**
1893     * The metadata for a file.
1894     */
1895    #[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    /**
1903     * The metadata for a file.
1904     */
1905    #[serde(
1906        default,
1907        skip_serializing_if = "Option::is_none",
1908        rename = "modifiedByMe"
1909    )]
1910    pub modified_by_me: Option<bool>,
1911    /**
1912     * The metadata for a file.
1913     */
1914    #[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    /**
1922     * The metadata for a file.
1923     */
1924    #[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    /**
1932     * The metadata for a file.
1933     */
1934    #[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    /**
1941     * The metadata for a file.
1942     */
1943    #[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    /**
1951     * The metadata for a file.
1952     */
1953    #[serde(default, skip_serializing_if = "Option::is_none", rename = "ownedByMe")]
1954    pub owned_by_me: Option<bool>,
1955    /**
1956     * The metadata for a file.
1957     */
1958    #[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    /**
1965     * The metadata for a file.
1966     */
1967    #[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    /**
1974     * The metadata for a file.
1975     */
1976    #[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    /**
1984     * The metadata for a file.
1985     */
1986    #[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    /**
1993     * The metadata for a file.
1994     */
1995    #[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    /**
2002     * The metadata for a file.
2003     */
2004    #[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    /**
2012     * The metadata for a file.
2013     */
2014    #[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    /**
2022     * The metadata for a file.
2023     */
2024    #[serde(default, skip_serializing_if = "Option::is_none")]
2025    pub shared: Option<bool>,
2026    /**
2027     * The metadata for a file.
2028     */
2029    #[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    /**
2037     * The metadata for a file.
2038     */
2039    #[serde(
2040        default,
2041        skip_serializing_if = "Option::is_none",
2042        rename = "sharingUser"
2043    )]
2044    pub sharing_user: Option<User>,
2045    /**
2046     * The metadata for a file.
2047     */
2048    #[serde(
2049        default,
2050        skip_serializing_if = "Option::is_none",
2051        rename = "shortcutDetails"
2052    )]
2053    pub shortcut_details: Option<ShortcutDetails>,
2054    /**
2055     * The metadata for a file.
2056     */
2057    #[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    /**
2064     * The metadata for a file.
2065     */
2066    #[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    /**
2073     * The metadata for a file.
2074     */
2075    #[serde(default, skip_serializing_if = "Option::is_none")]
2076    pub starred: Option<bool>,
2077    /**
2078     * The metadata for a file.
2079     */
2080    #[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    /**
2088     * The metadata for a file.
2089     */
2090    #[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    /**
2098     * The metadata for a file.
2099     */
2100    #[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    /**
2108     * The metadata for a file.
2109     */
2110    #[serde(default, skip_serializing_if = "Option::is_none")]
2111    pub trashed: Option<bool>,
2112    /**
2113     * The metadata for a file.
2114     */
2115    #[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    /**
2123     * The metadata for a file.
2124     */
2125    #[serde(
2126        default,
2127        skip_serializing_if = "Option::is_none",
2128        rename = "trashingUser"
2129    )]
2130    pub trashing_user: Option<User>,
2131    /**
2132     * The metadata for a file.
2133     */
2134    #[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    /**
2141     * The metadata for a file.
2142     */
2143    #[serde(
2144        default,
2145        skip_serializing_if = "Option::is_none",
2146        rename = "videoMediaMetadata"
2147    )]
2148    pub video_media_metadata: Option<VideoMediaMetadata>,
2149    /**
2150     * The metadata for a file.
2151     */
2152    #[serde(
2153        default,
2154        skip_serializing_if = "Option::is_none",
2155        rename = "viewedByMe"
2156    )]
2157    pub viewed_by_me: Option<bool>,
2158    /**
2159     * The metadata for a file.
2160     */
2161    #[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    /**
2169     * The metadata for a file.
2170     */
2171    #[serde(
2172        default,
2173        skip_serializing_if = "Option::is_none",
2174        rename = "viewersCanCopyContent"
2175    )]
2176    pub viewers_can_copy_content: Option<bool>,
2177    /**
2178     * The metadata for a file.
2179     */
2180    #[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    /**
2188     * The metadata for a file.
2189     */
2190    #[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    /**
2198     * The metadata for a file.
2199     */
2200    #[serde(
2201        default,
2202        skip_serializing_if = "Option::is_none",
2203        rename = "writersCanShare"
2204    )]
2205    pub writers_can_share: Option<bool>,
2206}
2207
2208/// A list of files.
2209#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2210pub struct FileList {
2211    /**
2212     * A list of files.
2213     */
2214    #[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    /**
2221     * A list of files.
2222     */
2223    #[serde(
2224        default,
2225        skip_serializing_if = "Option::is_none",
2226        rename = "incompleteSearch"
2227    )]
2228    pub incomplete_search: Option<bool>,
2229    /**
2230     * A list of files.
2231     */
2232    #[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    /**
2239     * A list of files.
2240     */
2241    #[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/// A list of generated file IDs which can be provided in create requests.
2251#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2252pub struct GeneratedIds {
2253    /**
2254     * A list of generated file IDs which can be provided in create requests.
2255     */
2256    #[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    /**
2263     * A list of generated file IDs which can be provided in create requests.
2264     */
2265    #[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    /**
2272     * A list of generated file IDs which can be provided in create requests.
2273     */
2274    #[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    /**
2285     * Whether the user has installed the requesting app.
2286     */
2287    #[serde(default, skip_serializing_if = "Option::is_none")]
2288    pub inherited: Option<bool>,
2289    /**
2290     * A link to this theme's background image.
2291     */
2292    #[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    /**
2300     * A link to this theme's background image.
2301     */
2302    #[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    /**
2310     * A link to this theme's background image.
2311     */
2312    #[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    /**
2323     * Whether the user has installed the requesting app.
2324     */
2325    #[serde(default, skip_serializing_if = "Option::is_none")]
2326    pub inherited: Option<bool>,
2327    /**
2328     * A link to this theme's background image.
2329     */
2330    #[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    /**
2338     * A link to this theme's background image.
2339     */
2340    #[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    /**
2347     * A link to this theme's background image.
2348     */
2349    #[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/// A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2359#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2360pub struct Permission {
2361    /**
2362     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2363     */
2364    #[serde(
2365        default,
2366        skip_serializing_if = "Option::is_none",
2367        rename = "allowFileDiscovery"
2368    )]
2369    pub allow_file_discovery: Option<bool>,
2370    /**
2371     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2372     */
2373    #[serde(default, skip_serializing_if = "Option::is_none")]
2374    pub deleted: Option<bool>,
2375    /**
2376     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2377     */
2378    #[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    /**
2386     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2387     */
2388    #[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    /**
2395     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2396     */
2397    #[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    /**
2405     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2406     */
2407    #[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    /**
2415     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2416     */
2417    #[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    /**
2424     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2425     */
2426    #[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    /**
2433     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2434     */
2435    #[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    /**
2443     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2444     */
2445    #[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    /**
2453     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2454     */
2455    #[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    /**
2462     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2463     */
2464    #[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    /**
2472     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2473     */
2474    #[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    /**
2482     * A permission for a file. A permission grants a user, group, domain or the world access to a file or a folder hierarchy.
2483     */
2484    #[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/// A list of permissions for a file.
2493#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2494pub struct PermissionList {
2495    /**
2496     * A list of permissions for a file.
2497     */
2498    #[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    /**
2505     * A list of permissions for a file.
2506     */
2507    #[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    /**
2515     * A list of permissions for a file.
2516     */
2517    #[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/// A reply to a comment on a file.
2526#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2527pub struct Reply {
2528    /**
2529     * A reply to a comment on a file.
2530     */
2531    #[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    /**
2538     * A reply to a comment on a file.
2539     */
2540    #[serde(default, skip_serializing_if = "Option::is_none")]
2541    pub author: Option<User>,
2542    /**
2543     * A reply to a comment on a file.
2544     */
2545    #[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    /**
2552     * A reply to a comment on a file.
2553     */
2554    #[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    /**
2562     * A reply to a comment on a file.
2563     */
2564    #[serde(default, skip_serializing_if = "Option::is_none")]
2565    pub deleted: Option<bool>,
2566    /**
2567     * A reply to a comment on a file.
2568     */
2569    #[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    /**
2577     * A reply to a comment on a file.
2578     */
2579    #[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    /**
2586     * A reply to a comment on a file.
2587     */
2588    #[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    /**
2595     * A reply to a comment on a file.
2596     */
2597    #[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/// A list of replies to a comment on a file.
2607#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2608pub struct ReplyList {
2609    /**
2610     * A list of replies to a comment on a file.
2611     */
2612    #[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    /**
2619     * A list of replies to a comment on a file.
2620     */
2621    #[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    /**
2629     * A list of replies to a comment on a file.
2630     */
2631    #[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/// The metadata for a revision to a file.
2640#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2641pub struct Revision {
2642    /**
2643     * The metadata for a revision to a file.
2644     */
2645    #[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    /**
2653     * The metadata for a revision to a file.
2654     */
2655    #[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    /**
2662     * The metadata for a revision to a file.
2663     */
2664    #[serde(
2665        default,
2666        skip_serializing_if = "Option::is_none",
2667        rename = "keepForever"
2668    )]
2669    pub keep_forever: Option<bool>,
2670    /**
2671     * The metadata for a revision to a file.
2672     */
2673    #[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    /**
2680     * The metadata for a revision to a file.
2681     */
2682    #[serde(
2683        default,
2684        skip_serializing_if = "Option::is_none",
2685        rename = "lastModifyingUser"
2686    )]
2687    pub last_modifying_user: Option<User>,
2688    /**
2689     * The metadata for a revision to a file.
2690     */
2691    #[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    /**
2699     * The metadata for a revision to a file.
2700     */
2701    #[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    /**
2709     * The metadata for a revision to a file.
2710     */
2711    #[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    /**
2719     * The metadata for a revision to a file.
2720     */
2721    #[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    /**
2729     * The metadata for a revision to a file.
2730     */
2731    #[serde(
2732        default,
2733        skip_serializing_if = "Option::is_none",
2734        rename = "publishAuto"
2735    )]
2736    pub publish_auto: Option<bool>,
2737    /**
2738     * The metadata for a revision to a file.
2739     */
2740    #[serde(default, skip_serializing_if = "Option::is_none")]
2741    pub published: Option<bool>,
2742    /**
2743     * The metadata for a revision to a file.
2744     */
2745    #[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    /**
2753     * The metadata for a revision to a file.
2754     */
2755    #[serde(
2756        default,
2757        skip_serializing_if = "Option::is_none",
2758        rename = "publishedOutsideDomain"
2759    )]
2760    pub published_outside_domain: Option<bool>,
2761    /**
2762     * The metadata for a revision to a file.
2763     */
2764    #[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/// A list of revisions of a file.
2773#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2774pub struct RevisionList {
2775    /**
2776     * A list of revisions of a file.
2777     */
2778    #[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    /**
2785     * A list of revisions of a file.
2786     */
2787    #[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    /**
2795     * A list of revisions of a file.
2796     */
2797    #[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    /**
2808     * A link to this theme's background image.
2809     */
2810    #[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    /**
2817     * A link to this theme's background image.
2818     */
2819    #[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/// An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
2829#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2830pub struct TeamDriveBackgroundImageFile {
2831    /**
2832     * An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
2833     */
2834    #[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    /**
2841     * An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
2842     */
2843    #[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    /**
2850     * An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
2851     */
2852    #[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    /**
2860     * An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
2861     */
2862    #[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/// Capabilities the current user has on this Team Drive.
2872#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2873pub struct TeamDriveCapabilities {
2874    /**
2875     * Capabilities the current user has on this Team Drive.
2876     */
2877    #[serde(
2878        default,
2879        skip_serializing_if = "Option::is_none",
2880        rename = "canAddChildren"
2881    )]
2882    pub can_add_children: Option<bool>,
2883    /**
2884     * Capabilities the current user has on this Team Drive.
2885     */
2886    #[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    /**
2893     * Capabilities the current user has on this Team Drive.
2894     */
2895    #[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    /**
2902     * Capabilities the current user has on this Team Drive.
2903     */
2904    #[serde(
2905        default,
2906        skip_serializing_if = "Option::is_none",
2907        rename = "canChangeTeamDriveBackground"
2908    )]
2909    pub can_change_team_drive_background: Option<bool>,
2910    /**
2911     * Capabilities the current user has on this Team Drive.
2912     */
2913    #[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    /**
2920     * Capabilities the current user has on this Team Drive.
2921     */
2922    #[serde(
2923        default,
2924        skip_serializing_if = "Option::is_none",
2925        rename = "canComment"
2926    )]
2927    pub can_comment: Option<bool>,
2928    /**
2929     * Capabilities the current user has on this Team Drive.
2930     */
2931    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canCopy")]
2932    pub can_copy: Option<bool>,
2933    /**
2934     * Capabilities the current user has on this Team Drive.
2935     */
2936    #[serde(
2937        default,
2938        skip_serializing_if = "Option::is_none",
2939        rename = "canDeleteChildren"
2940    )]
2941    pub can_delete_children: Option<bool>,
2942    /**
2943     * Capabilities the current user has on this Team Drive.
2944     */
2945    #[serde(
2946        default,
2947        skip_serializing_if = "Option::is_none",
2948        rename = "canDeleteTeamDrive"
2949    )]
2950    pub can_delete_team_drive: Option<bool>,
2951    /**
2952     * Capabilities the current user has on this Team Drive.
2953     */
2954    #[serde(
2955        default,
2956        skip_serializing_if = "Option::is_none",
2957        rename = "canDownload"
2958    )]
2959    pub can_download: Option<bool>,
2960    /**
2961     * Capabilities the current user has on this Team Drive.
2962     */
2963    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canEdit")]
2964    pub can_edit: Option<bool>,
2965    /**
2966     * Capabilities the current user has on this Team Drive.
2967     */
2968    #[serde(
2969        default,
2970        skip_serializing_if = "Option::is_none",
2971        rename = "canListChildren"
2972    )]
2973    pub can_list_children: Option<bool>,
2974    /**
2975     * Capabilities the current user has on this Team Drive.
2976     */
2977    #[serde(
2978        default,
2979        skip_serializing_if = "Option::is_none",
2980        rename = "canManageMembers"
2981    )]
2982    pub can_manage_members: Option<bool>,
2983    /**
2984     * Capabilities the current user has on this Team Drive.
2985     */
2986    #[serde(
2987        default,
2988        skip_serializing_if = "Option::is_none",
2989        rename = "canReadRevisions"
2990    )]
2991    pub can_read_revisions: Option<bool>,
2992    /**
2993     * Capabilities the current user has on this Team Drive.
2994     */
2995    #[serde(
2996        default,
2997        skip_serializing_if = "Option::is_none",
2998        rename = "canRemoveChildren"
2999    )]
3000    pub can_remove_children: Option<bool>,
3001    /**
3002     * Capabilities the current user has on this Team Drive.
3003     */
3004    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canRename")]
3005    pub can_rename: Option<bool>,
3006    /**
3007     * Capabilities the current user has on this Team Drive.
3008     */
3009    #[serde(
3010        default,
3011        skip_serializing_if = "Option::is_none",
3012        rename = "canRenameTeamDrive"
3013    )]
3014    pub can_rename_team_drive: Option<bool>,
3015    /**
3016     * Capabilities the current user has on this Team Drive.
3017     */
3018    #[serde(default, skip_serializing_if = "Option::is_none", rename = "canShare")]
3019    pub can_share: Option<bool>,
3020    /**
3021     * Capabilities the current user has on this Team Drive.
3022     */
3023    #[serde(
3024        default,
3025        skip_serializing_if = "Option::is_none",
3026        rename = "canTrashChildren"
3027    )]
3028    pub can_trash_children: Option<bool>,
3029}
3030
3031/// A set of restrictions that apply to this Team Drive or items inside this Team Drive.
3032#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3033pub struct TeamDriveRestrictions {
3034    /**
3035     * A set of restrictions that apply to this Team Drive or items inside this Team Drive.
3036     */
3037    #[serde(
3038        default,
3039        skip_serializing_if = "Option::is_none",
3040        rename = "adminManagedRestrictions"
3041    )]
3042    pub admin_managed_restrictions: Option<bool>,
3043    /**
3044     * A set of restrictions that apply to this Team Drive or items inside this Team Drive.
3045     */
3046    #[serde(
3047        default,
3048        skip_serializing_if = "Option::is_none",
3049        rename = "copyRequiresWriterPermission"
3050    )]
3051    pub copy_requires_writer_permission: Option<bool>,
3052    /**
3053     * A set of restrictions that apply to this Team Drive or items inside this Team Drive.
3054     */
3055    #[serde(
3056        default,
3057        skip_serializing_if = "Option::is_none",
3058        rename = "domainUsersOnly"
3059    )]
3060    pub domain_users_only: Option<bool>,
3061    /**
3062     * A set of restrictions that apply to this Team Drive or items inside this Team Drive.
3063     */
3064    #[serde(
3065        default,
3066        skip_serializing_if = "Option::is_none",
3067        rename = "teamMembersOnly"
3068    )]
3069    pub team_members_only: Option<bool>,
3070}
3071
3072/// Deprecated: use the drive collection instead.
3073#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3074pub struct TeamDrive {
3075    /**
3076     * Deprecated: use the drive collection instead.
3077     */
3078    #[serde(
3079        default,
3080        skip_serializing_if = "Option::is_none",
3081        rename = "backgroundImageFile"
3082    )]
3083    pub background_image_file: Option<TeamDriveBackgroundImageFile>,
3084    /**
3085     * Deprecated: use the drive collection instead.
3086     */
3087    #[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    /**
3095     * Deprecated: use the drive collection instead.
3096     */
3097    #[serde(default, skip_serializing_if = "Option::is_none")]
3098    pub capabilities: Option<TeamDriveCapabilities>,
3099    /**
3100     * Deprecated: use the drive collection instead.
3101     */
3102    #[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    /**
3110     * Deprecated: use the drive collection instead.
3111     */
3112    #[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    /**
3120     * Deprecated: use the drive collection instead.
3121     */
3122    #[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    /**
3129     * Deprecated: use the drive collection instead.
3130     */
3131    #[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    /**
3138     * Deprecated: use the drive collection instead.
3139     */
3140    #[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    /**
3147     * Deprecated: use the drive collection instead.
3148     */
3149    #[serde(default, skip_serializing_if = "Option::is_none")]
3150    pub restrictions: Option<TeamDriveRestrictions>,
3151    /**
3152     * Deprecated: use the drive collection instead.
3153     */
3154    #[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/// A list of Team Drives.
3164#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3165pub struct TeamDriveList {
3166    /**
3167     * A list of Team Drives.
3168     */
3169    #[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    /**
3176     * A list of Team Drives.
3177     */
3178    #[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    /**
3186     * A list of Team Drives.
3187     */
3188    #[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/// Information about a Drive user.
3198#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
3199pub struct User {
3200    /**
3201     * Information about a Drive user.
3202     */
3203    #[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    /**
3211     * Information about a Drive user.
3212     */
3213    #[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    /**
3221     * Information about a Drive user.
3222     */
3223    #[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    /**
3230     * Information about a Drive user.
3231     */
3232    #[serde(default, skip_serializing_if = "Option::is_none")]
3233    pub me: Option<bool>,
3234    /**
3235     * Information about a Drive user.
3236     */
3237    #[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    /**
3245     * Information about a Drive user.
3246     */
3247    #[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/**
3257 * Data format for the response.
3258 */
3259#[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/**
3288 * The source of files to list. Deprecated: use 'corpora' instead.
3289 */
3290#[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}