highlevel_api/apis/conversations/
types.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
4#[serde(rename_all = "camelCase")]
5pub struct SearchConversationsParams {
6 pub location_id: String,
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub contact_id: Option<String>,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub assigned_to: Option<String>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub status: Option<String>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub limit: Option<u32>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub last_message_type: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub last_message_action: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub sort: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub sort_by: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub start_after_id: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub start_after: Option<i64>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct Conversation {
32 pub id: String,
33 pub location_id: String,
34 pub contact_id: String,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub assigned_to: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub status: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub last_message: Option<String>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub last_message_date: Option<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub last_message_type: Option<String>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub unread_count: Option<i32>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub inbox_id: Option<String>,
49 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
50 pub type_: Option<String>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub starred: Option<bool>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct SearchConversationsResponse {
57 pub conversations: Vec<Conversation>,
58 pub total: u64,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct GetConversationResponse {
63 pub conversation: Conversation,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, Default)]
67#[serde(rename_all = "camelCase")]
68pub struct CreateConversationParams {
69 pub location_id: String,
70 pub contact_id: String,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize, Default)]
74#[serde(rename_all = "camelCase")]
75pub struct UpdateConversationParams {
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub unread_count: Option<i32>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub starred: Option<bool>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub assigned_to: Option<String>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub status: Option<String>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct DeleteConversationResponse {
88 pub succeded: bool,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
94#[serde(rename_all = "camelCase")]
95pub struct Message {
96 pub id: String,
97 pub conversation_id: String,
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub location_id: Option<String>,
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub contact_id: Option<String>,
102 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
103 pub type_: Option<String>,
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub direction: Option<String>,
106 #[serde(skip_serializing_if = "Option::is_none")]
107 pub status: Option<String>,
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub body: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub html: Option<String>,
112 #[serde(skip_serializing_if = "Option::is_none")]
113 pub subject: Option<String>,
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub source: Option<String>,
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub date_added: Option<String>,
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub read: Option<bool>,
120 #[serde(default)]
121 pub attachments: Vec<String>,
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize)]
125#[serde(rename_all = "camelCase")]
126pub struct MessagesPage {
127 pub messages: Vec<Message>,
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub total: Option<u64>,
130 #[serde(skip_serializing_if = "Option::is_none")]
131 pub next_page_url: Option<String>,
132 #[serde(skip_serializing_if = "Option::is_none")]
133 pub prev_page_url: Option<String>,
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub last_message_id: Option<String>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct GetMessagesResponse {
140 pub messages: MessagesPage,
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize, Default)]
144#[serde(rename_all = "camelCase")]
145pub struct SendMessageParams {
146 #[serde(rename = "type")]
147 pub type_: String,
148 pub conversation_id: String,
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub contact_id: Option<String>,
151 #[serde(skip_serializing_if = "Option::is_none")]
152 pub scheduled_timestamp: Option<i64>,
153 #[serde(skip_serializing_if = "Option::is_none")]
154 pub message: Option<String>,
155 #[serde(skip_serializing_if = "Option::is_none")]
156 pub subject: Option<String>,
157 #[serde(skip_serializing_if = "Option::is_none")]
158 pub html: Option<String>,
159 #[serde(skip_serializing_if = "Option::is_none")]
160 pub email_from: Option<String>,
161 #[serde(skip_serializing_if = "Option::is_none")]
162 pub email_to: Option<Vec<String>>,
163 #[serde(skip_serializing_if = "Option::is_none")]
164 pub email_cc: Option<Vec<String>>,
165 #[serde(skip_serializing_if = "Option::is_none")]
166 pub email_bcc: Option<Vec<String>>,
167 #[serde(skip_serializing_if = "Option::is_none")]
168 pub attachments: Option<Vec<String>>,
169}
170
171#[derive(Debug, Clone, Serialize, Deserialize)]
172#[serde(rename_all = "camelCase")]
173pub struct SendMessageResponse {
174 pub id: String,
175 pub conversation_id: String,
176 #[serde(skip_serializing_if = "Option::is_none")]
177 pub date_added: Option<String>,
178 #[serde(skip_serializing_if = "Option::is_none")]
179 pub email_message_id: Option<String>,
180}