forked from nylas/nylas-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathevents.py
More file actions
932 lines (722 loc) · 30.4 KB
/
events.py
File metadata and controls
932 lines (722 loc) · 30.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
from dataclasses import dataclass, field
from typing import Dict, Any, List, Optional, Union, Literal
from dataclasses_json import dataclass_json, config
from typing_extensions import TypedDict, NotRequired
from nylas.models.list_query_params import ListQueryParams
Status = Literal["confirmed", "tentative", "cancelled"]
""" Literal representing the status of an Event. """
Visibility = Literal["default", "public", "private"]
""" Literal representation of visibility of the Event. """
ParticipantStatus = Literal["noreply", "yes", "no", "maybe"]
""" Literal representing the status of an Event participant. """
SendRsvpStatus = Literal["yes", "no", "maybe"]
""" Literal representing the status of an RSVP. """
EventType = Literal["default", "outOfOffice", "focusTime", "workingLocation"]
""" Literal representing the event type to filter by. """
@dataclass_json
@dataclass
class Participant:
"""
Interface representing an Event participant.
Attributes:
email: Participant's email address.
name: Participant's name.
status: Participant's status.
comment: Comment by the participant.
phone_number: Participant's phone number.
"""
email: str
status: Optional[ParticipantStatus] = None
name: Optional[str] = None
comment: Optional[str] = None
phone_number: Optional[str] = None
class EmailName(TypedDict):
"""
Interface representing an email address and optional name.
Attributes:
email: Email address.
name: Full name.
"""
email: str
name: NotRequired[str]
@dataclass_json
@dataclass
class Time:
"""
Class representation of a specific point in time.
A meeting at 2pm would be represented as a time subobject.
Attributes:
time: A UNIX timestamp representing the time of occurrence.
timezone: If timezone is present, then the value for time will be read with timezone.
Timezone using IANA formatted string. (e.g. "America/New_York")
"""
time: int
timezone: Optional[str] = None
object: str = "time"
@dataclass_json
@dataclass
class Timespan:
"""
Class representation of a time span with start and end times.
An hour lunch meeting would be represented as timespan subobjects.
Attributes:
start_time: The Event's start time.
end_time: The Event's end time.
start_timezone: The timezone of the start time, represented by an IANA-formatted string
(for example, "America/New_York").
end_timezone: The timezone of the end time, represented by an IANA-formatted string
(for example, "America/New_York").
"""
start_time: int
end_time: int
start_timezone: Optional[str] = None
end_timezone: Optional[str] = None
object: str = "timespan"
@dataclass_json
@dataclass
class Date:
"""
Class representation of an entire day spans without specific times.
Your birthday and holidays would be represented as date subobjects.
Attributes:
date: Date of occurrence in ISO 8601 format.
"""
date: str
object: str = "date"
@dataclass_json
@dataclass
class Datespan:
"""
Class representation of a specific dates without clock-based start or end times.
A business quarter or academic semester would be represented as datespan subobjects.
Attributes:
start_date: The start date in ISO 8601 format.
end_date: The end date in ISO 8601 format.
"""
start_date: str
end_date: str
object: str = "datespan"
When = Union[Time, Timespan, Date, Datespan]
""" Union type representing the different types of Event time configurations. """
def _decode_when(when: dict) -> When:
"""
Decode a when object into a When object.
Args:
when: The when object to decode.
Returns:
The decoded When object.
"""
if "object" not in when:
raise ValueError("Invalid when object, no 'object' field found.")
if when["object"] == "time":
return Time.from_dict(when)
if when["object"] == "timespan":
return Timespan.from_dict(when)
if when["object"] == "date":
return Date.from_dict(when)
if when["object"] == "datespan":
return Datespan.from_dict(when)
raise ValueError(
f"Invalid when object, unknown 'object' field found: {when['object']}"
)
ConferencingProvider = Literal[
"Google Meet", "Zoom Meeting", "Microsoft Teams", "GoToMeeting", "WebEx"
]
""" Literal for the different conferencing providers. """
@dataclass_json
@dataclass
class DetailsConfig:
"""
Class representation of a conferencing details config object
Attributes:
meeting_code: The conferencing meeting code. Used for Zoom.
password: The conferencing meeting password. Used for Zoom.
url: The conferencing meeting url.
pin: The conferencing meeting pin. Used for Google Meet.
phone: The conferencing meeting phone numbers. Used for Google Meet.
"""
meeting_code: Optional[str] = None
password: Optional[str] = None
url: Optional[str] = None
pin: Optional[str] = None
phone: Optional[List[str]] = None
@dataclass_json
@dataclass
class Details:
"""
Class representation of a conferencing details object
Attributes:
provider: The conferencing provider
details: The conferencing details
"""
provider: ConferencingProvider
details: Dict[str, Any]
@dataclass_json
@dataclass
class Autocreate:
"""
Class representation of a conferencing autocreate object
Attributes:
provider: The conferencing provider
autocreate: Empty dict to indicate an intention to autocreate a video link.
Additional provider settings may be included in autocreate.settings, but Nylas does not validate these.
"""
provider: ConferencingProvider
autocreate: Dict[str, Any]
Conferencing = Union[Details, Autocreate]
""" Union type representing the different types of conferencing configurations. """
def _decode_conferencing(conferencing: dict) -> Union[Conferencing, None]:
"""
Decode a when object into a When object.
Args:
when: The when object to decode.
Returns:
The decoded When object.
"""
if not conferencing:
return None
if "details" in conferencing:
return Details.from_dict(conferencing)
if "autocreate" in conferencing:
return Autocreate.from_dict(conferencing)
# Handle case where provider exists but details/autocreate doesn't
if "provider" in conferencing:
# Create a Details object with empty details
details_dict = {
"provider": conferencing["provider"],
"details": (
conferencing.get("conf_settings", {})
if "conf_settings" in conferencing
else {}
),
}
return Details.from_dict(details_dict)
raise ValueError(f"Invalid conferencing object, unknown type found: {conferencing}")
@dataclass_json
@dataclass
class ReminderOverride:
"""
Class representation of a reminder override object.
Attributes:
reminder_minutes: The user's preferred Event reminder time, in minutes.
Reminder minutes are in the following format: "[20]".
reminder_method: The user's preferred method for Event reminders (Google only).
"""
reminder_minutes: Optional[int] = None
reminder_method: Optional[str] = None
@dataclass_json
@dataclass
class Reminders:
"""
Class representation of a reminder object.
Attributes:
use_default: Whether to use the default reminder settings for the calendar.
overrides: A list of reminders for the event if use_default is set to false.
If left empty or omitted while use_default is set to false, the event will have no reminders.
"""
use_default: bool
overrides: Optional[List[ReminderOverride]] = None
@dataclass_json
@dataclass
class NotetakerMeetingSettings:
"""
Class representing Notetaker meeting settings.
Attributes:
video_recording: When true, Notetaker records the meeting's video.
audio_recording: When true, Notetaker records the meeting's audio.
transcription: When true, Notetaker transcribes the meeting's audio.
"""
video_recording: Optional[bool] = True
audio_recording: Optional[bool] = True
transcription: Optional[bool] = True
@dataclass_json
@dataclass
class EventNotetaker:
"""
Class representing Notetaker settings for an event.
Attributes:
id: The Notetaker bot ID.
name: The display name for the Notetaker bot.
meeting_settings: Notetaker Meeting Settings.
"""
id: Optional[str] = None
name: Optional[str] = "Nylas Notetaker"
meeting_settings: Optional[NotetakerMeetingSettings] = None
@dataclass_json
@dataclass
class Event:
"""
Class representation of a Nylas Event object.
Attributes:
id: Globally unique object identifier.
grant_id: Grant ID representing the user's account.
calendar_id: The Event's Calendar ID.
busy: Whether to show this Event's time block as available on shared or public calendars.
read_only: If the Event's participants are able to edit the Event.
created_at: Unix timestamp representing the Event's creation time.
updated_at: Unix timestamp representing the time when the Event was last updated.
participants: List of participants invited to the Event. Participants may be people, rooms, or resources.
when: Representation of an Event's time and duration.
conferencing: Representation of an Event's conferencing details.
object: The type of object.
description: The Event's description.
location: The Event's location (for example, a physical address or a meeting room).
ical_uid: Unique ID for iCalendar standard, allowing you to identify events across calendaring systems.
Recurring events may share the same value. Can be "null" for events synced before the year 2020.
title: The Event's title.
html_link: A link to the Event in the provider's UI.
hide_participants: Whether participants of the Event should be hidden.
metadata: List of key-value pairs storing additional data.
creator: The user who created the Event.
organizer: The organizer of the Event.
recurrence: A list of RRULE and EXDATE strings.
reminders: List of reminders for the Event.
status: The Event's status.
visibility: The Event's visibility (private or public).
capacity: Sets the maximum number of participants that may attend the event.
master_event_id: For recurring events, this field contains the main (master) event's ID.
notetaker: Notetaker meeting bot settings.
"""
id: str
grant_id: str
calendar_id: str
busy: bool
participants: List[Participant]
when: When = field(metadata=config(decoder=_decode_when))
conferencing: Optional[Conferencing] = field(
default=None, metadata=config(decoder=_decode_conferencing)
)
object: str = "event"
visibility: Optional[Visibility] = None
read_only: Optional[bool] = None
description: Optional[str] = None
location: Optional[str] = None
ical_uid: Optional[str] = None
title: Optional[str] = None
html_link: Optional[str] = None
hide_participants: Optional[bool] = None
metadata: Optional[Dict[str, Any]] = None
creator: Optional[EmailName] = None
organizer: Optional[EmailName] = None
recurrence: Optional[List[str]] = None
reminders: Optional[Reminders] = None
status: Optional[Status] = None
capacity: Optional[int] = None
created_at: Optional[int] = None
updated_at: Optional[int] = None
master_event_id: Optional[str] = None
notetaker: Optional[EventNotetaker] = None
class CreateParticipant(TypedDict):
"""
Interface representing a participant for event creation.
Attributes:
email: Participant's email address.
name: Participant's name.
comment: Comment by the participant.
phone_number: Participant's phone number.
"""
email: str
name: NotRequired[str]
comment: NotRequired[str]
phone_number: NotRequired[str]
class UpdateParticipant(TypedDict):
"""
Interface representing a participant for updating an event.
Attributes:
email: Participant's email address.
name: Participant's name.
comment: Comment by the participant.
phoneNumber: Participant's phone number.
"""
email: NotRequired[str]
name: NotRequired[str]
comment: NotRequired[str]
phoneNumber: NotRequired[str]
class WritableDetailsConfig(TypedDict):
"""
Interface representing a writable conferencing details config object
Attributes:
meeting_code: The conferencing meeting code. Used for Zoom.
password: The conferencing meeting password. Used for Zoom.
url: The conferencing meeting url.
pin: The conferencing meeting pin. Used for Google Meet.
phone: The conferencing meeting phone numbers. Used for Google Meet.
"""
meeting_code: NotRequired[str]
password: NotRequired[str]
url: NotRequired[str]
pin: NotRequired[str]
phone: NotRequired[List[str]]
class WriteableReminderOverride(TypedDict):
"""
Interface representing a writable reminder override object.
Attributes:
reminder_minutes: The user's preferred Event reminder time, in minutes.
Reminder minutes are in the following format: "[20]".
reminder_method: The user's preferred method for Event reminders (Google only).
"""
reminder_minutes: NotRequired[int]
reminder_method: NotRequired[str]
class CreateReminders(TypedDict):
"""
Interface representing a reminder object for event creation.
Attributes:
use_default: Whether to use the default reminder settings for the calendar.
overrides: A list of reminders for the event if use_default is set to false.
If left empty or omitted while use_default is set to false, the event will have no reminders.
"""
use_default: bool
overrides: NotRequired[List[WriteableReminderOverride]]
class UpdateReminders(TypedDict):
"""
Interface representing a reminder object for updating an event.
Attributes:
use_default: Whether to use the default reminder settings for the calendar.
overrides: A list of reminders for the event if use_default is set to false.
If left empty or omitted while use_default is set to false, the event will have no reminders.
"""
use_default: NotRequired[bool]
overrides: NotRequired[List[WriteableReminderOverride]]
class CreateDetails(TypedDict):
"""
Interface representing a conferencing details object for event creation
Attributes:
provider: The conferencing provider
details: The conferencing details
"""
provider: ConferencingProvider
details: WritableDetailsConfig
class UpdateDetails(TypedDict):
"""
Interface representing a conferencing details object for updating an event
Attributes:
provider: The conferencing provider
details: The conferencing details
"""
provider: NotRequired[ConferencingProvider]
details: NotRequired[WritableDetailsConfig]
class CreateAutocreate(TypedDict):
"""
Interface representing a conferencing autocreate object for event creation
Attributes:
provider: The conferencing provider
autocreate: Empty dict to indicate an intention to autocreate a video link.
Additional provider settings may be included in autocreate.settings, but Nylas does not validate these.
"""
provider: ConferencingProvider
autocreate: Dict[str, Any]
class UpdateAutocreate(TypedDict):
"""
Interface representing a conferencing autocreate object for event creation
Attributes:
provider: The conferencing provider
autocreate: Empty dict to indicate an intention to autocreate a video link.
Additional provider settings may be included in autocreate.settings, but Nylas does not validate these.
"""
provider: NotRequired[ConferencingProvider]
autocreate: NotRequired[Dict[str, Any]]
CreateConferencing = Union[CreateDetails, CreateAutocreate]
""" Union type representing the different types of conferencing configurations for Event creation. """
UpdateConferencing = Union[UpdateDetails, UpdateAutocreate]
""" Union type representing the different types of conferencing configurations for updating an Event."""
# When
class CreateTime(TypedDict):
"""
Interface representing a specific point in time for event creation.
A meeting at 2pm would be represented as a time subobject.
Attributes:
time: A UNIX timestamp representing the time of occurrence.
timezone: If timezone is present, then the value for time will be read with timezone.
Timezone using IANA formatted string. (e.g. "America/New_York")
"""
time: int
timezone: NotRequired[str]
class UpdateTime(TypedDict):
"""
Interface representing a specific point in time for updating an event.
A meeting at 2pm would be represented as a time subobject.
Attributes:
time: A UNIX timestamp representing the time of occurrence.
timezone: If timezone is present, then the value for time will be read with timezone.
Timezone using IANA formatted string. (e.g. "America/New_York")
"""
time: NotRequired[int]
timezone: NotRequired[str]
class CreateTimespan(TypedDict):
"""
Interface representing a time span with start and end times for event creation.
An hour lunch meeting would be represented as timespan subobjects.
Attributes:
start_time: The start time of the event.
end_time: The end time of the event.
start_timezone: The timezone of the start time. Timezone using IANA formatted string. (e.g. "America/New_York")
end_timezone: The timezone of the end time. Timezone using IANA formatted string. (e.g. "America/New_York")
"""
start_time: int
end_time: int
start_timezone: NotRequired[str]
end_timezone: NotRequired[str]
class UpdateTimespan(TypedDict):
"""
Interface representing a time span with start and end times for updating an event.
An hour lunch meeting would be represented as timespan subobjects.
Attributes:
start_time: The start time of the event.
end_time: The end time of the event.
start_timezone: The timezone of the start time. Timezone using IANA formatted string. (e.g. "America/New_York")
end_timezone: The timezone of the end time. Timezone using IANA formatted string. (e.g. "America/New_York")
"""
start_time: NotRequired[int]
end_time: NotRequired[int]
start_timezone: NotRequired[str]
end_timezone: NotRequired[str]
class CreateDate(TypedDict):
"""
Interface representing an entire day spans without specific times for event creation.
Your birthday and holidays would be represented as date subobjects.
Attributes:
date: Date of occurrence in ISO 8601 format.
"""
date: str
class UpdateDate(TypedDict):
"""
Interface representing an entire day spans without specific times for updating an event.
Your birthday and holidays would be represented as date subobjects.
Attributes:
date: Date of occurrence in ISO 8601 format.
"""
date: NotRequired[str]
class CreateDatespan(TypedDict):
"""
Interface representing a specific dates without clock-based start or end times for event creation.
A business quarter or academic semester would be represented as datespan subobjects.
Attributes:
start_date: The start date in ISO 8601 format.
end_date: The end date in ISO 8601 format.
"""
start_date: str
end_date: str
class UpdateDatespan(TypedDict):
"""
Interface representing a specific dates without clock-based start or end times for updating an event.
A business quarter or academic semester would be represented as datespan subobjects.
Attributes:
start_date: The start date in ISO 8601 format.
end_date: The end date in ISO 8601 format.
"""
start_date: NotRequired[str]
end_date: NotRequired[str]
CreateWhen = Union[CreateTime, CreateTimespan, CreateDate, CreateDatespan]
""" Union type representing the different types of event time configurations for Event creation. """
UpdateWhen = Union[UpdateTime, UpdateTimespan, UpdateDate, UpdateDatespan]
""" Union type representing the different types of event time configurations for updating an Event."""
class EventNotetakerSettings(TypedDict):
"""
Interface representing Notetaker meeting settings for an event.
Attributes:
video_recording: When true, Notetaker records the meeting's video.
audio_recording: When true, Notetaker records the meeting's audio.
transcription: When true, Notetaker transcribes the meeting's audio.
"""
video_recording: NotRequired[bool]
audio_recording: NotRequired[bool]
transcription: NotRequired[bool]
class EventNotetakerRequest(TypedDict):
"""
Interface representing Notetaker settings for an event.
Attributes:
id: The Notetaker bot ID.
name: The display name for the Notetaker bot.
meeting_settings: Notetaker Meeting Settings.
"""
id: NotRequired[str]
name: NotRequired[str]
meeting_settings: NotRequired[EventNotetakerSettings]
class CreateEventNotetaker(TypedDict):
"""
Class representing Notetaker settings for an event.
Attributes:
name: The display name for the Notetaker bot.
meeting_settings: Notetaker Meeting Settings.
"""
name: Optional[str] = "Nylas Notetaker"
meeting_settings: Optional[EventNotetakerSettings] = None
class CreateEventRequest(TypedDict):
"""
Interface representing a request to create an event.
Attributes:
when: When the event occurs.
title: The title of the event.
busy: Whether the event is busy or free.
description: The description of the event.
location: The location of the event.
conferencing: The conferencing details of the event.
reminders: A list of reminders to send for the event.
If left empty or omitted, the event uses the provider defaults.
metadata: Metadata associated with the event.
participants: The participants of the event.
recurrence: The recurrence rules of the event.
visibility: The visibility of the event.
capacity: The capacity of the event.
hide_participants: Whether to hide participants of the event.
notetaker: Notetaker meeting bot settings.
"""
when: CreateWhen
title: NotRequired[str]
busy: NotRequired[bool]
description: NotRequired[str]
location: NotRequired[str]
conferencing: NotRequired[CreateConferencing]
reminders: NotRequired[CreateReminders]
metadata: NotRequired[Dict[str, Any]]
participants: NotRequired[List[CreateParticipant]]
recurrence: NotRequired[List[str]]
visibility: NotRequired[Visibility]
capacity: NotRequired[int]
hide_participants: NotRequired[bool]
notetaker: NotRequired[CreateEventNotetaker]
class UpdateEventRequest(TypedDict):
"""
Interface representing a request to update an event.
Attributes:
when: When the event occurs.
title: The title of the event.
busy: Whether the event is busy or free.
description: The description of the event.
location: The location of the event.
conferencing: The conferencing details of the event.
reminders: A list of reminders to send for the event.
metadata: Metadata associated with the event.
participants: The participants of the event.
recurrence: The recurrence rules of the event.
visibility: The visibility of the event.
capacity: The capacity of the event.
hide_participants: Whether to hide participants of the event.
notetaker: Notetaker meeting bot settings.
"""
when: NotRequired[UpdateWhen]
title: NotRequired[str]
busy: NotRequired[bool]
description: NotRequired[str]
location: NotRequired[str]
conferencing: NotRequired[UpdateConferencing]
reminders: NotRequired[UpdateReminders]
metadata: NotRequired[Dict[str, Any]]
participants: NotRequired[List[UpdateParticipant]]
recurrence: NotRequired[List[str]]
visibility: NotRequired[Visibility]
capacity: NotRequired[int]
hide_participants: NotRequired[bool]
notetaker: NotRequired[EventNotetakerRequest]
class ListEventQueryParams(ListQueryParams):
"""
Interface representing the query parameters for listing events.
Attributes:
calendar_id: Specify calendar ID of the event. "primary" is a supported value
indicating the user's primary calendar.
show_cancelled: Return events that have a status of cancelled.
If an event is recurring, then it returns no matter the value set.
Different providers have different semantics for cancelled events.
title: Return events matching the specified title.
description: Return events matching the specified description.
location: Return events matching the specified location.
start: Return events starting after the specified unix timestamp.
Defaults to the current timestamp. Not respected by metadata filtering.
end: Return events ending before the specified unix timestamp.
Defaults to a month from now. Not respected by metadata filtering.
metadata_pair: Pass in your metadata key and value pair to search for metadata.
expand_recurring: If true, the response will include an event for each occurrence of a recurring event within
the requested time range.
If false, only a single primary event will be returned for each recurring event.
Cannot be used when filtering on metadata. Defaults to false.
busy: Returns events with a busy status of true.
order_by: Order results by the specified field.
Currently only start is supported.
event_type (NotRequired[List[EventType]]): (Google only) Filter events by event type.
You can pass the query parameter multiple times to select or exclude multiple event types.
master_event_id (NotRequired[str]): Filter for instances of recurring events with the
specified master_event_id. Not respected by metadata filtering.
tentative_as_busy: When set to false, treats tentative calendar events as busy:false.
Only applicable for Microsoft and EWS calendar providers. Defaults to true.
select: Comma-separated list of fields to return in the response.
This allows you to receive only the portion of object data that you're interested in.
limit (NotRequired[int]): The maximum number of objects to return.
This field defaults to 50. The maximum allowed value is 200.
page_token (NotRequired[str]): An identifier that specifies which page of data to return.
This value should be taken from a ListResponse object's next_cursor parameter.
"""
calendar_id: str
show_cancelled: NotRequired[bool]
title: NotRequired[str]
description: NotRequired[str]
location: NotRequired[str]
start: NotRequired[int]
end: NotRequired[int]
metadata_pair: NotRequired[Dict[str, Any]]
expand_recurring: NotRequired[bool]
busy: NotRequired[bool]
order_by: NotRequired[str]
event_type: NotRequired[List[EventType]]
master_event_id: NotRequired[str]
select: NotRequired[str]
tentative_as_busy: NotRequired[bool]
class CreateEventQueryParams(TypedDict):
"""
Interface representing of the query parameters for creating an event.
Attributes:
calendar_id: The ID of the calendar to create the event in.
notify_participants: Email notifications containing the calendar event is sent to all event participants.
tentative_as_busy: When set to false, treats tentative calendar events as busy:false.
Only applicable for Microsoft and EWS calendar providers. Defaults to true.
"""
calendar_id: str
notify_participants: NotRequired[bool]
tentative_as_busy: NotRequired[bool]
class FindEventQueryParams(TypedDict):
"""
Interface representing of the query parameters for finding an event.
Attributes:
calendar_id: Calendar ID to find the event in.
"primary" is a supported value indicating the user's primary calendar.
tentative_as_busy: When set to false, treats tentative calendar events as busy:false.
Only applicable for Microsoft and EWS calendar providers. Defaults to true.
"""
calendar_id: str
tentative_as_busy: NotRequired[bool]
UpdateEventQueryParams = CreateEventQueryParams
""" Interface representing of the query parameters for updating an Event. """
DestroyEventQueryParams = CreateEventQueryParams
""" Interface representing of the query parameters for destroying an Event. """
class SendRsvpQueryParams(TypedDict):
"""
Interface representing of the query parameters for an event.
Attributes:
calendar_id: Calendar ID to find the event in.
"primary" is a supported value indicating the user's primary calendar.
"""
calendar_id: str
class SendRsvpRequest(TypedDict):
"""
Interface representing a request to send an RSVP.
Attributes:
status: The status of the RSVP.
"""
status: SendRsvpStatus
class ListImportEventsQueryParams(ListQueryParams):
"""
Interface representing the query parameters for listing imported events.
Attributes:
calendar_id: Specify calendar ID to import events to. "primary" is a supported value
indicating the user's primary calendar.
start: Filter for events that start at or after the specified time, in Unix timestamp format.
end: Filter for events that end at or before the specified time, in Unix timestamp format.
select: Comma-separated list of fields to return in the response.
This allows you to receive only the portion of object data that you're interested in.
page_token: An identifier that specifies which page of data to return.
This value should be taken from a ListResponse object's next_cursor parameter.
"""
calendar_id: str
start: NotRequired[int]
end: NotRequired[int]
select: NotRequired[str]
page_token: NotRequired[str]