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 = "MsgraphField::is_unset")]
138 pub is_online_meeting: MsgraphField<bool>,
139 #[serde(default, skip_serializing_if = "Option::is_none")]
141 pub online_meeting: Option<MsgraphOnlineMeetingInfo>,
142 #[serde(default, skip_serializing_if = "Vec::is_empty")]
145 pub cancelled_occurrences: Vec<String>,
146 #[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
148 pub single_value_extended_properties: MsgraphField<Vec<MsgraphSingleValueExtendedProperty>>,
149}
150
151#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
156#[serde(rename_all = "camelCase")]
157pub struct MsgraphDateTimeTimeZone {
158 pub date_time: String,
161 #[serde(default, skip_serializing_if = "Option::is_none")]
163 pub time_zone: Option<String>,
164}
165
166#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
168#[serde(rename_all = "camelCase")]
169pub struct MsgraphOnlineMeetingInfo {
170 #[serde(default, skip_serializing_if = "Option::is_none")]
172 pub join_url: Option<String>,
173}
174
175#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
177#[serde(rename_all = "camelCase")]
178pub struct MsgraphLocation {
179 #[serde(default, skip_serializing_if = "Option::is_none")]
181 pub display_name: Option<String>,
182 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub location_uri: Option<String>,
185 #[serde(default, skip_serializing_if = "Option::is_none")]
187 pub address: Option<MsgraphPhysicalAddress>,
188}
189
190#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
192#[serde(rename_all = "camelCase")]
193pub struct MsgraphPatternedRecurrence {
194 pub pattern: MsgraphRecurrencePattern,
196 pub range: MsgraphRecurrenceRange,
198}
199
200#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
202#[serde(rename_all = "camelCase")]
203pub struct MsgraphRecurrencePattern {
204 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
206 pub pattern_type: Option<MsgraphRecurrencePatternType>,
207 #[serde(default, skip_serializing_if = "Option::is_none")]
209 pub interval: Option<u32>,
210 #[serde(default, skip_serializing_if = "Option::is_none")]
212 pub month: Option<u32>,
213 #[serde(default, skip_serializing_if = "Option::is_none")]
215 pub day_of_month: Option<u32>,
216 #[serde(default, skip_serializing_if = "Vec::is_empty")]
218 pub days_of_week: Vec<MsgraphDayOfWeek>,
219 #[serde(default, skip_serializing_if = "Option::is_none")]
221 pub first_day_of_week: Option<MsgraphDayOfWeek>,
222 #[serde(default, skip_serializing_if = "Option::is_none")]
224 pub index: Option<MsgraphWeekIndex>,
225}
226
227#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
229#[serde(rename_all = "camelCase")]
230pub struct MsgraphRecurrenceRange {
231 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
233 pub range_type: Option<MsgraphRecurrenceRangeType>,
234 #[serde(default, skip_serializing_if = "Option::is_none")]
236 pub start_date: Option<String>,
237 #[serde(default, skip_serializing_if = "Option::is_none")]
239 pub end_date: Option<String>,
240 #[serde(default, skip_serializing_if = "Option::is_none")]
242 pub recurrence_time_zone: Option<String>,
243 #[serde(default, skip_serializing_if = "Option::is_none")]
245 pub number_of_occurrences: Option<u32>,
246}
247
248#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
250#[serde(rename_all = "camelCase")]
251pub struct MsgraphAttendee {
252 #[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
254 pub attendee_type: Option<MsgraphAttendeeType>,
255 #[serde(default, skip_serializing_if = "Option::is_none")]
257 pub status: Option<MsgraphResponseStatus>,
258 #[serde(default, skip_serializing_if = "Option::is_none")]
260 pub email_address: Option<MsgraphEmailAddress>,
261}
262
263#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
265#[serde(rename_all = "camelCase")]
266pub struct MsgraphResponseStatus {
267 #[serde(default, skip_serializing_if = "Option::is_none")]
269 pub response: Option<MsgraphResponseType>,
270 #[serde(default, skip_serializing_if = "Option::is_none")]
272 pub time: Option<String>,
273}
274
275#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
277#[serde(rename_all = "camelCase")]
278pub enum MsgraphEventType {
279 SingleInstance,
281 Occurrence,
283 Exception,
285 SeriesMaster,
287}
288
289#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
291#[serde(rename_all = "camelCase")]
292pub enum MsgraphFreeBusyStatus {
293 Unknown,
295 Free,
297 Tentative,
299 Busy,
301 Oof,
303 WorkingElsewhere,
305}
306
307#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
309#[serde(rename_all = "camelCase")]
310pub enum MsgraphSensitivity {
311 Normal,
313 Personal,
315 Private,
317 Confidential,
319}
320
321#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
323#[serde(rename_all = "camelCase")]
324pub enum MsgraphResponseType {
325 None,
327 Organizer,
329 TentativelyAccepted,
331 Accepted,
333 Declined,
335 NotResponded,
337}
338
339#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
341#[serde(rename_all = "camelCase")]
342pub enum MsgraphAttendeeType {
343 Required,
345 Optional,
347 Resource,
349}
350
351#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
353#[serde(rename_all = "camelCase")]
354pub enum MsgraphRecurrencePatternType {
355 Daily,
357 Weekly,
359 AbsoluteMonthly,
361 RelativeMonthly,
363 AbsoluteYearly,
365 RelativeYearly,
368}
369
370#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
372#[serde(rename_all = "camelCase")]
373pub enum MsgraphRecurrenceRangeType {
374 EndDate,
376 NoEnd,
378 Numbered,
380}
381
382#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
384#[serde(rename_all = "camelCase")]
385pub enum MsgraphDayOfWeek {
386 Sunday,
388 Monday,
390 Tuesday,
392 Wednesday,
394 Thursday,
396 Friday,
398 Saturday,
400}
401
402#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
404#[serde(rename_all = "camelCase")]
405pub enum MsgraphWeekIndex {
406 First,
408 Second,
410 Third,
412 Fourth,
414 Last,
416}