1use alloc::{string::String, vec::Vec};
13
14use serde::{Deserialize, Serialize};
15
16use crate::v1::{
17 field::MsgraphField,
18 rest::users::{
19 contacts::{MsgraphPhysicalAddress, MsgraphSingleValueExtendedProperty},
20 messages::{MsgraphEmailAddress, MsgraphImportance, MsgraphItemBody, MsgraphRecipient},
21 },
22};
23
24pub mod calendar_view;
25pub mod create;
26pub mod delete;
27pub mod delta;
28pub mod get;
29#[cfg(feature = "ical")]
30pub mod ical;
31pub mod instances;
32pub mod list;
33pub mod update;
34
35#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
41#[serde(rename_all = "camelCase")]
42pub struct MsgraphEvent {
43 #[serde(default, skip_serializing_if = "String::is_empty")]
45 pub id: String,
46 #[serde(default, rename = "iCalUId", skip_serializing_if = "Option::is_none")]
49 pub ical_uid: Option<String>,
50 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub change_key: Option<String>,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
55 pub created_date_time: Option<String>,
56 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub last_modified_date_time: Option<String>,
59 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
62 pub event_type: Option<MsgraphEventType>,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
65 pub series_master_id: Option<String>,
66 #[serde(default, skip_serializing_if = "Option::is_none")]
69 pub original_start: Option<String>,
70 #[serde(default, skip_serializing_if = "Option::is_none")]
72 pub original_start_time_zone: Option<String>,
73 #[serde(default, skip_serializing_if = "Option::is_none")]
75 pub original_end_time_zone: Option<String>,
76 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
78 pub subject: MsgraphField<String>,
79 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
81 pub body: MsgraphField<MsgraphItemBody>,
82 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
84 pub start: MsgraphField<MsgraphDateTimeTimeZone>,
85 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
87 pub end: MsgraphField<MsgraphDateTimeTimeZone>,
88 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
91 pub is_all_day: MsgraphField<bool>,
92 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
94 pub location: MsgraphField<MsgraphLocation>,
95 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
97 pub recurrence: MsgraphField<MsgraphPatternedRecurrence>,
98 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
100 pub attendees: MsgraphField<Vec<MsgraphAttendee>>,
101 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
103 pub organizer: MsgraphField<MsgraphRecipient>,
104 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
106 pub categories: MsgraphField<Vec<String>>,
107 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
109 pub show_as: MsgraphField<MsgraphFreeBusyStatus>,
110 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
112 pub sensitivity: MsgraphField<MsgraphSensitivity>,
113 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
115 pub importance: MsgraphField<MsgraphImportance>,
116 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
118 pub is_reminder_on: MsgraphField<bool>,
119 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
121 pub reminder_minutes_before_start: MsgraphField<u32>,
122 #[serde(default, skip_serializing_if = "Option::is_none")]
124 pub is_cancelled: Option<bool>,
125 #[serde(default, skip_serializing_if = "Option::is_none")]
127 pub is_organizer: Option<bool>,
128 #[serde(default, skip_serializing_if = "Option::is_none")]
130 pub response_status: Option<MsgraphResponseStatus>,
131 #[serde(default, skip_serializing_if = "Option::is_none")]
133 pub web_link: Option<String>,
134 #[serde(default, skip_serializing_if = "Vec::is_empty")]
137 pub cancelled_occurrences: Vec<String>,
138 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
140 pub single_value_extended_properties: MsgraphField<Vec<MsgraphSingleValueExtendedProperty>>,
141}
142
143#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
148#[serde(rename_all = "camelCase")]
149pub struct MsgraphDateTimeTimeZone {
150 pub date_time: String,
153 #[serde(default, skip_serializing_if = "Option::is_none")]
155 pub time_zone: Option<String>,
156}
157
158#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
160#[serde(rename_all = "camelCase")]
161pub struct MsgraphLocation {
162 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub display_name: Option<String>,
165 #[serde(default, skip_serializing_if = "Option::is_none")]
167 pub location_uri: Option<String>,
168 #[serde(default, skip_serializing_if = "Option::is_none")]
170 pub address: Option<MsgraphPhysicalAddress>,
171}
172
173#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
175#[serde(rename_all = "camelCase")]
176pub struct MsgraphPatternedRecurrence {
177 pub pattern: MsgraphRecurrencePattern,
179 pub range: MsgraphRecurrenceRange,
181}
182
183#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
185#[serde(rename_all = "camelCase")]
186pub struct MsgraphRecurrencePattern {
187 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
189 pub pattern_type: Option<MsgraphRecurrencePatternType>,
190 #[serde(default, skip_serializing_if = "Option::is_none")]
192 pub interval: Option<u32>,
193 #[serde(default, skip_serializing_if = "Option::is_none")]
195 pub month: Option<u32>,
196 #[serde(default, skip_serializing_if = "Option::is_none")]
198 pub day_of_month: Option<u32>,
199 #[serde(default, skip_serializing_if = "Vec::is_empty")]
201 pub days_of_week: Vec<MsgraphDayOfWeek>,
202 #[serde(default, skip_serializing_if = "Option::is_none")]
204 pub first_day_of_week: Option<MsgraphDayOfWeek>,
205 #[serde(default, skip_serializing_if = "Option::is_none")]
207 pub index: Option<MsgraphWeekIndex>,
208}
209
210#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
212#[serde(rename_all = "camelCase")]
213pub struct MsgraphRecurrenceRange {
214 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
216 pub range_type: Option<MsgraphRecurrenceRangeType>,
217 #[serde(default, skip_serializing_if = "Option::is_none")]
219 pub start_date: Option<String>,
220 #[serde(default, skip_serializing_if = "Option::is_none")]
222 pub end_date: Option<String>,
223 #[serde(default, skip_serializing_if = "Option::is_none")]
225 pub recurrence_time_zone: Option<String>,
226 #[serde(default, skip_serializing_if = "Option::is_none")]
228 pub number_of_occurrences: Option<u32>,
229}
230
231#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
233#[serde(rename_all = "camelCase")]
234pub struct MsgraphAttendee {
235 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
237 pub attendee_type: Option<MsgraphAttendeeType>,
238 #[serde(default, skip_serializing_if = "Option::is_none")]
240 pub status: Option<MsgraphResponseStatus>,
241 #[serde(default, skip_serializing_if = "Option::is_none")]
243 pub email_address: Option<MsgraphEmailAddress>,
244}
245
246#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
248#[serde(rename_all = "camelCase")]
249pub struct MsgraphResponseStatus {
250 #[serde(default, skip_serializing_if = "Option::is_none")]
252 pub response: Option<MsgraphResponseType>,
253 #[serde(default, skip_serializing_if = "Option::is_none")]
255 pub time: Option<String>,
256}
257
258#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
260#[serde(rename_all = "camelCase")]
261pub enum MsgraphEventType {
262 SingleInstance,
264 Occurrence,
266 Exception,
268 SeriesMaster,
270}
271
272#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
274#[serde(rename_all = "camelCase")]
275pub enum MsgraphFreeBusyStatus {
276 Unknown,
278 Free,
280 Tentative,
282 Busy,
284 Oof,
286 WorkingElsewhere,
288}
289
290#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
292#[serde(rename_all = "camelCase")]
293pub enum MsgraphSensitivity {
294 Normal,
296 Personal,
298 Private,
300 Confidential,
302}
303
304#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
306#[serde(rename_all = "camelCase")]
307pub enum MsgraphResponseType {
308 None,
310 Organizer,
312 TentativelyAccepted,
314 Accepted,
316 Declined,
318 NotResponded,
320}
321
322#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
324#[serde(rename_all = "camelCase")]
325pub enum MsgraphAttendeeType {
326 Required,
328 Optional,
330 Resource,
332}
333
334#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
336#[serde(rename_all = "camelCase")]
337pub enum MsgraphRecurrencePatternType {
338 Daily,
340 Weekly,
342 AbsoluteMonthly,
344 RelativeMonthly,
346 AbsoluteYearly,
348 RelativeYearly,
351}
352
353#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
355#[serde(rename_all = "camelCase")]
356pub enum MsgraphRecurrenceRangeType {
357 EndDate,
359 NoEnd,
361 Numbered,
363}
364
365#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
367#[serde(rename_all = "camelCase")]
368pub enum MsgraphDayOfWeek {
369 Sunday,
371 Monday,
373 Tuesday,
375 Wednesday,
377 Thursday,
379 Friday,
381 Saturday,
383}
384
385#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
387#[serde(rename_all = "camelCase")]
388pub enum MsgraphWeekIndex {
389 First,
391 Second,
393 Third,
395 Fourth,
397 Last,
399}