beeper_desktop_api/models/
message.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Attachment {
8 #[serde(rename = "type")]
10 pub typ: String,
11 #[serde(skip_serializing_if = "Option::is_none")]
13 #[serde(rename = "srcURL")]
14 pub src_url: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none")]
17 #[serde(rename = "mimeType")]
18 pub mime_type: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 #[serde(rename = "fileName")]
22 pub file_name: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
25 #[serde(rename = "fileSize")]
26 pub file_size: Option<u64>,
27 #[serde(skip_serializing_if = "Option::is_none")]
29 #[serde(rename = "isGif")]
30 pub is_gif: Option<bool>,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 #[serde(rename = "isSticker")]
34 pub is_sticker: Option<bool>,
35 #[serde(skip_serializing_if = "Option::is_none")]
37 #[serde(rename = "isVoiceNote")]
38 pub is_voice_note: Option<bool>,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub duration: Option<f64>,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 #[serde(rename = "posterImg")]
45 pub poster_img: Option<String>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct Reaction {
51 pub id: String,
53 #[serde(rename = "reactionKey")]
55 pub reaction_key: String,
56 #[serde(skip_serializing_if = "Option::is_none")]
58 #[serde(rename = "imgURL")]
59 pub img_url: Option<String>,
60 #[serde(rename = "participantID")]
62 pub participant_id: String,
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub emoji: Option<bool>,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct Message {
71 pub id: String,
73 #[serde(rename = "chatID")]
75 pub chat_id: String,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 #[serde(rename = "accountID")]
79 pub account_id: Option<String>,
80 #[serde(rename = "senderID")]
82 pub sender_id: String,
83 #[serde(skip_serializing_if = "Option::is_none")]
85 #[serde(rename = "senderName")]
86 pub sender_name: Option<String>,
87 #[serde(skip_serializing_if = "Option::is_none")]
89 pub text: Option<String>,
90 pub timestamp: String,
92 #[serde(rename = "sortKey")]
94 pub sort_key: String,
95 #[serde(skip_serializing_if = "Option::is_none")]
97 #[serde(rename = "isEdited")]
98 pub is_edited: Option<bool>,
99 #[serde(skip_serializing_if = "Option::is_none")]
101 pub attachments: Option<Vec<Attachment>>,
102 #[serde(skip_serializing_if = "Option::is_none")]
104 #[serde(rename = "isUnread")]
105 pub is_unread: Option<bool>,
106 #[serde(skip_serializing_if = "Option::is_none")]
108 pub reactions: Option<Vec<Reaction>>,
109 #[serde(skip_serializing_if = "Option::is_none")]
111 #[serde(rename = "replyToID")]
112 pub reply_to_id: Option<String>,
113 #[serde(skip_serializing_if = "Option::is_none")]
115 #[serde(rename = "isSender")]
116 pub is_sender: Option<bool>,
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
121pub struct SendMessageInput {
122 pub text: String,
124 #[serde(skip_serializing_if = "Option::is_none")]
126 #[serde(rename = "replyToID")]
127 pub reply_to_id: Option<String>,
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize)]
132pub struct SendMessageOutput {
133 #[serde(rename = "chatID")]
135 pub chat_id: String,
136 #[serde(rename = "pendingMessageID")]
138 pub pending_message_id: String,
139}
140
141#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct ListMessagesOutput {
144 pub items: Vec<Message>,
146 #[serde(rename = "hasMore")]
148 pub has_more: bool,
149}
150
151#[derive(Debug, Clone, Serialize, Deserialize)]
153pub struct SearchMessagesOutput {
154 pub items: Vec<Message>,
156 #[serde(skip_serializing_if = "Option::is_none")]
158 pub chats: Option<std::collections::HashMap<String, crate::models::Chat>>,
159 #[serde(rename = "hasMore")]
161 pub has_more: bool,
162 #[serde(skip_serializing_if = "Option::is_none")]
164 #[serde(rename = "oldestCursor")]
165 pub oldest_cursor: Option<String>,
166 #[serde(skip_serializing_if = "Option::is_none")]
168 #[serde(rename = "newestCursor")]
169 pub newest_cursor: Option<String>,
170}