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 = "Option::is_none")]
136 pub online_meeting: Option<MsgraphOnlineMeetingInfo>,
137 #[serde(default, skip_serializing_if = "Vec::is_empty")]
140 pub cancelled_occurrences: Vec<String>,
141 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
143 pub single_value_extended_properties: MsgraphField<Vec<MsgraphSingleValueExtendedProperty>>,
144}
145
146#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
151#[serde(rename_all = "camelCase")]
152pub struct MsgraphDateTimeTimeZone {
153 pub date_time: String,
156 #[serde(default, skip_serializing_if = "Option::is_none")]
158 pub time_zone: Option<String>,
159}
160
161#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
163#[serde(rename_all = "camelCase")]
164pub struct MsgraphOnlineMeetingInfo {
165 #[serde(default, skip_serializing_if = "Option::is_none")]
167 pub join_url: Option<String>,
168}
169
170#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
172#[serde(rename_all = "camelCase")]
173pub struct MsgraphLocation {
174 #[serde(default, skip_serializing_if = "Option::is_none")]
176 pub display_name: Option<String>,
177 #[serde(default, skip_serializing_if = "Option::is_none")]
179 pub location_uri: Option<String>,
180 #[serde(default, skip_serializing_if = "Option::is_none")]
182 pub address: Option<MsgraphPhysicalAddress>,
183}
184
185#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
187#[serde(rename_all = "camelCase")]
188pub struct MsgraphPatternedRecurrence {
189 pub pattern: MsgraphRecurrencePattern,
191 pub range: MsgraphRecurrenceRange,
193}
194
195#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
197#[serde(rename_all = "camelCase")]
198pub struct MsgraphRecurrencePattern {
199 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
201 pub pattern_type: Option<MsgraphRecurrencePatternType>,
202 #[serde(default, skip_serializing_if = "Option::is_none")]
204 pub interval: Option<u32>,
205 #[serde(default, skip_serializing_if = "Option::is_none")]
207 pub month: Option<u32>,
208 #[serde(default, skip_serializing_if = "Option::is_none")]
210 pub day_of_month: Option<u32>,
211 #[serde(default, skip_serializing_if = "Vec::is_empty")]
213 pub days_of_week: Vec<MsgraphDayOfWeek>,
214 #[serde(default, skip_serializing_if = "Option::is_none")]
216 pub first_day_of_week: Option<MsgraphDayOfWeek>,
217 #[serde(default, skip_serializing_if = "Option::is_none")]
219 pub index: Option<MsgraphWeekIndex>,
220}
221
222#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
224#[serde(rename_all = "camelCase")]
225pub struct MsgraphRecurrenceRange {
226 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
228 pub range_type: Option<MsgraphRecurrenceRangeType>,
229 #[serde(default, skip_serializing_if = "Option::is_none")]
231 pub start_date: Option<String>,
232 #[serde(default, skip_serializing_if = "Option::is_none")]
234 pub end_date: Option<String>,
235 #[serde(default, skip_serializing_if = "Option::is_none")]
237 pub recurrence_time_zone: Option<String>,
238 #[serde(default, skip_serializing_if = "Option::is_none")]
240 pub number_of_occurrences: Option<u32>,
241}
242
243#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
245#[serde(rename_all = "camelCase")]
246pub struct MsgraphAttendee {
247 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
249 pub attendee_type: Option<MsgraphAttendeeType>,
250 #[serde(default, skip_serializing_if = "Option::is_none")]
252 pub status: Option<MsgraphResponseStatus>,
253 #[serde(default, skip_serializing_if = "Option::is_none")]
255 pub email_address: Option<MsgraphEmailAddress>,
256}
257
258#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
260#[serde(rename_all = "camelCase")]
261pub struct MsgraphResponseStatus {
262 #[serde(default, skip_serializing_if = "Option::is_none")]
264 pub response: Option<MsgraphResponseType>,
265 #[serde(default, skip_serializing_if = "Option::is_none")]
267 pub time: Option<String>,
268}
269
270#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
272#[serde(rename_all = "camelCase")]
273pub enum MsgraphEventType {
274 SingleInstance,
276 Occurrence,
278 Exception,
280 SeriesMaster,
282}
283
284#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
286#[serde(rename_all = "camelCase")]
287pub enum MsgraphFreeBusyStatus {
288 Unknown,
290 Free,
292 Tentative,
294 Busy,
296 Oof,
298 WorkingElsewhere,
300}
301
302#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
304#[serde(rename_all = "camelCase")]
305pub enum MsgraphSensitivity {
306 Normal,
308 Personal,
310 Private,
312 Confidential,
314}
315
316#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
318#[serde(rename_all = "camelCase")]
319pub enum MsgraphResponseType {
320 None,
322 Organizer,
324 TentativelyAccepted,
326 Accepted,
328 Declined,
330 NotResponded,
332}
333
334#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
336#[serde(rename_all = "camelCase")]
337pub enum MsgraphAttendeeType {
338 Required,
340 Optional,
342 Resource,
344}
345
346#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
348#[serde(rename_all = "camelCase")]
349pub enum MsgraphRecurrencePatternType {
350 Daily,
352 Weekly,
354 AbsoluteMonthly,
356 RelativeMonthly,
358 AbsoluteYearly,
360 RelativeYearly,
363}
364
365#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
367#[serde(rename_all = "camelCase")]
368pub enum MsgraphRecurrenceRangeType {
369 EndDate,
371 NoEnd,
373 Numbered,
375}
376
377#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
379#[serde(rename_all = "camelCase")]
380pub enum MsgraphDayOfWeek {
381 Sunday,
383 Monday,
385 Tuesday,
387 Wednesday,
389 Thursday,
391 Friday,
393 Saturday,
395}
396
397#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
399#[serde(rename_all = "camelCase")]
400pub enum MsgraphWeekIndex {
401 First,
403 Second,
405 Third,
407 Fourth,
409 Last,
411}