use super::Attachment;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Serialize)]
pub struct CreateDraft {
#[serde(skip_serializing_if = "Vec::is_empty")]
pub to: Vec<String>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub cc: Vec<String>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub bcc: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub html: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub in_reply_to: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_all: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub forward_of: Option<String>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub labels: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub send_at: Option<String>,
}
#[derive(Clone, Debug, Default, Serialize)]
pub struct UpdateDraft {
#[serde(skip_serializing_if = "Option::is_none")]
pub to: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cc: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bcc: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub html: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub add_labels: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub remove_labels: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub send_at: Option<String>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct Draft {
pub draft_id: String,
#[serde(default)]
pub inbox_id: Option<String>,
#[serde(default)]
pub to: Vec<String>,
#[serde(default)]
pub cc: Vec<String>,
#[serde(default)]
pub bcc: Vec<String>,
#[serde(default)]
pub subject: Option<String>,
#[serde(default)]
pub text: Option<String>,
#[serde(default)]
pub html: Option<String>,
#[serde(default)]
pub labels: Vec<String>,
#[serde(default)]
pub in_reply_to: Option<String>,
#[serde(default)]
pub reply_all: Option<bool>,
#[serde(default)]
pub forward_of: Option<String>,
#[serde(default)]
pub send_at: Option<String>,
#[serde(default)]
pub created_at: Option<String>,
#[serde(default)]
pub updated_at: Option<String>,
#[serde(default)]
pub from: Option<String>,
#[serde(default)]
pub attachments: Vec<Attachment>,
}
#[derive(Clone, Debug, Deserialize)]
pub struct DraftList {
pub count: u64,
#[serde(default)]
pub drafts: Vec<Draft>,
#[serde(default)]
pub next_page_token: Option<String>,
}