use alloc::{string::String, vec::Vec};
use serde::{Deserialize, Serialize};
use crate::v1::{
field::MsgraphField,
rest::users::{
contacts::{MsgraphPhysicalAddress, MsgraphSingleValueExtendedProperty},
messages::{MsgraphEmailAddress, MsgraphImportance, MsgraphItemBody, MsgraphRecipient},
},
};
pub mod calendar_view;
pub mod create;
pub mod delete;
pub mod delta;
pub mod get;
#[cfg(feature = "ical")]
pub mod ical;
pub mod instances;
pub mod list;
pub mod update;
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphEvent {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub id: String,
#[serde(default, rename = "iCalUId", skip_serializing_if = "Option::is_none")]
pub ical_uid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub change_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_date_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_modified_date_time: Option<String>,
#[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
pub event_type: Option<MsgraphEventType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series_master_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub original_start: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub original_start_time_zone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub original_end_time_zone: Option<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub subject: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub body: MsgraphField<MsgraphItemBody>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub start: MsgraphField<MsgraphDateTimeTimeZone>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub end: MsgraphField<MsgraphDateTimeTimeZone>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub is_all_day: MsgraphField<bool>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub location: MsgraphField<MsgraphLocation>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub recurrence: MsgraphField<MsgraphPatternedRecurrence>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub attendees: MsgraphField<Vec<MsgraphAttendee>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub organizer: MsgraphField<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub categories: MsgraphField<Vec<String>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub show_as: MsgraphField<MsgraphFreeBusyStatus>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub sensitivity: MsgraphField<MsgraphSensitivity>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub importance: MsgraphField<MsgraphImportance>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub is_reminder_on: MsgraphField<bool>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub reminder_minutes_before_start: MsgraphField<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_cancelled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_organizer: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub response_status: Option<MsgraphResponseStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub web_link: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub online_meeting: Option<MsgraphOnlineMeetingInfo>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub cancelled_occurrences: Vec<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub single_value_extended_properties: MsgraphField<Vec<MsgraphSingleValueExtendedProperty>>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphDateTimeTimeZone {
pub date_time: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time_zone: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphOnlineMeetingInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub join_url: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphLocation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<MsgraphPhysicalAddress>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphPatternedRecurrence {
pub pattern: MsgraphRecurrencePattern,
pub range: MsgraphRecurrenceRange,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphRecurrencePattern {
#[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
pub pattern_type: Option<MsgraphRecurrencePatternType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub month: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub day_of_month: Option<u32>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub days_of_week: Vec<MsgraphDayOfWeek>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub first_day_of_week: Option<MsgraphDayOfWeek>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub index: Option<MsgraphWeekIndex>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphRecurrenceRange {
#[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
pub range_type: Option<MsgraphRecurrenceRangeType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recurrence_time_zone: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub number_of_occurrences: Option<u32>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphAttendee {
#[serde(default, rename = "type", skip_serializing_if = "Option::is_none")]
pub attendee_type: Option<MsgraphAttendeeType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<MsgraphResponseStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email_address: Option<MsgraphEmailAddress>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphResponseStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub response: Option<MsgraphResponseType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphEventType {
SingleInstance,
Occurrence,
Exception,
SeriesMaster,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphFreeBusyStatus {
Unknown,
Free,
Tentative,
Busy,
Oof,
WorkingElsewhere,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphSensitivity {
Normal,
Personal,
Private,
Confidential,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphResponseType {
None,
Organizer,
TentativelyAccepted,
Accepted,
Declined,
NotResponded,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphAttendeeType {
Required,
Optional,
Resource,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphRecurrencePatternType {
Daily,
Weekly,
AbsoluteMonthly,
RelativeMonthly,
AbsoluteYearly,
RelativeYearly,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphRecurrenceRangeType {
EndDate,
NoEnd,
Numbered,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphDayOfWeek {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphWeekIndex {
First,
Second,
Third,
Fourth,
Last,
}