#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AddMessageAttachmentsDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CallDataDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
#[serde(rename = "from", default, skip_serializing_if = "Option::is_none")]
pub from_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CancelScheduledResponseDto {
pub status: f64,
pub message: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CompleteFileUploadDto {
#[serde(rename = "uploadId")]
pub upload_id: String,
#[serde(rename = "filePath")]
pub file_path: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "conversationId")]
pub conversation_id: String,
pub filename: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CompleteFileUploadResponseDto {
#[serde(rename = "uploadedFiles")]
pub uploaded_files: serde_json::Value,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConversationCreateResponseDto {
pub id: String,
#[serde(rename = "dateUpdated")]
pub date_updated: String,
#[serde(rename = "dateAdded")]
pub date_added: String,
pub deleted: bool,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "lastMessageDate")]
pub last_message_date: String,
#[serde(
rename = "assignedTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub assigned_to: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConversationDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(
rename = "assignedTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub assigned_to: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(
rename = "lastMessageBody",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_message_body: Option<String>,
#[serde(
rename = "lastMessageDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_message_date: Option<String>,
#[serde(
rename = "lastMessageType",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_message_type: Option<String>,
#[serde(
rename = "unreadCount",
default,
skip_serializing_if = "Option::is_none"
)]
pub unread_count: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub inbox: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub starred: Option<bool>,
pub deleted: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConversationSchema {
pub id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "lastMessageBody")]
pub last_message_body: String,
#[serde(rename = "lastMessageType")]
pub last_message_type: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(rename = "unreadCount")]
pub unread_count: f64,
#[serde(rename = "fullName")]
pub full_name: String,
#[serde(rename = "contactName")]
pub contact_name: String,
pub email: String,
pub phone: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateConversationDto {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateConversationSuccessResponse {
pub success: bool,
pub conversation: ConversationCreateResponseDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateCustomSubtypeDto {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub channel: String,
pub language: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateLiveChatMessageFeedbackResponse {
pub success: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteConversationSuccessfulResponse {
pub success: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ErrorDto {
pub code: String,
#[serde(rename = "type")]
pub type_: String,
pub message: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ExportMessagesResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub messages: Vec<GetMessageResponseDto>,
#[serde(
rename = "nextCursor",
default,
skip_serializing_if = "Option::is_none"
)]
pub next_cursor: Option<String>,
pub total: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ForwardConfigDto {
#[serde(rename = "isForwarded")]
pub is_forwarded: bool,
#[serde(
rename = "forwardWholeThread",
default,
skip_serializing_if = "Option::is_none"
)]
pub forward_whole_thread: Option<bool>,
#[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
pub message_id: Option<String>,
#[serde(
rename = "emailMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_message_id: Option<String>,
#[serde(
rename = "sourceContactId",
default,
skip_serializing_if = "Option::is_none"
)]
pub source_contact_id: Option<String>,
#[serde(
rename = "sourceConversationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub source_conversation_id: Option<String>,
#[serde(rename = "toEmail", default, skip_serializing_if = "Option::is_none")]
pub to_email: Option<String>,
#[serde(
rename = "recipientContactId",
default,
skip_serializing_if = "Option::is_none"
)]
pub recipient_contact_id: Option<String>,
#[serde(
rename = "recipientConversationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub recipient_conversation_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ForwardResponseDto {
#[serde(
rename = "forwardWholeThread",
default,
skip_serializing_if = "Option::is_none"
)]
pub forward_whole_thread: Option<bool>,
#[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
pub message_id: Option<String>,
#[serde(
rename = "emailMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_message_id: Option<String>,
#[serde(
rename = "sourceContactId",
default,
skip_serializing_if = "Option::is_none"
)]
pub source_contact_id: Option<String>,
#[serde(
rename = "sourceConversationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub source_conversation_id: Option<String>,
#[serde(
rename = "forwardToEmail",
default,
skip_serializing_if = "Option::is_none"
)]
pub forward_to_email: Option<String>,
#[serde(
rename = "recipientContactId",
default,
skip_serializing_if = "Option::is_none"
)]
pub recipient_contact_id: Option<String>,
#[serde(
rename = "recipientConversationId",
default,
skip_serializing_if = "Option::is_none"
)]
pub recipient_conversation_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetConversationByIdResponse {
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
pub deleted: bool,
pub inbox: bool,
#[serde(rename = "type")]
pub type_: f64,
#[serde(rename = "unreadCount")]
pub unread_count: f64,
#[serde(
rename = "assignedTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub assigned_to: Option<String>,
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub starred: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetConversationSuccessfulResponse {
pub success: bool,
pub conversation: ConversationDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetEmailMessageResponseDto {
pub id: String,
#[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
pub alt_id: Option<String>,
#[serde(rename = "threadId")]
pub thread_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "dateAdded")]
pub date_added: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
pub body: String,
pub direction: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(rename = "contentType")]
pub content_type: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<String>,
#[serde(rename = "from")]
pub from_: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub to: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub cc: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub bcc: Vec<String>,
#[serde(
rename = "replyToMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub reply_to_message_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(
rename = "conversationProviderId",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversation_provider_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetMessageResponseDto {
pub id: String,
#[serde(rename = "type")]
pub type_: f64,
#[serde(rename = "messageType")]
pub message_type: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "dateAdded")]
pub date_added: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub body: Option<String>,
pub direction: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(rename = "contentType")]
pub content_type: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<MessageMeta>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(
rename = "conversationProviderId",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversation_provider_id: Option<String>,
#[serde(
rename = "chatWidgetId",
default,
skip_serializing_if = "Option::is_none"
)]
pub chat_widget_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetMessageTranscriptionResponseDto {
#[serde(rename = "mediaChannel")]
pub media_channel: f64,
#[serde(rename = "sentenceIndex")]
pub sentence_index: f64,
#[serde(rename = "startTime")]
pub start_time: f64,
#[serde(rename = "endTime")]
pub end_time: f64,
pub transcript: String,
pub confidence: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetMessagesByConversationResponseDto {
#[serde(rename = "lastMessageId")]
pub last_message_id: String,
#[serde(rename = "nextPage")]
pub next_page: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub messages: Vec<GetMessageResponseDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InitiateFileUploadDto {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "conversationId")]
pub conversation_id: String,
pub filename: String,
#[serde(rename = "contentType")]
pub content_type: String,
#[serde(rename = "fileSize", default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<f64>,
pub channel: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InitiateFileUploadResponseDto {
#[serde(rename = "uploadUrl")]
pub upload_url: String,
#[serde(rename = "uploadId")]
pub upload_id: String,
#[serde(rename = "filePath")]
pub file_path: String,
#[serde(rename = "expiresAt")]
pub expires_at: f64,
#[serde(rename = "maxFileSize")]
pub max_file_size: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MessageMeta {
#[serde(
rename = "callDuration",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_duration: Option<String>,
#[serde(
rename = "callStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub call_status: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProcessMessageBodyDto {
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "conversationProviderId")]
pub conversation_provider_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub html: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(rename = "emailFrom", default, skip_serializing_if = "Option::is_none")]
pub email_from: Option<String>,
#[serde(rename = "emailTo", default, skip_serializing_if = "Option::is_none")]
pub email_to: Option<String>,
#[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
pub email_cc: Vec<String>,
#[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
pub email_bcc: Vec<String>,
#[serde(
rename = "emailMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_message_id: Option<String>,
#[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
pub alt_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub direction: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub call: Option<CallDataDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProcessMessageResponseDto {
pub success: bool,
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "messageId")]
pub message_id: String,
pub message: String,
#[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
pub date_added: Option<String>,
#[serde(
rename = "emailMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_message_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProcessOutboundMessageBodyDto {
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "conversationProviderId")]
pub conversation_provider_id: String,
#[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
pub alt_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub call: Option<CallDataDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendConversationResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub conversations: Vec<ConversationSchema>,
pub total: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendMessageBodyDto {
#[serde(rename = "type")]
pub type_: String,
#[serde(rename = "subType")]
pub sub_type: serde_json::Value,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(
rename = "appointmentId",
default,
skip_serializing_if = "Option::is_none"
)]
pub appointment_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
#[serde(rename = "emailFrom", default, skip_serializing_if = "Option::is_none")]
pub email_from: Option<String>,
#[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
pub email_cc: Vec<String>,
#[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
pub email_bcc: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub html: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(
rename = "replyMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub reply_message_id: Option<String>,
#[serde(
rename = "templateId",
default,
skip_serializing_if = "Option::is_none"
)]
pub template_id: Option<String>,
#[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
pub thread_id: Option<String>,
#[serde(
rename = "scheduledTimestamp",
default,
skip_serializing_if = "Option::is_none"
)]
pub scheduled_timestamp: Option<f64>,
#[serde(
rename = "conversationProviderId",
default,
skip_serializing_if = "Option::is_none"
)]
pub conversation_provider_id: Option<String>,
#[serde(rename = "emailTo", default, skip_serializing_if = "Option::is_none")]
pub email_to: Option<String>,
#[serde(
rename = "customSubtypeId",
default,
skip_serializing_if = "Option::is_none"
)]
pub custom_subtype_id: Option<String>,
#[serde(
rename = "emailReplyMode",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_reply_mode: Option<String>,
#[serde(
rename = "fromNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub from_number: Option<String>,
#[serde(rename = "toNumber", default, skip_serializing_if = "Option::is_none")]
pub to_number: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward: Option<ForwardConfigDto>,
pub status: String,
#[serde(
rename = "usesNativeSchedulingAi",
default,
skip_serializing_if = "Option::is_none"
)]
pub uses_native_scheduling_ai: Option<bool>,
#[serde(
rename = "optimizationPeriod",
default,
skip_serializing_if = "Option::is_none"
)]
pub optimization_period: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendMessageResponseDto {
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(
rename = "emailMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_message_id: Option<String>,
#[serde(rename = "messageId")]
pub message_id: String,
#[serde(rename = "messageIds", default, skip_serializing_if = "Vec::is_empty")]
pub message_ids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub msg: Option<String>,
#[serde(
rename = "forwardData",
default,
skip_serializing_if = "Option::is_none"
)]
pub forward_data: Option<ForwardResponseDto>,
pub status: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendReviewReplyDto {
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
pub message: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StartAfterArrayNumberSchema {
#[serde(
rename = "startAfterDate",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub start_after_date: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StartAfterNumberSchema {
#[serde(
rename = "startAfterDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub start_after_date: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SubscriptionActionDto {
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subtype_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subtype_id: Option<String>,
pub subtype_status: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateConversationDto {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "unreadCount",
default,
skip_serializing_if = "Option::is_none"
)]
pub unread_count: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub starred: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub feedback: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateCustomSubtypeDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub archived: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resubscription_legal_form_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateMessageStatusDto {
pub status: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<ErrorDto>,
#[serde(
rename = "emailMessageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_message_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub recipients: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UploadFilesDto {
#[serde(rename = "conversationId")]
pub conversation_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(
rename = "attachmentUrls",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub attachment_urls: Vec<String>,
#[serde(
rename = "chatServiceSid",
default,
skip_serializing_if = "Option::is_none"
)]
pub chat_service_sid: Option<String>,
#[serde(
rename = "isGroupSms",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_group_sms: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UploadFilesErrorResponseDto {
pub status: String,
pub message: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UploadFilesResponseDto {
#[serde(rename = "uploadedFiles")]
pub uploaded_files: serde_json::Value,
#[serde(
rename = "twilioMediaSids",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub twilio_media_sids: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserSubscriptionChangeDto {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "contactId")]
pub contact_id: String,
pub email: String,
pub subscription_action: SubscriptionActionDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub legal_reason: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub legal_description: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserTypingBody {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "isTyping")]
pub is_typing: String,
#[serde(rename = "visitorId")]
pub visitor_id: String,
#[serde(rename = "conversationId")]
pub conversation_id: String,
}