google_calendar/
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 Acl {
7    /**
8     * ETag of the collection.
9     */
10    #[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    /**
17     * List of rules on the access control list.
18     */
19    #[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    /**
26     * ETag of the collection.
27     */
28    #[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    /**
35     * ETag of the collection.
36     */
37    #[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    /**
45     * ETag of the collection.
46     */
47    #[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/// The extent to which calendar access is granted by this ACL rule.
57#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
58pub struct Scope {
59    /**
60     * The extent to which calendar access is granted by this ACL rule.
61     */
62    #[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    /**
70     * The extent to which calendar access is granted by this ACL rule.
71     */
72    #[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    /**
83     * ETag of the collection.
84     */
85    #[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    /**
92     * ETag of the collection.
93     */
94    #[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    /**
101     * ETag of the collection.
102     */
103    #[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    /**
110     * ETag of the collection.
111     */
112    #[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    /**
119     * The extent to which calendar access is granted by this ACL rule.
120     */
121    #[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    /**
134     * ETag of the collection.
135     */
136    #[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    /**
143     * ETag of the collection.
144     */
145    #[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    /**
152     * ETag of the collection.
153     */
154    #[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    /**
161     * ETag of the collection.
162     */
163    #[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    /**
170     * ETag of the collection.
171     */
172    #[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    /**
179     * ETag of the collection.
180     */
181    #[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    /**
188     * ETag of the collection.
189     */
190    #[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    /**
202     * ETag of the collection.
203     */
204    #[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    /**
211     * Calendars that are present on the user's calendar list.
212     */
213    #[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    /**
220     * ETag of the collection.
221     */
222    #[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    /**
229     * ETag of the collection.
230     */
231    #[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    /**
239     * ETag of the collection.
240     */
241    #[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/// The notifications that the authenticated user is receiving for this calendar.
251#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
252pub struct NotificationSettings {
253    /**
254     * The notifications that the authenticated user is receiving for this calendar.
255     */
256    #[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    /**
267     * ETag of the collection.
268     */
269    #[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    /**
277     * ETag of the collection.
278     */
279    #[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    /**
287     * ETag of the collection.
288     */
289    #[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    /**
303     * The default reminders that the authenticated user has for this calendar.
304     */
305    #[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    /**
313     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
314     */
315    #[serde(
316        default,
317        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
318    )]
319    pub deleted: bool,
320    /**
321     * ETag of the collection.
322     */
323    #[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    /**
330     * ETag of the collection.
331     */
332    #[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    /**
339     * ETag of the collection.
340     */
341    #[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    /**
349     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
350     */
351    #[serde(
352        default,
353        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
354    )]
355    pub hidden: bool,
356    /**
357     * ETag of the collection.
358     */
359    #[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    /**
366     * ETag of the collection.
367     */
368    #[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    /**
375     * ETag of the collection.
376     */
377    #[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    /**
384     * The notifications that the authenticated user is receiving for this calendar.
385     */
386    #[serde(
387        default,
388        skip_serializing_if = "Option::is_none",
389        rename = "notificationSettings"
390    )]
391    pub notification_settings: Option<NotificationSettings>,
392    /**
393     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
394     */
395    #[serde(
396        default,
397        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
398    )]
399    pub primary: bool,
400    /**
401     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
402     */
403    #[serde(
404        default,
405        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
406    )]
407    pub selected: bool,
408    /**
409     * ETag of the collection.
410     */
411    #[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    /**
418     * ETag of the collection.
419     */
420    #[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    /**
428     * ETag of the collection.
429     */
430    #[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    /**
442     * ETag of the collection.
443     */
444    #[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    /**
451     * ETag of the collection.
452     */
453    #[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    /**
465     * ETag of the collection.
466     */
467    #[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    /**
474     * Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
475     */
476    #[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    /**
483     * ETag of the collection.
484     */
485    #[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    /**
492     * ETag of the collection.
493     */
494    #[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    /**
501     * Additional parameters controlling delivery channel behavior. Optional.
502     */
503    #[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    /**
510     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
511     */
512    #[serde(
513        default,
514        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
515    )]
516    pub payload: bool,
517    /**
518     * ETag of the collection.
519     */
520    #[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    /**
528     * ETag of the collection.
529     */
530    #[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    /**
538     * ETag of the collection.
539     */
540    #[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    /**
547     * ETag of the collection.
548     */
549    #[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    /**
561     * ETag of the collection.
562     */
563    #[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    /**
570     * ETag of the collection.
571     */
572    #[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    /**
583     * A global palette of calendar colors, mapping from the color ID to its definition. A calendarListEntry resource refers to one of these color IDs in its colorId field. Read-only.
584     */
585    #[serde(default, skip_serializing_if = "Option::is_none")]
586    pub calendar: Option<ColorDefinition>,
587    /**
588     * A global palette of calendar colors, mapping from the color ID to its definition. A calendarListEntry resource refers to one of these color IDs in its colorId field. Read-only.
589     */
590    #[serde(default, skip_serializing_if = "Option::is_none")]
591    pub event: Option<ColorDefinition>,
592    /**
593     * ETag of the collection.
594     */
595    #[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    /**
602     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
603     */
604    #[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    /**
616     * ETag of the collection.
617     */
618    #[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    /**
638     * Information about individual conference entry points, such as URLs or phone numbers.
639     *  All of them must belong to the same conference.
640     *  Either conferenceSolution and at least one entryPoint, or createRequest is required.
641     */
642    #[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    /**
650     * ETag of the collection.
651     */
652    #[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    /**
661     * ETag of the collection.
662     */
663    #[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/// Properties that are shared between copies of the event on other attendees' calendars.
682#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
683pub struct Shared {}
684
685#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
686pub struct ConferenceParametersAddOn {
687    /**
688     * Properties that are shared between copies of the event on other attendees' calendars.
689     */
690    #[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    /**
697     * The types of conference solutions that are supported for this calendar.
698     *  The possible values are:
699     *  - "eventHangout"
700     *  - "eventNamedHangout"
701     *  - "hangoutsMeet"  Optional.
702     */
703    #[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    /**
715     * ETag of the collection.
716     */
717    #[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    /**
729     * ETag of the collection.
730     */
731    #[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    /**
741     * ETag of the collection.
742     */
743    #[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    /**
754     * ETag of the collection.
755     */
756    #[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    /**
774     * ETag of the collection.
775     */
776    #[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    /**
790     * ETag of the collection.
791     */
792    #[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    /**
800     * The types of conference solutions that are supported for this calendar.
801     *  The possible values are:
802     *  - "eventHangout"
803     *  - "eventNamedHangout"
804     *  - "hangoutsMeet"  Optional.
805     */
806    #[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    /**
814     * ETag of the collection.
815     */
816    #[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    /**
824     * ETag of the collection.
825     */
826    #[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    /**
833     * ETag of the collection.
834     */
835    #[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    /**
843     * ETag of the collection.
844     */
845    #[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    /**
852     * ETag of the collection.
853     */
854    #[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    /**
861     * ETag of the collection.
862     */
863    #[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    /**
870     * ETag of the collection.
871     */
872    #[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    /**
880     * ETag of the collection.
881     */
882    #[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    /**
893     * ETag of the collection.
894     */
895    #[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    /**
902     * ETag of the collection.
903     */
904    #[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/// The creator of the event. Read-only.
913#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
914pub struct Creator {
915    /**
916     * The creator of the event. Read-only.
917     */
918    #[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    /**
926     * The creator of the event. Read-only.
927     */
928    #[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    /**
935     * The creator of the event. Read-only.
936     */
937    #[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    /**
944     * The creator of the event. Read-only.
945     */
946    #[serde(
947        default,
948        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
949        rename = "self"
950    )]
951    pub self_: bool,
952}
953
954/// Extended properties of the event.
955#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
956pub struct ExtendedProperties {
957    /**
958     * Extended properties of the event.
959     */
960    #[serde(default, skip_serializing_if = "Option::is_none")]
961    pub private: Option<Shared>,
962    /**
963     * Extended properties of the event.
964     */
965    #[serde(default, skip_serializing_if = "Option::is_none")]
966    pub shared: Option<Shared>,
967}
968
969/// A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
970#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
971pub struct Gadget {
972    /**
973     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
974     */
975    #[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    /**
982     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
983     */
984    #[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    /**
991     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
992     */
993    #[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    /**
1001     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
1002     */
1003    #[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    /**
1010     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
1011     */
1012    #[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    /**
1019     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
1020     */
1021    #[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    /**
1028     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
1029     */
1030    #[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    /**
1038     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
1039     */
1040    #[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/// The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
1049#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1050pub struct Organizer {
1051    /**
1052     * The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
1053     */
1054    #[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    /**
1062     * The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
1063     */
1064    #[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    /**
1071     * The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
1072     */
1073    #[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    /**
1080     * The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
1081     */
1082    #[serde(
1083        default,
1084        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1085        rename = "self"
1086    )]
1087    pub self_: bool,
1088}
1089
1090/// Information about the event's reminders for the authenticated user.
1091#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1092pub struct Reminders {
1093    /**
1094     * Information about the event's reminders for the authenticated user.
1095     */
1096    #[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    /**
1103     * Information about the event's reminders for the authenticated user.
1104     */
1105    #[serde(
1106        default,
1107        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1108        rename = "useDefault"
1109    )]
1110    pub use_default: bool,
1111}
1112
1113/// Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
1114#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, JsonSchema)]
1115pub struct Source {
1116    /**
1117     * Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
1118     */
1119    #[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    /**
1126     * Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
1127     */
1128    #[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    /**
1139     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1140     */
1141    #[serde(
1142        default,
1143        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1144        rename = "anyoneCanAddSelf"
1145    )]
1146    pub anyone_can_add_self: bool,
1147    /**
1148     * File attachments for the event. Currently only Google Drive attachments are supported.
1149     *  In order to modify attachments the supportsAttachments request parameter should be set to true.
1150     *  There can be at most 25 attachments per event,
1151     */
1152    #[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    /**
1159     * The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
1160     */
1161    #[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    /**
1168     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1169     */
1170    #[serde(
1171        default,
1172        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1173        rename = "attendeesOmitted"
1174    )]
1175    pub attendees_omitted: bool,
1176    /**
1177     * ETag of the collection.
1178     */
1179    #[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    /**
1193     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1194     */
1195    #[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    /**
1203     * The creator of the event. Read-only.
1204     */
1205    #[serde(default, skip_serializing_if = "Option::is_none")]
1206    pub creator: Option<Creator>,
1207    /**
1208     * ETag of the collection.
1209     */
1210    #[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    /**
1219     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1220     */
1221    #[serde(
1222        default,
1223        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1224        rename = "endTimeUnspecified"
1225    )]
1226    pub end_time_unspecified: bool,
1227    /**
1228     * ETag of the collection.
1229     */
1230    #[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    /**
1237     * ETag of the collection.
1238     */
1239    #[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    /**
1247     * Extended properties of the event.
1248     */
1249    #[serde(
1250        default,
1251        skip_serializing_if = "Option::is_none",
1252        rename = "extendedProperties"
1253    )]
1254    pub extended_properties: Option<ExtendedProperties>,
1255    /**
1256     * A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
1257     */
1258    #[serde(default, skip_serializing_if = "Option::is_none")]
1259    pub gadget: Option<Gadget>,
1260    /**
1261     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1262     */
1263    #[serde(
1264        default,
1265        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1266        rename = "guestsCanInviteOthers"
1267    )]
1268    pub guests_can_invite_others: bool,
1269    /**
1270     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1271     */
1272    #[serde(
1273        default,
1274        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1275        rename = "guestsCanModify"
1276    )]
1277    pub guests_can_modify: bool,
1278    /**
1279     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1280     */
1281    #[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    /**
1288     * ETag of the collection.
1289     */
1290    #[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    /**
1298     * ETag of the collection.
1299     */
1300    #[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    /**
1308     * ETag of the collection.
1309     */
1310    #[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    /**
1318     * ETag of the collection.
1319     */
1320    #[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    /**
1327     * ETag of the collection.
1328     */
1329    #[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    /**
1336     * ETag of the collection.
1337     */
1338    #[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    /**
1345     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1346     */
1347    #[serde(
1348        default,
1349        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1350    )]
1351    pub locked: bool,
1352    /**
1353     * The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
1354     */
1355    #[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    /**
1364     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1365     */
1366    #[serde(
1367        default,
1368        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize",
1369        rename = "privateCopy"
1370    )]
1371    pub private_copy: bool,
1372    /**
1373     * The types of conference solutions that are supported for this calendar.
1374     *  The possible values are:
1375     *  - "eventHangout"
1376     *  - "eventNamedHangout"
1377     *  - "hangoutsMeet"  Optional.
1378     */
1379    #[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    /**
1386     * ETag of the collection.
1387     */
1388    #[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    /**
1396     * Information about the event's reminders for the authenticated user.
1397     */
1398    #[serde(default, skip_serializing_if = "Option::is_none")]
1399    pub reminders: Option<Reminders>,
1400    /**
1401     * Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
1402     */
1403    #[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    /**
1410     * Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
1411     */
1412    #[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    /**
1417     * ETag of the collection.
1418     */
1419    #[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    /**
1426     * ETag of the collection.
1427     */
1428    #[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    /**
1435     * ETag of the collection.
1436     */
1437    #[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    /**
1444     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1445     */
1446    #[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    /**
1454     * ETag of the collection.
1455     */
1456    #[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    /**
1467     * ETag of the collection.
1468     */
1469    #[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    /**
1477     * ETag of the collection.
1478     */
1479    #[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    /**
1487     * ETag of the collection.
1488     */
1489    #[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    /**
1497     * ETag of the collection.
1498     */
1499    #[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    /**
1507     * ETag of the collection.
1508     */
1509    #[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    /**
1520     * Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
1521     */
1522    #[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    /**
1530     * ETag of the collection.
1531     */
1532    #[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    /**
1539     * ETag of the collection.
1540     */
1541    #[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    /**
1549     * ETag of the collection.
1550     */
1551    #[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    /**
1558     * ETag of the collection.
1559     */
1560    #[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    /**
1567     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1568     */
1569    #[serde(
1570        default,
1571        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1572    )]
1573    pub optional: bool,
1574    /**
1575     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1576     */
1577    #[serde(
1578        default,
1579        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1580    )]
1581    pub organizer: bool,
1582    /**
1583     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1584     */
1585    #[serde(
1586        default,
1587        deserialize_with = "crate::utils::deserialize_null_boolean::deserialize"
1588    )]
1589    pub resource: bool,
1590    /**
1591     * ETag of the collection.
1592     */
1593    #[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    /**
1601     * Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False.
1602     */
1603    #[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    /**
1614     * The date, in the format "yyyy-mm-dd", if this is an all-day event.
1615     */
1616    #[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    /**
1623     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1624     */
1625    #[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    /**
1634     * ETag of the collection.
1635     */
1636    #[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    /**
1648     * ETag of the collection.
1649     */
1650    #[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    /**
1657     * Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
1658     */
1659    #[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    /**
1670     * ETag of the collection.
1671     */
1672    #[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    /**
1680     * The default reminders that the authenticated user has for this calendar.
1681     */
1682    #[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    /**
1690     * ETag of the collection.
1691     */
1692    #[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    /**
1699     * ETag of the collection.
1700     */
1701    #[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    /**
1708     * List of events on the calendar.
1709     */
1710    #[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    /**
1717     * ETag of the collection.
1718     */
1719    #[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    /**
1726     * ETag of the collection.
1727     */
1728    #[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    /**
1736     * ETag of the collection.
1737     */
1738    #[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    /**
1746     * ETag of the collection.
1747     */
1748    #[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    /**
1755     * ETag of the collection.
1756     */
1757    #[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    /**
1765     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1766     */
1767    #[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    /**
1779     * List of time ranges during which this calendar should be regarded as busy.
1780     */
1781    #[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    /**
1788     * Optional error(s) (if computation for the calendar failed).
1789     */
1790    #[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    /**
1801     * The types of conference solutions that are supported for this calendar.
1802     *  The possible values are:
1803     *  - "eventHangout"
1804     *  - "eventNamedHangout"
1805     *  - "hangoutsMeet"  Optional.
1806     */
1807    #[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    /**
1814     * Optional error(s) (if computation for the calendar failed).
1815     */
1816    #[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    /**
1827     * Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
1828     */
1829    #[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    /**
1837     * Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
1838     */
1839    #[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    /**
1847     * List of calendars and/or groups to query.
1848     */
1849    #[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    /**
1856     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1857     */
1858    #[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    /**
1867     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1868     */
1869    #[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    /**
1878     * ETag of the collection.
1879     */
1880    #[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    /**
1892     * ETag of the collection.
1893     */
1894    #[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    /**
1905     * List of free/busy information for calendars.
1906     */
1907    #[serde(default, skip_serializing_if = "Option::is_none")]
1908    pub calendars: Option<FreeBusyCalendar>,
1909    /**
1910     * Expansion of groups.
1911     */
1912    #[serde(default, skip_serializing_if = "Option::is_none")]
1913    pub groups: Option<FreeBusyGroup>,
1914    /**
1915     * ETag of the collection.
1916     */
1917    #[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    /**
1924     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1925     */
1926    #[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    /**
1935     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
1936     */
1937    #[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    /**
1950     * ETag of the collection.
1951     */
1952    #[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    /**
1959     * ETag of the collection.
1960     */
1961    #[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    /**
1968     * ETag of the collection.
1969     */
1970    #[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    /**
1977     * ETag of the collection.
1978     */
1979    #[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    /**
1990     * ETag of the collection.
1991     */
1992    #[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    /**
1999     * List of user settings.
2000     */
2001    #[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    /**
2008     * ETag of the collection.
2009     */
2010    #[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    /**
2017     * ETag of the collection.
2018     */
2019    #[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    /**
2027     * ETag of the collection.
2028     */
2029    #[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    /**
2041     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
2042     */
2043    #[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    /**
2051     * Last modification time of the color palette (as a RFC3339 timestamp). Read-only.
2052     */
2053    #[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/**
2063 * Data format for the response.
2064 */
2065#[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/**
2094 * The order of the events returned in the result. Optional. The default is an unspecified, stable order.
2095 */
2096#[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/**
2128 * Whether to send notifications about the creation of the new event. Note that some emails might still be sent. The default is false.
2129 */
2130#[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/**
2165 * The minimum access role for the user in the returned entries. Optional. The default is no restriction.
2166 */
2167#[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}