agentmail/types/
drafts.rs1use super::{Attachment, SendAttachment};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Default, Serialize)]
8pub struct CreateDraft {
9 #[serde(skip_serializing_if = "Vec::is_empty")]
11 pub to: Vec<String>,
12 #[serde(skip_serializing_if = "Vec::is_empty")]
14 pub cc: Vec<String>,
15 #[serde(skip_serializing_if = "Vec::is_empty")]
17 pub bcc: Vec<String>,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub subject: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
23 pub text: Option<String>,
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub html: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub in_reply_to: Option<String>,
30 #[serde(skip_serializing_if = "Vec::is_empty")]
32 pub reply_to: Vec<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
36 pub reply_all: Option<bool>,
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub forward_of: Option<String>,
40 #[serde(skip_serializing_if = "Vec::is_empty")]
42 pub labels: Vec<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub send_at: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub client_id: Option<String>,
49}
50#[derive(Clone, Debug, Default, Serialize)]
54pub struct UpdateDraft {
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub to: Option<Vec<String>>,
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub cc: Option<Vec<String>>,
61 #[serde(skip_serializing_if = "Option::is_none")]
63 pub bcc: Option<Vec<String>>,
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub subject: Option<String>,
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub text: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
72 pub html: Option<String>,
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub add_labels: Option<Vec<String>>,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub remove_labels: Option<Vec<String>>,
79 #[serde(skip_serializing_if = "Option::is_none")]
81 pub reply_to: Option<Vec<String>>,
82 #[serde(skip_serializing_if = "Vec::is_empty")]
84 pub add_attachments: Vec<SendAttachment>,
85 #[serde(skip_serializing_if = "Vec::is_empty")]
87 pub remove_attachments: Vec<String>,
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub send_at: Option<String>,
91}
92#[derive(Clone, Debug, Deserialize)]
95pub struct Draft {
96 pub draft_id: String,
98 #[serde(default)]
100 pub inbox_id: Option<String>,
101 #[serde(default)]
103 pub client_id: Option<String>,
104 #[serde(default)]
106 pub to: Vec<String>,
107 #[serde(default)]
109 pub cc: Vec<String>,
110 #[serde(default)]
112 pub bcc: Vec<String>,
113 #[serde(default)]
115 pub reply_to: Vec<String>,
116 #[serde(default)]
118 pub subject: Option<String>,
119 #[serde(default)]
121 pub preview: Option<String>,
122 #[serde(default)]
124 pub text: Option<String>,
125 #[serde(default)]
127 pub html: Option<String>,
128 #[serde(default)]
130 pub labels: Vec<String>,
131 #[serde(default)]
133 pub in_reply_to: Option<String>,
134 #[serde(default)]
136 pub forward_of: Option<String>,
137 #[serde(default)]
139 pub references: Vec<String>,
140 #[serde(default)]
142 pub send_status: Option<String>,
143 #[serde(default)]
145 pub send_at: Option<String>,
146 #[serde(default)]
148 pub created_at: Option<String>,
149 #[serde(default)]
151 pub updated_at: Option<String>,
152 #[serde(default)]
154 pub attachments: Vec<Attachment>,
155}
156#[derive(Clone, Debug, Deserialize)]
158pub struct DraftList {
159 pub count: u64,
161 #[serde(default)]
163 pub drafts: Vec<Draft>,
164 #[serde(default)]
166 pub next_page_token: Option<String>,
167}