Skip to main content

mxr_provider_gmail/
types.rs

1use serde::Deserialize;
2
3#[derive(Debug, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct GmailListResponse {
6    pub messages: Option<Vec<GmailMessageRef>>,
7    pub next_page_token: Option<String>,
8    pub result_size_estimate: Option<u64>,
9}
10
11#[derive(Debug, Clone, Deserialize)]
12#[serde(rename_all = "camelCase")]
13pub struct GmailMessageRef {
14    pub id: String,
15    pub thread_id: String,
16}
17
18#[derive(Debug, Clone, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct GmailMessage {
21    pub id: String,
22    pub thread_id: String,
23    pub label_ids: Option<Vec<String>>,
24    pub snippet: Option<String>,
25    pub history_id: Option<String>,
26    pub internal_date: Option<String>,
27    pub size_estimate: Option<u64>,
28    pub payload: Option<GmailPayload>,
29}
30
31#[derive(Debug, Clone, Deserialize)]
32#[serde(rename_all = "camelCase")]
33pub struct GmailPayload {
34    pub mime_type: Option<String>,
35    pub headers: Option<Vec<GmailHeader>>,
36    pub body: Option<GmailBody>,
37    pub parts: Option<Vec<GmailPayload>>,
38    pub filename: Option<String>,
39}
40
41#[derive(Debug, Clone, Deserialize)]
42#[serde(rename_all = "camelCase")]
43pub struct GmailHeader {
44    pub name: String,
45    pub value: String,
46}
47
48#[derive(Debug, Clone, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct GmailBody {
51    pub attachment_id: Option<String>,
52    pub size: Option<u64>,
53    pub data: Option<String>,
54}
55
56#[derive(Debug, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct GmailHistoryResponse {
59    pub history: Option<Vec<GmailHistoryRecord>>,
60    pub next_page_token: Option<String>,
61    pub history_id: Option<String>,
62}
63
64#[derive(Debug, Deserialize)]
65#[serde(rename_all = "camelCase")]
66pub struct GmailHistoryRecord {
67    pub id: String,
68    pub messages: Option<Vec<GmailMessageRef>>,
69    pub messages_added: Option<Vec<GmailHistoryMessageAdded>>,
70    pub messages_deleted: Option<Vec<GmailHistoryMessageDeleted>>,
71    pub labels_added: Option<Vec<GmailHistoryLabelAdded>>,
72    pub labels_removed: Option<Vec<GmailHistoryLabelRemoved>>,
73}
74
75#[derive(Debug, Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct GmailHistoryMessageAdded {
78    pub message: GmailMessageRef,
79}
80
81#[derive(Debug, Deserialize)]
82#[serde(rename_all = "camelCase")]
83pub struct GmailHistoryMessageDeleted {
84    pub message: GmailMessageRef,
85}
86
87#[derive(Debug, Deserialize)]
88#[serde(rename_all = "camelCase")]
89pub struct GmailHistoryLabelAdded {
90    pub message: GmailMessageRef,
91    pub label_ids: Option<Vec<String>>,
92}
93
94#[derive(Debug, Deserialize)]
95#[serde(rename_all = "camelCase")]
96pub struct GmailHistoryLabelRemoved {
97    pub message: GmailMessageRef,
98    pub label_ids: Option<Vec<String>>,
99}
100
101#[derive(Debug, Deserialize)]
102#[serde(rename_all = "camelCase")]
103pub struct GmailLabelsResponse {
104    pub labels: Option<Vec<GmailLabel>>,
105}
106
107#[derive(Debug, Clone, Deserialize)]
108#[serde(rename_all = "camelCase")]
109pub struct GmailLabel {
110    pub id: String,
111    pub name: String,
112    #[serde(rename = "type")]
113    pub label_type: Option<String>,
114    pub messages_total: Option<u32>,
115    pub messages_unread: Option<u32>,
116    pub color: Option<GmailLabelColor>,
117}
118
119#[derive(Debug, Clone, Deserialize)]
120#[serde(rename_all = "camelCase")]
121pub struct GmailLabelColor {
122    pub text_color: Option<String>,
123    pub background_color: Option<String>,
124}