use alloc::{string::String, vec::Vec};
use serde::{Deserialize, Serialize};
use crate::v1::{field::MsgraphField, rest::users::messages::MsgraphEmailAddress};
pub mod create;
pub mod delete;
pub mod delta;
pub mod get;
pub mod list;
pub mod update;
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphContact {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub id: String,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub display_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub given_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub middle_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub surname: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub nick_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub title: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub file_as: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub email_addresses: MsgraphField<Vec<MsgraphEmailAddress>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub im_addresses: MsgraphField<Vec<String>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub business_phones: MsgraphField<Vec<String>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub home_phones: MsgraphField<Vec<String>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub mobile_phone: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub home_address: MsgraphField<MsgraphPhysicalAddress>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub business_address: MsgraphField<MsgraphPhysicalAddress>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub other_address: MsgraphField<MsgraphPhysicalAddress>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub job_title: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub company_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub department: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub office_location: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub profession: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub assistant_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub manager: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub business_home_page: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub birthday: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub spouse_name: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub children: MsgraphField<Vec<String>>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub personal_notes: MsgraphField<String>,
#[serde(default, skip_serializing_if = "MsgraphField::is_unset")]
pub categories: MsgraphField<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 created_date_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_modified_date_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub change_key: Option<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 MsgraphPhysicalAddress {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub street: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub country_or_region: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub postal_code: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MsgraphSingleValueExtendedProperty {
#[serde(default)]
pub id: String,
#[serde(default)]
pub value: String,
}