use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SearchConversationsParams {
pub location_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_to: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_message_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_message_action: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_by: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_after_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_after: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Conversation {
pub id: String,
pub location_id: String,
pub contact_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_to: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_message_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_message_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unread_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inbox_id: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starred: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SearchConversationsResponse {
pub conversations: Vec<Conversation>,
pub total: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetConversationResponse {
pub conversation: Conversation,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CreateConversationParams {
pub location_id: String,
pub contact_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UpdateConversationParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub unread_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starred: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_to: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteConversationResponse {
pub succeded: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Message {
pub id: String,
pub conversation_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub direction: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub body: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub html: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_added: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub read: Option<bool>,
#[serde(default)]
pub attachments: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MessagesPage {
pub messages: Vec<Message>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prev_page_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_message_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetMessagesResponse {
pub messages: MessagesPage,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SendMessageParams {
#[serde(rename = "type")]
pub type_: String,
pub conversation_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scheduled_timestamp: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub html: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email_from: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email_to: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email_cc: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email_bcc: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attachments: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SendMessageResponse {
pub id: String,
pub conversation_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_added: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email_message_id: Option<String>,
}