use alloc::{string::String, vec::Vec};
use serde::{Deserialize, Serialize};
pub mod attachments;
pub mod copy;
pub mod create;
pub mod create_mime;
pub mod delete;
pub mod get;
pub mod get_raw;
pub mod list;
pub mod r#move;
pub mod send;
pub mod update;
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphMessage {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub body_preview: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub body: Option<MsgraphItemBody>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sender: Option<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub to_recipients: Vec<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub cc_recipients: Vec<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub bcc_recipients: Vec<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub reply_to: Vec<MsgraphRecipient>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub received_date_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sent_date_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_read: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_draft: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_attachments: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub internet_message_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub importance: Option<MsgraphImportance>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flag: Option<MsgraphFollowupFlag>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub categories: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent_folder_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conversation_id: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphRecipient {
pub email_address: MsgraphEmailAddress,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphEmailAddress {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphItemBody {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<MsgraphBodyType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphFollowupFlag {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub flag_status: Option<MsgraphFlagStatus>,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum MsgraphBodyType {
Text,
Html,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MsgraphFlagStatus {
NotFlagged,
Complete,
Flagged,
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum MsgraphImportance {
Low,
Normal,
High,
}