1use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
6pub struct Acl {
7 #[serde(
11 default,
12 skip_serializing_if = "String::is_empty",
13 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
14 )]
15 pub etag: String,
16 #[serde(
20 default,
21 skip_serializing_if = "Vec::is_empty",
22 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
23 )]
24 pub items: Vec<AclRule>,
25 #[serde(
29 default,
30 skip_serializing_if = "String::is_empty",
31 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
32 )]
33 pub kind: String,
34 #[serde(
38 default,
39 skip_serializing_if = "String::is_empty",
40 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
41 rename = "nextPageToken"
42 )]
43 pub next_page_token: String,
44 #[serde(
48 default,
49 skip_serializing_if = "String::is_empty",
50 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
51 rename = "nextSyncToken"
52 )]
53 pub next_sync_token: String,
54}
55
56#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
58pub struct Scope {
59 #[serde(
63 default,
64 skip_serializing_if = "String::is_empty",
65 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
66 rename = "type"
67 )]
68 pub type_: String,
69 #[serde(
73 default,
74 skip_serializing_if = "String::is_empty",
75 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
76 )]
77 pub value: String,
78}
79
80#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
81pub struct AclRule {
82 #[serde(
86 default,
87 skip_serializing_if = "String::is_empty",
88 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
89 )]
90 pub etag: String,
91 #[serde(
95 default,
96 skip_serializing_if = "String::is_empty",
97 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
98 )]
99 pub id: String,
100 #[serde(
104 default,
105 skip_serializing_if = "String::is_empty",
106 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
107 )]
108 pub kind: String,
109 #[serde(
113 default,
114 skip_serializing_if = "String::is_empty",
115 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
116 )]
117 pub role: String,
118 #[serde(default, skip_serializing_if = "Option::is_none")]
122 pub scope: Option<Scope>,
123}
124
125#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
126pub struct Calendar {
127 #[serde(
128 default,
129 skip_serializing_if = "Option::is_none",
130 rename = "conferenceProperties"
131 )]
132 pub conference_properties: Option<ConferenceProperties>,
133 #[serde(
137 default,
138 skip_serializing_if = "String::is_empty",
139 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
140 )]
141 pub description: String,
142 #[serde(
146 default,
147 skip_serializing_if = "String::is_empty",
148 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
149 )]
150 pub etag: String,
151 #[serde(
155 default,
156 skip_serializing_if = "String::is_empty",
157 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
158 )]
159 pub id: String,
160 #[serde(
164 default,
165 skip_serializing_if = "String::is_empty",
166 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
167 )]
168 pub kind: String,
169 #[serde(
173 default,
174 skip_serializing_if = "String::is_empty",
175 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
176 )]
177 pub location: String,
178 #[serde(
182 default,
183 skip_serializing_if = "String::is_empty",
184 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
185 )]
186 pub summary: String,
187 #[serde(
191 default,
192 skip_serializing_if = "String::is_empty",
193 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
194 rename = "timeZone"
195 )]
196 pub time_zone: String,
197}
198
199#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
200pub struct CalendarList {
201 #[serde(
205 default,
206 skip_serializing_if = "String::is_empty",
207 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
208 )]
209 pub etag: String,
210 #[serde(
214 default,
215 skip_serializing_if = "Vec::is_empty",
216 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
217 )]
218 pub items: Vec<CalendarListEntry>,
219 #[serde(
223 default,
224 skip_serializing_if = "String::is_empty",
225 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
226 )]
227 pub kind: String,
228 #[serde(
232 default,
233 skip_serializing_if = "String::is_empty",
234 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
235 rename = "nextPageToken"
236 )]
237 pub next_page_token: String,
238 #[serde(
242 default,
243 skip_serializing_if = "String::is_empty",
244 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
245 rename = "nextSyncToken"
246 )]
247 pub next_sync_token: String,
248}
249
250#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
252pub struct NotificationSettings {
253 #[serde(
257 default,
258 skip_serializing_if = "Vec::is_empty",
259 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
260 )]
261 pub notifications: Vec<CalendarNotification>,
262}
263
264#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
265pub struct CalendarListEntry {
266 #[serde(
270 default,
271 skip_serializing_if = "String::is_empty",
272 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
273 rename = "accessRole"
274 )]
275 pub access_role: String,
276 #[serde(
280 default,
281 skip_serializing_if = "String::is_empty",
282 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
283 rename = "backgroundColor"
284 )]
285 pub background_color: String,
286 #[serde(
290 default,
291 skip_serializing_if = "String::is_empty",
292 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
293 rename = "colorId"
294 )]
295 pub color_id: String,
296 #[serde(
297 default,
298 skip_serializing_if = "Option::is_none",
299 rename = "conferenceProperties"
300 )]
301 pub conference_properties: Option<ConferenceProperties>,
302 #[serde(
306 default,
307 skip_serializing_if = "Vec::is_empty",
308 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
309 rename = "defaultReminders"
310 )]
311 pub default_reminders: Vec<EventReminder>,
312 #[serde(
316 default,
317 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
318 )]
319 pub deleted: bool,
320 #[serde(
324 default,
325 skip_serializing_if = "String::is_empty",
326 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
327 )]
328 pub description: String,
329 #[serde(
333 default,
334 skip_serializing_if = "String::is_empty",
335 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
336 )]
337 pub etag: String,
338 #[serde(
342 default,
343 skip_serializing_if = "String::is_empty",
344 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
345 rename = "foregroundColor"
346 )]
347 pub foreground_color: String,
348 #[serde(
352 default,
353 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
354 )]
355 pub hidden: bool,
356 #[serde(
360 default,
361 skip_serializing_if = "String::is_empty",
362 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
363 )]
364 pub id: String,
365 #[serde(
369 default,
370 skip_serializing_if = "String::is_empty",
371 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
372 )]
373 pub kind: String,
374 #[serde(
378 default,
379 skip_serializing_if = "String::is_empty",
380 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
381 )]
382 pub location: String,
383 #[serde(
387 default,
388 skip_serializing_if = "Option::is_none",
389 rename = "notificationSettings"
390 )]
391 pub notification_settings: Option<NotificationSettings>,
392 #[serde(
396 default,
397 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
398 )]
399 pub primary: bool,
400 #[serde(
404 default,
405 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
406 )]
407 pub selected: bool,
408 #[serde(
412 default,
413 skip_serializing_if = "String::is_empty",
414 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
415 )]
416 pub summary: String,
417 #[serde(
421 default,
422 skip_serializing_if = "String::is_empty",
423 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
424 rename = "summaryOverride"
425 )]
426 pub summary_override: String,
427 #[serde(
431 default,
432 skip_serializing_if = "String::is_empty",
433 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
434 rename = "timeZone"
435 )]
436 pub time_zone: String,
437}
438
439#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
440pub struct CalendarNotification {
441 #[serde(
445 default,
446 skip_serializing_if = "String::is_empty",
447 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
448 )]
449 pub method: String,
450 #[serde(
454 default,
455 skip_serializing_if = "String::is_empty",
456 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
457 rename = "type"
458 )]
459 pub type_: String,
460}
461
462#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
463pub struct Channel {
464 #[serde(
468 default,
469 skip_serializing_if = "String::is_empty",
470 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
471 )]
472 pub address: String,
473 #[serde(
477 default,
478 skip_serializing_if = "crate::utils::zero_i64",
479 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
480 )]
481 pub expiration: i64,
482 #[serde(
486 default,
487 skip_serializing_if = "String::is_empty",
488 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
489 )]
490 pub id: String,
491 #[serde(
495 default,
496 skip_serializing_if = "String::is_empty",
497 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
498 )]
499 pub kind: String,
500 #[serde(
504 default,
505 skip_serializing_if = "String::is_empty",
506 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
507 )]
508 pub params: String,
509 #[serde(
513 default,
514 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
515 )]
516 pub payload: bool,
517 #[serde(
521 default,
522 skip_serializing_if = "String::is_empty",
523 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
524 rename = "resourceId"
525 )]
526 pub resource_id: String,
527 #[serde(
531 default,
532 skip_serializing_if = "String::is_empty",
533 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
534 rename = "resourceUri"
535 )]
536 pub resource_uri: String,
537 #[serde(
541 default,
542 skip_serializing_if = "String::is_empty",
543 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
544 )]
545 pub token: String,
546 #[serde(
550 default,
551 skip_serializing_if = "String::is_empty",
552 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
553 rename = "type"
554 )]
555 pub type_: String,
556}
557
558#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
559pub struct ColorDefinition {
560 #[serde(
564 default,
565 skip_serializing_if = "String::is_empty",
566 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
567 )]
568 pub background: String,
569 #[serde(
573 default,
574 skip_serializing_if = "String::is_empty",
575 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
576 )]
577 pub foreground: String,
578}
579
580#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
581pub struct Colors {
582 #[serde(default, skip_serializing_if = "Option::is_none")]
586 pub calendar: Option<ColorDefinition>,
587 #[serde(default, skip_serializing_if = "Option::is_none")]
591 pub event: Option<ColorDefinition>,
592 #[serde(
596 default,
597 skip_serializing_if = "String::is_empty",
598 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
599 )]
600 pub kind: String,
601 #[serde(
605 default,
606 skip_serializing_if = "Option::is_none",
607 deserialize_with = "crate::utils::date_time_format::deserialize",
608 serialize_with = "crate::utils::google_calendar_date_time_format::serialize"
609 )]
610 pub updated: Option<chrono::DateTime<chrono::Utc>>,
611}
612
613#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
614pub struct ConferenceData {
615 #[serde(
619 default,
620 skip_serializing_if = "String::is_empty",
621 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
622 rename = "conferenceId"
623 )]
624 pub conference_id: String,
625 #[serde(
626 default,
627 skip_serializing_if = "Option::is_none",
628 rename = "conferenceSolution"
629 )]
630 pub conference_solution: Option<ConferenceSolution>,
631 #[serde(
632 default,
633 skip_serializing_if = "Option::is_none",
634 rename = "createRequest"
635 )]
636 pub create_request: Option<CreateConferenceRequest>,
637 #[serde(
643 default,
644 skip_serializing_if = "Vec::is_empty",
645 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
646 rename = "entryPoints"
647 )]
648 pub entry_points: Vec<EntryPoint>,
649 #[serde(
653 default,
654 skip_serializing_if = "String::is_empty",
655 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
656 )]
657 pub notes: String,
658 #[serde(default, skip_serializing_if = "Option::is_none")]
659 pub parameters: Option<ConferenceParameters>,
660 #[serde(
664 default,
665 skip_serializing_if = "String::is_empty",
666 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
667 )]
668 pub signature: String,
669}
670
671#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
672pub struct ConferenceParameters {
673 #[serde(
674 default,
675 skip_serializing_if = "Option::is_none",
676 rename = "addOnParameters"
677 )]
678 pub add_on_parameters: Option<ConferenceParametersAddOn>,
679}
680
681#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
683pub struct Shared {}
684
685#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
686pub struct ConferenceParametersAddOn {
687 #[serde(default, skip_serializing_if = "Option::is_none")]
691 pub parameters: Option<Shared>,
692}
693
694#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
695pub struct ConferenceProperties {
696 #[serde(
704 default,
705 skip_serializing_if = "Vec::is_empty",
706 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
707 rename = "allowedConferenceSolutionTypes"
708 )]
709 pub allowed_conference_solution_types: Vec<String>,
710}
711
712#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
713pub struct ConferenceRequestStatus {
714 #[serde(
718 default,
719 skip_serializing_if = "String::is_empty",
720 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
721 rename = "statusCode"
722 )]
723 pub status_code: String,
724}
725
726#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
727pub struct ConferenceSolution {
728 #[serde(
732 default,
733 skip_serializing_if = "String::is_empty",
734 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
735 rename = "iconUri"
736 )]
737 pub icon_uri: String,
738 #[serde(default, skip_serializing_if = "Option::is_none")]
739 pub key: Option<ConferenceSolutionKey>,
740 #[serde(
744 default,
745 skip_serializing_if = "String::is_empty",
746 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
747 )]
748 pub name: String,
749}
750
751#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
752pub struct ConferenceSolutionKey {
753 #[serde(
757 default,
758 skip_serializing_if = "String::is_empty",
759 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
760 rename = "type"
761 )]
762 pub type_: String,
763}
764
765#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
766pub struct CreateConferenceRequest {
767 #[serde(
768 default,
769 skip_serializing_if = "Option::is_none",
770 rename = "conferenceSolutionKey"
771 )]
772 pub conference_solution_key: Option<ConferenceSolutionKey>,
773 #[serde(
777 default,
778 skip_serializing_if = "String::is_empty",
779 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
780 rename = "requestId"
781 )]
782 pub request_id: String,
783 #[serde(default, skip_serializing_if = "Option::is_none")]
784 pub status: Option<ConferenceRequestStatus>,
785}
786
787#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
788pub struct EntryPoint {
789 #[serde(
793 default,
794 skip_serializing_if = "String::is_empty",
795 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
796 rename = "accessCode"
797 )]
798 pub access_code: String,
799 #[serde(
807 default,
808 skip_serializing_if = "Vec::is_empty",
809 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
810 rename = "entryPointFeatures"
811 )]
812 pub entry_point_features: Vec<String>,
813 #[serde(
817 default,
818 skip_serializing_if = "String::is_empty",
819 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
820 rename = "entryPointType"
821 )]
822 pub entry_point_type: String,
823 #[serde(
827 default,
828 skip_serializing_if = "String::is_empty",
829 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
830 )]
831 pub label: String,
832 #[serde(
836 default,
837 skip_serializing_if = "String::is_empty",
838 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
839 rename = "meetingCode"
840 )]
841 pub meeting_code: String,
842 #[serde(
846 default,
847 skip_serializing_if = "String::is_empty",
848 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
849 )]
850 pub passcode: String,
851 #[serde(
855 default,
856 skip_serializing_if = "String::is_empty",
857 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
858 )]
859 pub password: String,
860 #[serde(
864 default,
865 skip_serializing_if = "String::is_empty",
866 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
867 )]
868 pub pin: String,
869 #[serde(
873 default,
874 skip_serializing_if = "String::is_empty",
875 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
876 rename = "regionCode"
877 )]
878 pub region_code: String,
879 #[serde(
883 default,
884 skip_serializing_if = "String::is_empty",
885 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
886 )]
887 pub uri: String,
888}
889
890#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
891pub struct Error {
892 #[serde(
896 default,
897 skip_serializing_if = "String::is_empty",
898 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
899 )]
900 pub domain: String,
901 #[serde(
905 default,
906 skip_serializing_if = "String::is_empty",
907 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
908 )]
909 pub reason: String,
910}
911
912#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
914pub struct Creator {
915 #[serde(
919 default,
920 skip_serializing_if = "String::is_empty",
921 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
922 rename = "displayName"
923 )]
924 pub display_name: String,
925 #[serde(
929 default,
930 skip_serializing_if = "String::is_empty",
931 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
932 )]
933 pub email: String,
934 #[serde(
938 default,
939 skip_serializing_if = "String::is_empty",
940 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
941 )]
942 pub id: String,
943 #[serde(
947 default,
948 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
949 rename = "self"
950 )]
951 pub self_: bool,
952}
953
954#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
956pub struct ExtendedProperties {
957 #[serde(default, skip_serializing_if = "Option::is_none")]
961 pub private: Option<Shared>,
962 #[serde(default, skip_serializing_if = "Option::is_none")]
966 pub shared: Option<Shared>,
967}
968
969#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
971pub struct Gadget {
972 #[serde(
976 default,
977 skip_serializing_if = "String::is_empty",
978 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
979 )]
980 pub display: String,
981 #[serde(
985 default,
986 skip_serializing_if = "crate::utils::zero_i64",
987 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
988 )]
989 pub height: i64,
990 #[serde(
994 default,
995 skip_serializing_if = "String::is_empty",
996 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
997 rename = "iconLink"
998 )]
999 pub icon_link: String,
1000 #[serde(
1004 default,
1005 skip_serializing_if = "String::is_empty",
1006 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1007 )]
1008 pub link: String,
1009 #[serde(
1013 default,
1014 skip_serializing_if = "String::is_empty",
1015 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1016 )]
1017 pub preferences: String,
1018 #[serde(
1022 default,
1023 skip_serializing_if = "String::is_empty",
1024 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1025 )]
1026 pub title: String,
1027 #[serde(
1031 default,
1032 skip_serializing_if = "String::is_empty",
1033 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1034 rename = "type"
1035 )]
1036 pub type_: String,
1037 #[serde(
1041 default,
1042 skip_serializing_if = "crate::utils::zero_i64",
1043 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1044 )]
1045 pub width: i64,
1046}
1047
1048#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1050pub struct Organizer {
1051 #[serde(
1055 default,
1056 skip_serializing_if = "String::is_empty",
1057 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1058 rename = "displayName"
1059 )]
1060 pub display_name: String,
1061 #[serde(
1065 default,
1066 skip_serializing_if = "String::is_empty",
1067 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1068 )]
1069 pub email: String,
1070 #[serde(
1074 default,
1075 skip_serializing_if = "String::is_empty",
1076 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1077 )]
1078 pub id: String,
1079 #[serde(
1083 default,
1084 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1085 rename = "self"
1086 )]
1087 pub self_: bool,
1088}
1089
1090#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1092pub struct Reminders {
1093 #[serde(
1097 default,
1098 skip_serializing_if = "Vec::is_empty",
1099 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1100 )]
1101 pub overrides: Vec<EventReminder>,
1102 #[serde(
1106 default,
1107 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1108 rename = "useDefault"
1109 )]
1110 pub use_default: bool,
1111}
1112
1113#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1115pub struct Source {
1116 #[serde(
1120 default,
1121 skip_serializing_if = "String::is_empty",
1122 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1123 )]
1124 pub title: String,
1125 #[serde(
1129 default,
1130 skip_serializing_if = "String::is_empty",
1131 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1132 )]
1133 pub url: String,
1134}
1135
1136#[derive(Serialize, Default, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1137pub struct Event {
1138 #[serde(
1142 default,
1143 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1144 rename = "anyoneCanAddSelf"
1145 )]
1146 pub anyone_can_add_self: bool,
1147 #[serde(
1153 default,
1154 skip_serializing_if = "Vec::is_empty",
1155 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1156 )]
1157 pub attachments: Vec<EventAttachment>,
1158 #[serde(
1162 default,
1163 skip_serializing_if = "Vec::is_empty",
1164 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1165 )]
1166 pub attendees: Vec<EventAttendee>,
1167 #[serde(
1171 default,
1172 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1173 rename = "attendeesOmitted"
1174 )]
1175 pub attendees_omitted: bool,
1176 #[serde(
1180 default,
1181 skip_serializing_if = "String::is_empty",
1182 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1183 rename = "colorId"
1184 )]
1185 pub color_id: String,
1186 #[serde(
1187 default,
1188 skip_serializing_if = "Option::is_none",
1189 rename = "conferenceData"
1190 )]
1191 pub conference_data: Option<ConferenceData>,
1192 #[serde(
1196 default,
1197 skip_serializing_if = "Option::is_none",
1198 deserialize_with = "crate::utils::date_time_format::deserialize",
1199 serialize_with = "crate::utils::google_calendar_date_time_format::serialize"
1200 )]
1201 pub created: Option<chrono::DateTime<chrono::Utc>>,
1202 #[serde(default, skip_serializing_if = "Option::is_none")]
1206 pub creator: Option<Creator>,
1207 #[serde(
1211 default,
1212 skip_serializing_if = "String::is_empty",
1213 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1214 )]
1215 pub description: String,
1216 #[serde(default, skip_serializing_if = "Option::is_none")]
1217 pub end: Option<EventDateTime>,
1218 #[serde(
1222 default,
1223 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1224 rename = "endTimeUnspecified"
1225 )]
1226 pub end_time_unspecified: bool,
1227 #[serde(
1231 default,
1232 skip_serializing_if = "String::is_empty",
1233 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1234 )]
1235 pub etag: String,
1236 #[serde(
1240 default,
1241 skip_serializing_if = "String::is_empty",
1242 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1243 rename = "eventType"
1244 )]
1245 pub event_type: String,
1246 #[serde(
1250 default,
1251 skip_serializing_if = "Option::is_none",
1252 rename = "extendedProperties"
1253 )]
1254 pub extended_properties: Option<ExtendedProperties>,
1255 #[serde(default, skip_serializing_if = "Option::is_none")]
1259 pub gadget: Option<Gadget>,
1260 #[serde(
1264 default,
1265 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1266 rename = "guestsCanInviteOthers"
1267 )]
1268 pub guests_can_invite_others: bool,
1269 #[serde(
1273 default,
1274 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1275 rename = "guestsCanModify"
1276 )]
1277 pub guests_can_modify: bool,
1278 #[serde(
1282 default,
1283 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1284 rename = "guestsCanSeeOtherGuests"
1285 )]
1286 pub guests_can_see_other_guests: bool,
1287 #[serde(
1291 default,
1292 skip_serializing_if = "String::is_empty",
1293 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1294 rename = "hangoutLink"
1295 )]
1296 pub hangout_link: String,
1297 #[serde(
1301 default,
1302 skip_serializing_if = "String::is_empty",
1303 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1304 rename = "htmlLink"
1305 )]
1306 pub html_link: String,
1307 #[serde(
1311 default,
1312 skip_serializing_if = "String::is_empty",
1313 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1314 rename = "iCalUID"
1315 )]
1316 pub i_cal_uid: String,
1317 #[serde(
1321 default,
1322 skip_serializing_if = "String::is_empty",
1323 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1324 )]
1325 pub id: String,
1326 #[serde(
1330 default,
1331 skip_serializing_if = "String::is_empty",
1332 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1333 )]
1334 pub kind: String,
1335 #[serde(
1339 default,
1340 skip_serializing_if = "String::is_empty",
1341 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1342 )]
1343 pub location: String,
1344 #[serde(
1348 default,
1349 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1350 )]
1351 pub locked: bool,
1352 #[serde(default, skip_serializing_if = "Option::is_none")]
1356 pub organizer: Option<Organizer>,
1357 #[serde(
1358 default,
1359 skip_serializing_if = "Option::is_none",
1360 rename = "originalStartTime"
1361 )]
1362 pub original_start_time: Option<EventDateTime>,
1363 #[serde(
1367 default,
1368 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1369 rename = "privateCopy"
1370 )]
1371 pub private_copy: bool,
1372 #[serde(
1380 default,
1381 skip_serializing_if = "Vec::is_empty",
1382 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1383 )]
1384 pub recurrence: Vec<String>,
1385 #[serde(
1389 default,
1390 skip_serializing_if = "String::is_empty",
1391 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1392 rename = "recurringEventId"
1393 )]
1394 pub recurring_event_id: String,
1395 #[serde(default, skip_serializing_if = "Option::is_none")]
1399 pub reminders: Option<Reminders>,
1400 #[serde(
1404 default,
1405 skip_serializing_if = "crate::utils::zero_i64",
1406 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1407 )]
1408 pub sequence: i64,
1409 #[serde(default, skip_serializing_if = "Option::is_none")]
1413 pub source: Option<Source>,
1414 #[serde(default, skip_serializing_if = "Option::is_none")]
1415 pub start: Option<EventDateTime>,
1416 #[serde(
1420 default,
1421 skip_serializing_if = "String::is_empty",
1422 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1423 )]
1424 pub status: String,
1425 #[serde(
1429 default,
1430 skip_serializing_if = "String::is_empty",
1431 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1432 )]
1433 pub summary: String,
1434 #[serde(
1438 default,
1439 skip_serializing_if = "String::is_empty",
1440 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1441 )]
1442 pub transparency: String,
1443 #[serde(
1447 default,
1448 skip_serializing_if = "Option::is_none",
1449 deserialize_with = "crate::utils::date_time_format::deserialize",
1450 serialize_with = "crate::utils::google_calendar_date_time_format::serialize"
1451 )]
1452 pub updated: Option<chrono::DateTime<chrono::Utc>>,
1453 #[serde(
1457 default,
1458 skip_serializing_if = "String::is_empty",
1459 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1460 )]
1461 pub visibility: String,
1462}
1463
1464#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1465pub struct EventAttachment {
1466 #[serde(
1470 default,
1471 skip_serializing_if = "String::is_empty",
1472 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1473 rename = "fileId"
1474 )]
1475 pub file_id: String,
1476 #[serde(
1480 default,
1481 skip_serializing_if = "String::is_empty",
1482 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1483 rename = "fileUrl"
1484 )]
1485 pub file_url: String,
1486 #[serde(
1490 default,
1491 skip_serializing_if = "String::is_empty",
1492 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1493 rename = "iconLink"
1494 )]
1495 pub icon_link: String,
1496 #[serde(
1500 default,
1501 skip_serializing_if = "String::is_empty",
1502 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1503 rename = "mimeType"
1504 )]
1505 pub mime_type: String,
1506 #[serde(
1510 default,
1511 skip_serializing_if = "String::is_empty",
1512 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1513 )]
1514 pub title: String,
1515}
1516
1517#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1518pub struct EventAttendee {
1519 #[serde(
1523 default,
1524 skip_serializing_if = "crate::utils::zero_i64",
1525 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
1526 rename = "additionalGuests"
1527 )]
1528 pub additional_guests: i64,
1529 #[serde(
1533 default,
1534 skip_serializing_if = "String::is_empty",
1535 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1536 )]
1537 pub comment: String,
1538 #[serde(
1542 default,
1543 skip_serializing_if = "String::is_empty",
1544 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1545 rename = "displayName"
1546 )]
1547 pub display_name: String,
1548 #[serde(
1552 default,
1553 skip_serializing_if = "String::is_empty",
1554 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1555 )]
1556 pub email: String,
1557 #[serde(
1561 default,
1562 skip_serializing_if = "String::is_empty",
1563 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1564 )]
1565 pub id: String,
1566 #[serde(
1570 default,
1571 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1572 )]
1573 pub optional: bool,
1574 #[serde(
1578 default,
1579 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1580 )]
1581 pub organizer: bool,
1582 #[serde(
1586 default,
1587 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1588 )]
1589 pub resource: bool,
1590 #[serde(
1594 default,
1595 skip_serializing_if = "String::is_empty",
1596 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1597 rename = "responseStatus"
1598 )]
1599 pub response_status: String,
1600 #[serde(
1604 default,
1605 deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1606 rename = "self"
1607 )]
1608 pub self_: bool,
1609}
1610
1611#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1612pub struct EventDateTime {
1613 #[serde(
1617 default,
1618 skip_serializing_if = "Option::is_none",
1619 deserialize_with = "crate::utils::date_format::deserialize"
1620 )]
1621 pub date: Option<chrono::NaiveDate>,
1622 #[serde(
1626 default,
1627 skip_serializing_if = "Option::is_none",
1628 deserialize_with = "crate::utils::date_time_format::deserialize",
1629 serialize_with = "crate::utils::google_calendar_date_time_format::serialize",
1630 rename = "dateTime"
1631 )]
1632 pub date_time: Option<chrono::DateTime<chrono::Utc>>,
1633 #[serde(
1637 default,
1638 skip_serializing_if = "String::is_empty",
1639 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1640 rename = "timeZone"
1641 )]
1642 pub time_zone: String,
1643}
1644
1645#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1646pub struct EventReminder {
1647 #[serde(
1651 default,
1652 skip_serializing_if = "String::is_empty",
1653 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1654 )]
1655 pub method: String,
1656 #[serde(
1660 default,
1661 skip_serializing_if = "crate::utils::zero_i64",
1662 deserialize_with = "crate::utils::deserialize_null_i64::deserialize"
1663 )]
1664 pub minutes: i64,
1665}
1666
1667#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1668pub struct Events {
1669 #[serde(
1673 default,
1674 skip_serializing_if = "String::is_empty",
1675 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1676 rename = "accessRole"
1677 )]
1678 pub access_role: String,
1679 #[serde(
1683 default,
1684 skip_serializing_if = "Vec::is_empty",
1685 deserialize_with = "crate::utils::deserialize_null_vector::deserialize",
1686 rename = "defaultReminders"
1687 )]
1688 pub default_reminders: Vec<EventReminder>,
1689 #[serde(
1693 default,
1694 skip_serializing_if = "String::is_empty",
1695 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1696 )]
1697 pub description: String,
1698 #[serde(
1702 default,
1703 skip_serializing_if = "String::is_empty",
1704 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1705 )]
1706 pub etag: String,
1707 #[serde(
1711 default,
1712 skip_serializing_if = "Vec::is_empty",
1713 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1714 )]
1715 pub items: Vec<Event>,
1716 #[serde(
1720 default,
1721 skip_serializing_if = "String::is_empty",
1722 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1723 )]
1724 pub kind: String,
1725 #[serde(
1729 default,
1730 skip_serializing_if = "String::is_empty",
1731 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1732 rename = "nextPageToken"
1733 )]
1734 pub next_page_token: String,
1735 #[serde(
1739 default,
1740 skip_serializing_if = "String::is_empty",
1741 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1742 rename = "nextSyncToken"
1743 )]
1744 pub next_sync_token: String,
1745 #[serde(
1749 default,
1750 skip_serializing_if = "String::is_empty",
1751 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1752 )]
1753 pub summary: String,
1754 #[serde(
1758 default,
1759 skip_serializing_if = "String::is_empty",
1760 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1761 rename = "timeZone"
1762 )]
1763 pub time_zone: String,
1764 #[serde(
1768 default,
1769 skip_serializing_if = "Option::is_none",
1770 deserialize_with = "crate::utils::date_time_format::deserialize",
1771 serialize_with = "crate::utils::google_calendar_date_time_format::serialize"
1772 )]
1773 pub updated: Option<chrono::DateTime<chrono::Utc>>,
1774}
1775
1776#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1777pub struct FreeBusyCalendar {
1778 #[serde(
1782 default,
1783 skip_serializing_if = "Vec::is_empty",
1784 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1785 )]
1786 pub busy: Vec<TimePeriod>,
1787 #[serde(
1791 default,
1792 skip_serializing_if = "Vec::is_empty",
1793 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1794 )]
1795 pub errors: Vec<Error>,
1796}
1797
1798#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1799pub struct FreeBusyGroup {
1800 #[serde(
1808 default,
1809 skip_serializing_if = "Vec::is_empty",
1810 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1811 )]
1812 pub calendars: Vec<String>,
1813 #[serde(
1817 default,
1818 skip_serializing_if = "Vec::is_empty",
1819 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1820 )]
1821 pub errors: Vec<Error>,
1822}
1823
1824#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1825pub struct FreeBusyRequest {
1826 #[serde(
1830 default,
1831 skip_serializing_if = "crate::utils::zero_i64",
1832 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
1833 rename = "calendarExpansionMax"
1834 )]
1835 pub calendar_expansion_max: i64,
1836 #[serde(
1840 default,
1841 skip_serializing_if = "crate::utils::zero_i64",
1842 deserialize_with = "crate::utils::deserialize_null_i64::deserialize",
1843 rename = "groupExpansionMax"
1844 )]
1845 pub group_expansion_max: i64,
1846 #[serde(
1850 default,
1851 skip_serializing_if = "Vec::is_empty",
1852 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
1853 )]
1854 pub items: Vec<FreeBusyRequestItem>,
1855 #[serde(
1859 default,
1860 skip_serializing_if = "Option::is_none",
1861 deserialize_with = "crate::utils::date_time_format::deserialize",
1862 serialize_with = "crate::utils::google_calendar_date_time_format::serialize",
1863 rename = "timeMax"
1864 )]
1865 pub time_max: Option<chrono::DateTime<chrono::Utc>>,
1866 #[serde(
1870 default,
1871 skip_serializing_if = "Option::is_none",
1872 deserialize_with = "crate::utils::date_time_format::deserialize",
1873 serialize_with = "crate::utils::google_calendar_date_time_format::serialize",
1874 rename = "timeMin"
1875 )]
1876 pub time_min: Option<chrono::DateTime<chrono::Utc>>,
1877 #[serde(
1881 default,
1882 skip_serializing_if = "String::is_empty",
1883 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
1884 rename = "timeZone"
1885 )]
1886 pub time_zone: String,
1887}
1888
1889#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1890pub struct FreeBusyRequestItem {
1891 #[serde(
1895 default,
1896 skip_serializing_if = "String::is_empty",
1897 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1898 )]
1899 pub id: String,
1900}
1901
1902#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1903pub struct FreeBusyResponse {
1904 #[serde(default, skip_serializing_if = "Option::is_none")]
1908 pub calendars: Option<FreeBusyCalendar>,
1909 #[serde(default, skip_serializing_if = "Option::is_none")]
1913 pub groups: Option<FreeBusyGroup>,
1914 #[serde(
1918 default,
1919 skip_serializing_if = "String::is_empty",
1920 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1921 )]
1922 pub kind: String,
1923 #[serde(
1927 default,
1928 skip_serializing_if = "Option::is_none",
1929 deserialize_with = "crate::utils::date_time_format::deserialize",
1930 serialize_with = "crate::utils::google_calendar_date_time_format::serialize",
1931 rename = "timeMax"
1932 )]
1933 pub time_max: Option<chrono::DateTime<chrono::Utc>>,
1934 #[serde(
1938 default,
1939 skip_serializing_if = "Option::is_none",
1940 deserialize_with = "crate::utils::date_time_format::deserialize",
1941 serialize_with = "crate::utils::google_calendar_date_time_format::serialize",
1942 rename = "timeMin"
1943 )]
1944 pub time_min: Option<chrono::DateTime<chrono::Utc>>,
1945}
1946
1947#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1948pub struct Setting {
1949 #[serde(
1953 default,
1954 skip_serializing_if = "String::is_empty",
1955 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1956 )]
1957 pub etag: String,
1958 #[serde(
1962 default,
1963 skip_serializing_if = "String::is_empty",
1964 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1965 )]
1966 pub id: String,
1967 #[serde(
1971 default,
1972 skip_serializing_if = "String::is_empty",
1973 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1974 )]
1975 pub kind: String,
1976 #[serde(
1980 default,
1981 skip_serializing_if = "String::is_empty",
1982 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1983 )]
1984 pub value: String,
1985}
1986
1987#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1988pub struct Settings {
1989 #[serde(
1993 default,
1994 skip_serializing_if = "String::is_empty",
1995 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
1996 )]
1997 pub etag: String,
1998 #[serde(
2002 default,
2003 skip_serializing_if = "Vec::is_empty",
2004 deserialize_with = "crate::utils::deserialize_null_vector::deserialize"
2005 )]
2006 pub items: Vec<Setting>,
2007 #[serde(
2011 default,
2012 skip_serializing_if = "String::is_empty",
2013 deserialize_with = "crate::utils::deserialize_null_string::deserialize"
2014 )]
2015 pub kind: String,
2016 #[serde(
2020 default,
2021 skip_serializing_if = "String::is_empty",
2022 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2023 rename = "nextPageToken"
2024 )]
2025 pub next_page_token: String,
2026 #[serde(
2030 default,
2031 skip_serializing_if = "String::is_empty",
2032 deserialize_with = "crate::utils::deserialize_null_string::deserialize",
2033 rename = "nextSyncToken"
2034 )]
2035 pub next_sync_token: String,
2036}
2037
2038#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
2039pub struct TimePeriod {
2040 #[serde(
2044 default,
2045 skip_serializing_if = "Option::is_none",
2046 deserialize_with = "crate::utils::date_time_format::deserialize",
2047 serialize_with = "crate::utils::google_calendar_date_time_format::serialize"
2048 )]
2049 pub end: Option<chrono::DateTime<chrono::Utc>>,
2050 #[serde(
2054 default,
2055 skip_serializing_if = "Option::is_none",
2056 deserialize_with = "crate::utils::date_time_format::deserialize",
2057 serialize_with = "crate::utils::google_calendar_date_time_format::serialize"
2058 )]
2059 pub start: Option<chrono::DateTime<chrono::Utc>>,
2060}
2061
2062#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2066pub enum Alt {
2067 #[serde(rename = "json")]
2068 Json,
2069 #[serde(rename = "")]
2070 #[default]
2071 Noop,
2072 #[serde(other)]
2073 FallthroughString,
2074}
2075
2076impl std::fmt::Display for Alt {
2077 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2078 match self {
2079 Alt::Json => "json",
2080 Alt::Noop => "",
2081 Alt::FallthroughString => "*",
2082 }
2083 .fmt(f)
2084 }
2085}
2086
2087impl Alt {
2088 pub fn is_noop(&self) -> bool {
2089 matches!(self, Alt::Noop)
2090 }
2091}
2092
2093#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2097pub enum OrderBy {
2098 #[serde(rename = "startTime")]
2099 StartTime,
2100 #[serde(rename = "updated")]
2101 Updated,
2102 #[serde(rename = "")]
2103 #[default]
2104 Noop,
2105 #[serde(other)]
2106 FallthroughString,
2107}
2108
2109impl std::fmt::Display for OrderBy {
2110 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2111 match self {
2112 OrderBy::StartTime => "startTime",
2113 OrderBy::Updated => "updated",
2114 OrderBy::Noop => "",
2115 OrderBy::FallthroughString => "*",
2116 }
2117 .fmt(f)
2118 }
2119}
2120
2121impl OrderBy {
2122 pub fn is_noop(&self) -> bool {
2123 matches!(self, OrderBy::Noop)
2124 }
2125}
2126
2127#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2131pub enum SendUpdates {
2132 #[serde(rename = "all")]
2133 All,
2134 #[serde(rename = "externalOnly")]
2135 ExternalOnly,
2136 #[serde(rename = "none")]
2137 None,
2138 #[serde(rename = "")]
2139 #[default]
2140 Noop,
2141 #[serde(other)]
2142 FallthroughString,
2143}
2144
2145impl std::fmt::Display for SendUpdates {
2146 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2147 match self {
2148 SendUpdates::All => "all",
2149 SendUpdates::ExternalOnly => "externalOnly",
2150 SendUpdates::None => "none",
2151 SendUpdates::Noop => "",
2152 SendUpdates::FallthroughString => "*",
2153 }
2154 .fmt(f)
2155 }
2156}
2157
2158impl SendUpdates {
2159 pub fn is_noop(&self) -> bool {
2160 matches!(self, SendUpdates::Noop)
2161 }
2162}
2163
2164#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema, Default)]
2168pub enum MinAccessRole {
2169 #[serde(rename = "freeBusyReader")]
2170 FreeBusyReader,
2171 #[serde(rename = "owner")]
2172 Owner,
2173 #[serde(rename = "reader")]
2174 Reader,
2175 #[serde(rename = "writer")]
2176 Writer,
2177 #[serde(rename = "")]
2178 #[default]
2179 Noop,
2180 #[serde(other)]
2181 FallthroughString,
2182}
2183
2184impl std::fmt::Display for MinAccessRole {
2185 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2186 match self {
2187 MinAccessRole::FreeBusyReader => "freeBusyReader",
2188 MinAccessRole::Owner => "owner",
2189 MinAccessRole::Reader => "reader",
2190 MinAccessRole::Writer => "writer",
2191 MinAccessRole::Noop => "",
2192 MinAccessRole::FallthroughString => "*",
2193 }
2194 .fmt(f)
2195 }
2196}
2197
2198impl MinAccessRole {
2199 pub fn is_noop(&self) -> bool {
2200 matches!(self, MinAccessRole::Noop)
2201 }
2202}