1#![allow(
6 missing_docs,
7 clippy::doc_lazy_continuation,
8 clippy::doc_overindented_list_items
9)]
10
11use serde::{Deserialize, Serialize};
12
13#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct AddMessageAttachmentsDto {
16 #[serde(default, skip_serializing_if = "Vec::is_empty")]
19 pub attachments: Vec<String>,
20}
21
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
24pub struct CallDataDTO {
25 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub to: Option<String>,
28 #[serde(rename = "from", default, skip_serializing_if = "Option::is_none")]
30 pub from_: Option<String>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub status: Option<String>,
36}
37
38#[derive(Debug, Clone, Default, Serialize, Deserialize)]
40pub struct CancelScheduledResponseDto {
41 pub status: f64,
44 pub message: String,
47}
48
49#[derive(Debug, Clone, Default, Serialize, Deserialize)]
51pub struct CompleteFileUploadDto {
52 #[serde(rename = "uploadId")]
55 pub upload_id: String,
56 #[serde(rename = "filePath")]
59 pub file_path: String,
60 #[serde(rename = "locationId")]
63 pub location_id: String,
64 #[serde(rename = "conversationId")]
67 pub conversation_id: String,
68 pub filename: String,
71}
72
73#[derive(Debug, Clone, Default, Serialize, Deserialize)]
75pub struct CompleteFileUploadResponseDto {
76 #[serde(rename = "uploadedFiles")]
79 pub uploaded_files: serde_json::Value,
80 pub metadata: serde_json::Value,
83}
84
85#[derive(Debug, Clone, Default, Serialize, Deserialize)]
87pub struct ConversationCreateResponseDto {
88 pub id: String,
91 #[serde(rename = "dateUpdated")]
94 pub date_updated: String,
95 #[serde(rename = "dateAdded")]
98 pub date_added: String,
99 pub deleted: bool,
102 #[serde(rename = "contactId")]
105 pub contact_id: String,
106 #[serde(rename = "locationId")]
109 pub location_id: String,
110 #[serde(rename = "lastMessageDate")]
113 pub last_message_date: String,
114 #[serde(
116 rename = "assignedTo",
117 default,
118 skip_serializing_if = "Option::is_none"
119 )]
120 pub assigned_to: Option<String>,
121}
122
123#[derive(Debug, Clone, Default, Serialize, Deserialize)]
125pub struct ConversationDto {
126 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub id: Option<String>,
129 #[serde(rename = "locationId")]
132 pub location_id: String,
133 #[serde(rename = "contactId")]
136 pub contact_id: String,
137 #[serde(
139 rename = "assignedTo",
140 default,
141 skip_serializing_if = "Option::is_none"
142 )]
143 pub assigned_to: Option<String>,
144 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
146 pub user_id: Option<String>,
147 #[serde(
149 rename = "lastMessageBody",
150 default,
151 skip_serializing_if = "Option::is_none"
152 )]
153 pub last_message_body: Option<String>,
154 #[serde(
156 rename = "lastMessageDate",
157 default,
158 skip_serializing_if = "Option::is_none"
159 )]
160 pub last_message_date: Option<String>,
161 #[serde(
167 rename = "lastMessageType",
168 default,
169 skip_serializing_if = "Option::is_none"
170 )]
171 pub last_message_type: Option<String>,
172 #[serde(
174 rename = "unreadCount",
175 default,
176 skip_serializing_if = "Option::is_none"
177 )]
178 pub unread_count: Option<f64>,
179 #[serde(default, skip_serializing_if = "Option::is_none")]
181 pub inbox: Option<bool>,
182 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub starred: Option<bool>,
185 pub deleted: bool,
188}
189
190#[derive(Debug, Clone, Default, Serialize, Deserialize)]
192pub struct ConversationSchema {
193 pub id: String,
196 #[serde(rename = "contactId")]
199 pub contact_id: String,
200 #[serde(rename = "locationId")]
203 pub location_id: String,
204 #[serde(rename = "lastMessageBody")]
207 pub last_message_body: String,
208 #[serde(rename = "lastMessageType")]
215 pub last_message_type: String,
216 #[serde(rename = "type")]
221 pub type_: String,
222 #[serde(rename = "unreadCount")]
225 pub unread_count: f64,
226 #[serde(rename = "fullName")]
229 pub full_name: String,
230 #[serde(rename = "contactName")]
233 pub contact_name: String,
234 pub email: String,
237 pub phone: String,
240}
241
242#[derive(Debug, Clone, Default, Serialize, Deserialize)]
244pub struct CreateConversationDto {
245 #[serde(rename = "locationId")]
248 pub location_id: String,
249 #[serde(rename = "contactId")]
252 pub contact_id: String,
253}
254
255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
257pub struct CreateConversationSuccessResponse {
258 pub success: bool,
261 pub conversation: ConversationCreateResponseDto,
264}
265
266#[derive(Debug, Clone, Default, Serialize, Deserialize)]
268pub struct CreateCustomSubtypeDto {
269 pub name: String,
272 #[serde(default, skip_serializing_if = "Option::is_none")]
274 pub description: Option<String>,
275 pub channel: String,
279 pub language: String,
282}
283
284#[derive(Debug, Clone, Default, Serialize, Deserialize)]
286pub struct CreateLiveChatMessageFeedbackResponse {
287 pub success: bool,
289}
290
291#[derive(Debug, Clone, Default, Serialize, Deserialize)]
293pub struct DeleteConversationSuccessfulResponse {
294 pub success: bool,
297}
298
299#[derive(Debug, Clone, Default, Serialize, Deserialize)]
301pub struct ErrorDto {
302 pub code: String,
305 #[serde(rename = "type")]
308 pub type_: String,
309 pub message: String,
312}
313
314#[derive(Debug, Clone, Default, Serialize, Deserialize)]
316pub struct ExportMessagesResponseDto {
317 #[serde(default, skip_serializing_if = "Vec::is_empty")]
320 pub messages: Vec<GetMessageResponseDto>,
321 #[serde(
323 rename = "nextCursor",
324 default,
325 skip_serializing_if = "Option::is_none"
326 )]
327 pub next_cursor: Option<String>,
328 pub total: f64,
331}
332
333#[derive(Debug, Clone, Default, Serialize, Deserialize)]
335pub struct ForwardConfigDto {
336 #[serde(rename = "isForwarded")]
339 pub is_forwarded: bool,
340 #[serde(
342 rename = "forwardWholeThread",
343 default,
344 skip_serializing_if = "Option::is_none"
345 )]
346 pub forward_whole_thread: Option<bool>,
347 #[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
349 pub message_id: Option<String>,
350 #[serde(
353 rename = "emailMessageId",
354 default,
355 skip_serializing_if = "Option::is_none"
356 )]
357 pub email_message_id: Option<String>,
358 #[serde(
361 rename = "sourceContactId",
362 default,
363 skip_serializing_if = "Option::is_none"
364 )]
365 pub source_contact_id: Option<String>,
366 #[serde(
369 rename = "sourceConversationId",
370 default,
371 skip_serializing_if = "Option::is_none"
372 )]
373 pub source_conversation_id: Option<String>,
374 #[serde(rename = "toEmail", default, skip_serializing_if = "Option::is_none")]
376 pub to_email: Option<String>,
377 #[serde(
379 rename = "recipientContactId",
380 default,
381 skip_serializing_if = "Option::is_none"
382 )]
383 pub recipient_contact_id: Option<String>,
384 #[serde(
386 rename = "recipientConversationId",
387 default,
388 skip_serializing_if = "Option::is_none"
389 )]
390 pub recipient_conversation_id: Option<String>,
391}
392
393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
395pub struct ForwardResponseDto {
396 #[serde(
398 rename = "forwardWholeThread",
399 default,
400 skip_serializing_if = "Option::is_none"
401 )]
402 pub forward_whole_thread: Option<bool>,
403 #[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
405 pub message_id: Option<String>,
406 #[serde(
408 rename = "emailMessageId",
409 default,
410 skip_serializing_if = "Option::is_none"
411 )]
412 pub email_message_id: Option<String>,
413 #[serde(
415 rename = "sourceContactId",
416 default,
417 skip_serializing_if = "Option::is_none"
418 )]
419 pub source_contact_id: Option<String>,
420 #[serde(
422 rename = "sourceConversationId",
423 default,
424 skip_serializing_if = "Option::is_none"
425 )]
426 pub source_conversation_id: Option<String>,
427 #[serde(
429 rename = "forwardToEmail",
430 default,
431 skip_serializing_if = "Option::is_none"
432 )]
433 pub forward_to_email: Option<String>,
434 #[serde(
436 rename = "recipientContactId",
437 default,
438 skip_serializing_if = "Option::is_none"
439 )]
440 pub recipient_contact_id: Option<String>,
441 #[serde(
443 rename = "recipientConversationId",
444 default,
445 skip_serializing_if = "Option::is_none"
446 )]
447 pub recipient_conversation_id: Option<String>,
448}
449
450#[derive(Debug, Clone, Default, Serialize, Deserialize)]
452pub struct GetConversationByIdResponse {
453 #[serde(rename = "contactId")]
456 pub contact_id: String,
457 #[serde(rename = "locationId")]
460 pub location_id: String,
461 pub deleted: bool,
464 pub inbox: bool,
467 #[serde(rename = "type")]
471 pub type_: f64,
472 #[serde(rename = "unreadCount")]
475 pub unread_count: f64,
476 #[serde(
479 rename = "assignedTo",
480 default,
481 skip_serializing_if = "Option::is_none"
482 )]
483 pub assigned_to: Option<String>,
484 pub id: String,
487 #[serde(default, skip_serializing_if = "Option::is_none")]
489 pub starred: Option<bool>,
490}
491
492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
494pub struct GetConversationSuccessfulResponse {
495 pub success: bool,
498 pub conversation: ConversationDto,
501}
502
503#[derive(Debug, Clone, Default, Serialize, Deserialize)]
505pub struct GetEmailMessageResponseDto {
506 pub id: String,
508 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
510 pub alt_id: Option<String>,
511 #[serde(rename = "threadId")]
514 pub thread_id: String,
515 #[serde(rename = "locationId")]
517 pub location_id: String,
518 #[serde(rename = "contactId")]
520 pub contact_id: String,
521 #[serde(rename = "conversationId")]
523 pub conversation_id: String,
524 #[serde(rename = "dateAdded")]
526 pub date_added: String,
527 #[serde(default, skip_serializing_if = "Option::is_none")]
528 pub subject: Option<String>,
529 pub body: String,
531 pub direction: String,
534 #[serde(default, skip_serializing_if = "Option::is_none")]
537 pub status: Option<String>,
538 #[serde(rename = "contentType")]
540 pub content_type: String,
541 #[serde(default, skip_serializing_if = "Vec::is_empty")]
543 pub attachments: Vec<String>,
544 #[serde(default, skip_serializing_if = "Option::is_none")]
545 pub provider: Option<String>,
546 #[serde(rename = "from")]
549 pub from_: String,
550 #[serde(default, skip_serializing_if = "Vec::is_empty")]
553 pub to: Vec<String>,
554 #[serde(default, skip_serializing_if = "Vec::is_empty")]
556 pub cc: Vec<String>,
557 #[serde(default, skip_serializing_if = "Vec::is_empty")]
559 pub bcc: Vec<String>,
560 #[serde(
562 rename = "replyToMessageId",
563 default,
564 skip_serializing_if = "Option::is_none"
565 )]
566 pub reply_to_message_id: Option<String>,
567 #[serde(default, skip_serializing_if = "Option::is_none")]
570 pub source: Option<String>,
571 #[serde(
573 rename = "conversationProviderId",
574 default,
575 skip_serializing_if = "Option::is_none"
576 )]
577 pub conversation_provider_id: Option<String>,
578}
579
580#[derive(Debug, Clone, Default, Serialize, Deserialize)]
582pub struct GetMessageResponseDto {
583 pub id: String,
585 #[serde(rename = "type")]
587 pub type_: f64,
588 #[serde(rename = "messageType")]
595 pub message_type: String,
596 #[serde(rename = "locationId")]
598 pub location_id: String,
599 #[serde(rename = "contactId")]
601 pub contact_id: String,
602 #[serde(rename = "conversationId")]
604 pub conversation_id: String,
605 #[serde(rename = "dateAdded")]
607 pub date_added: String,
608 #[serde(default, skip_serializing_if = "Option::is_none")]
609 pub body: Option<String>,
610 pub direction: String,
613 #[serde(default, skip_serializing_if = "Option::is_none")]
616 pub status: Option<String>,
617 #[serde(rename = "contentType")]
619 pub content_type: String,
620 #[serde(default, skip_serializing_if = "Vec::is_empty")]
623 pub attachments: Vec<String>,
624 #[serde(default, skip_serializing_if = "Option::is_none")]
625 pub meta: Option<MessageMeta>,
626 #[serde(default, skip_serializing_if = "Option::is_none")]
629 pub source: Option<String>,
630 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
632 pub user_id: Option<String>,
633 #[serde(
635 rename = "conversationProviderId",
636 default,
637 skip_serializing_if = "Option::is_none"
638 )]
639 pub conversation_provider_id: Option<String>,
640 #[serde(
642 rename = "chatWidgetId",
643 default,
644 skip_serializing_if = "Option::is_none"
645 )]
646 pub chat_widget_id: Option<String>,
647}
648
649#[derive(Debug, Clone, Default, Serialize, Deserialize)]
651pub struct GetMessageTranscriptionResponseDto {
652 #[serde(rename = "mediaChannel")]
655 pub media_channel: f64,
656 #[serde(rename = "sentenceIndex")]
659 pub sentence_index: f64,
660 #[serde(rename = "startTime")]
663 pub start_time: f64,
664 #[serde(rename = "endTime")]
667 pub end_time: f64,
668 pub transcript: String,
671 pub confidence: f64,
674}
675
676#[derive(Debug, Clone, Default, Serialize, Deserialize)]
678pub struct GetMessagesByConversationResponseDto {
679 #[serde(rename = "lastMessageId")]
682 pub last_message_id: String,
683 #[serde(rename = "nextPage")]
688 pub next_page: bool,
689 #[serde(default, skip_serializing_if = "Vec::is_empty")]
692 pub messages: Vec<GetMessageResponseDto>,
693}
694
695#[derive(Debug, Clone, Default, Serialize, Deserialize)]
697pub struct InitiateFileUploadDto {
698 #[serde(rename = "locationId")]
701 pub location_id: String,
702 #[serde(rename = "conversationId")]
705 pub conversation_id: String,
706 pub filename: String,
709 #[serde(rename = "contentType")]
712 pub content_type: String,
713 #[serde(rename = "fileSize", default, skip_serializing_if = "Option::is_none")]
715 pub file_size: Option<f64>,
716 pub channel: String,
719}
720
721#[derive(Debug, Clone, Default, Serialize, Deserialize)]
723pub struct InitiateFileUploadResponseDto {
724 #[serde(rename = "uploadUrl")]
727 pub upload_url: String,
728 #[serde(rename = "uploadId")]
731 pub upload_id: String,
732 #[serde(rename = "filePath")]
735 pub file_path: String,
736 #[serde(rename = "expiresAt")]
739 pub expires_at: f64,
740 #[serde(rename = "maxFileSize")]
743 pub max_file_size: f64,
744}
745
746#[derive(Debug, Clone, Default, Serialize, Deserialize)]
748pub struct MessageMeta {
749 #[serde(
751 rename = "callDuration",
752 default,
753 skip_serializing_if = "Option::is_none"
754 )]
755 pub call_duration: Option<String>,
756 #[serde(
761 rename = "callStatus",
762 default,
763 skip_serializing_if = "Option::is_none"
764 )]
765 pub call_status: Option<String>,
766 #[serde(default, skip_serializing_if = "Option::is_none")]
769 pub email: Option<serde_json::Value>,
770}
771
772#[derive(Debug, Clone, Default, Serialize, Deserialize)]
774pub struct ProcessMessageBodyDto {
775 #[serde(rename = "type")]
780 pub type_: String,
781 #[serde(default, skip_serializing_if = "Vec::is_empty")]
783 pub attachments: Vec<String>,
784 #[serde(default, skip_serializing_if = "Option::is_none")]
786 pub message: Option<String>,
787 #[serde(rename = "conversationId")]
790 pub conversation_id: String,
791 #[serde(rename = "contactId")]
794 pub contact_id: String,
795 #[serde(rename = "conversationProviderId")]
798 pub conversation_provider_id: String,
799 #[serde(default, skip_serializing_if = "Option::is_none")]
801 pub html: Option<String>,
802 #[serde(default, skip_serializing_if = "Option::is_none")]
804 pub subject: Option<String>,
805 #[serde(rename = "emailFrom", default, skip_serializing_if = "Option::is_none")]
808 pub email_from: Option<String>,
809 #[serde(rename = "emailTo", default, skip_serializing_if = "Option::is_none")]
812 pub email_to: Option<String>,
813 #[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
815 pub email_cc: Vec<String>,
816 #[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
818 pub email_bcc: Vec<String>,
819 #[serde(
822 rename = "emailMessageId",
823 default,
824 skip_serializing_if = "Option::is_none"
825 )]
826 pub email_message_id: Option<String>,
827 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
829 pub alt_id: Option<String>,
830 #[serde(default, skip_serializing_if = "Option::is_none")]
832 pub direction: Option<serde_json::Value>,
833 #[serde(default, skip_serializing_if = "Option::is_none")]
836 pub date: Option<String>,
837 #[serde(default, skip_serializing_if = "Option::is_none")]
839 pub call: Option<CallDataDTO>,
840}
841
842#[derive(Debug, Clone, Default, Serialize, Deserialize)]
844pub struct ProcessMessageResponseDto {
845 pub success: bool,
847 #[serde(rename = "conversationId")]
850 pub conversation_id: String,
851 #[serde(rename = "messageId")]
854 pub message_id: String,
855 pub message: String,
857 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
858 pub contact_id: Option<String>,
859 #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
861 pub date_added: Option<String>,
862 #[serde(
863 rename = "emailMessageId",
864 default,
865 skip_serializing_if = "Option::is_none"
866 )]
867 pub email_message_id: Option<String>,
868}
869
870#[derive(Debug, Clone, Default, Serialize, Deserialize)]
872pub struct ProcessOutboundMessageBodyDto {
873 #[serde(rename = "type")]
877 pub type_: String,
878 #[serde(default, skip_serializing_if = "Vec::is_empty")]
880 pub attachments: Vec<String>,
881 #[serde(rename = "conversationId")]
884 pub conversation_id: String,
885 #[serde(rename = "conversationProviderId")]
888 pub conversation_provider_id: String,
889 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
891 pub alt_id: Option<String>,
892 #[serde(default, skip_serializing_if = "Option::is_none")]
895 pub date: Option<String>,
896 #[serde(default, skip_serializing_if = "Option::is_none")]
898 pub call: Option<CallDataDTO>,
899}
900
901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
903pub struct SendConversationResponseDto {
904 #[serde(default, skip_serializing_if = "Vec::is_empty")]
907 pub conversations: Vec<ConversationSchema>,
908 pub total: f64,
911}
912
913#[derive(Debug, Clone, Default, Serialize, Deserialize)]
915pub struct SendMessageBodyDto {
916 #[serde(rename = "type")]
921 pub type_: String,
922 #[serde(rename = "subType")]
925 pub sub_type: serde_json::Value,
926 #[serde(rename = "contactId")]
929 pub contact_id: String,
930 #[serde(
932 rename = "appointmentId",
933 default,
934 skip_serializing_if = "Option::is_none"
935 )]
936 pub appointment_id: Option<String>,
937 #[serde(default, skip_serializing_if = "Vec::is_empty")]
939 pub attachments: Vec<String>,
940 #[serde(rename = "emailFrom", default, skip_serializing_if = "Option::is_none")]
942 pub email_from: Option<String>,
943 #[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
945 pub email_cc: Vec<String>,
946 #[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
948 pub email_bcc: Vec<String>,
949 #[serde(default, skip_serializing_if = "Option::is_none")]
951 pub html: Option<String>,
952 #[serde(default, skip_serializing_if = "Option::is_none")]
954 pub message: Option<String>,
955 #[serde(default, skip_serializing_if = "Option::is_none")]
957 pub subject: Option<String>,
958 #[serde(
960 rename = "replyMessageId",
961 default,
962 skip_serializing_if = "Option::is_none"
963 )]
964 pub reply_message_id: Option<String>,
965 #[serde(
967 rename = "templateId",
968 default,
969 skip_serializing_if = "Option::is_none"
970 )]
971 pub template_id: Option<String>,
972 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
975 pub thread_id: Option<String>,
976 #[serde(
978 rename = "scheduledTimestamp",
979 default,
980 skip_serializing_if = "Option::is_none"
981 )]
982 pub scheduled_timestamp: Option<f64>,
983 #[serde(
985 rename = "conversationProviderId",
986 default,
987 skip_serializing_if = "Option::is_none"
988 )]
989 pub conversation_provider_id: Option<String>,
990 #[serde(rename = "emailTo", default, skip_serializing_if = "Option::is_none")]
993 pub email_to: Option<String>,
994 #[serde(
996 rename = "customSubtypeId",
997 default,
998 skip_serializing_if = "Option::is_none"
999 )]
1000 pub custom_subtype_id: Option<String>,
1001 #[serde(
1004 rename = "emailReplyMode",
1005 default,
1006 skip_serializing_if = "Option::is_none"
1007 )]
1008 pub email_reply_mode: Option<String>,
1009 #[serde(
1011 rename = "fromNumber",
1012 default,
1013 skip_serializing_if = "Option::is_none"
1014 )]
1015 pub from_number: Option<String>,
1016 #[serde(rename = "toNumber", default, skip_serializing_if = "Option::is_none")]
1018 pub to_number: Option<String>,
1019 #[serde(default, skip_serializing_if = "Option::is_none")]
1021 pub forward: Option<ForwardConfigDto>,
1022 pub status: String,
1026 #[serde(
1028 rename = "usesNativeSchedulingAi",
1029 default,
1030 skip_serializing_if = "Option::is_none"
1031 )]
1032 pub uses_native_scheduling_ai: Option<bool>,
1033 #[serde(
1036 rename = "optimizationPeriod",
1037 default,
1038 skip_serializing_if = "Option::is_none"
1039 )]
1040 pub optimization_period: Option<String>,
1041}
1042
1043#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1045pub struct SendMessageResponseDto {
1046 #[serde(rename = "conversationId")]
1049 pub conversation_id: String,
1050 #[serde(
1053 rename = "emailMessageId",
1054 default,
1055 skip_serializing_if = "Option::is_none"
1056 )]
1057 pub email_message_id: Option<String>,
1058 #[serde(rename = "messageId")]
1061 pub message_id: String,
1062 #[serde(rename = "messageIds", default, skip_serializing_if = "Vec::is_empty")]
1065 pub message_ids: Vec<String>,
1066 #[serde(default, skip_serializing_if = "Option::is_none")]
1068 pub msg: Option<String>,
1069 #[serde(
1071 rename = "forwardData",
1072 default,
1073 skip_serializing_if = "Option::is_none"
1074 )]
1075 pub forward_data: Option<ForwardResponseDto>,
1076 pub status: String,
1080}
1081
1082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1084pub struct SendReviewReplyDto {
1085 #[serde(rename = "conversationId")]
1088 pub conversation_id: String,
1089 #[serde(rename = "locationId")]
1092 pub location_id: String,
1093 pub message: String,
1096}
1097
1098#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1100pub struct StartAfterArrayNumberSchema {
1101 #[serde(
1104 rename = "startAfterDate",
1105 default,
1106 skip_serializing_if = "Vec::is_empty"
1107 )]
1108 pub start_after_date: Vec<String>,
1109}
1110
1111#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1113pub struct StartAfterNumberSchema {
1114 #[serde(
1117 rename = "startAfterDate",
1118 default,
1119 skip_serializing_if = "Option::is_none"
1120 )]
1121 pub start_after_date: Option<f64>,
1122}
1123
1124#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1126pub struct SubscriptionActionDto {
1127 #[serde(rename = "type")]
1131 pub type_: String,
1132 #[serde(default, skip_serializing_if = "Option::is_none")]
1135 pub subtype_name: Option<String>,
1136 #[serde(default, skip_serializing_if = "Option::is_none")]
1138 pub subtype_id: Option<String>,
1139 pub subtype_status: String,
1143}
1144
1145#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1147pub struct UpdateConversationDto {
1148 #[serde(rename = "locationId")]
1151 pub location_id: String,
1152 #[serde(
1154 rename = "unreadCount",
1155 default,
1156 skip_serializing_if = "Option::is_none"
1157 )]
1158 pub unread_count: Option<f64>,
1159 #[serde(default, skip_serializing_if = "Option::is_none")]
1161 pub starred: Option<bool>,
1162 #[serde(default, skip_serializing_if = "Option::is_none")]
1163 pub feedback: Option<serde_json::Value>,
1164}
1165
1166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1168pub struct UpdateCustomSubtypeDto {
1169 #[serde(default, skip_serializing_if = "Option::is_none")]
1171 pub name: Option<String>,
1172 #[serde(default, skip_serializing_if = "Option::is_none")]
1174 pub description: Option<String>,
1175 #[serde(default, skip_serializing_if = "Option::is_none")]
1177 pub archived: Option<bool>,
1178 #[serde(default, skip_serializing_if = "Option::is_none")]
1180 pub resubscription_legal_form_id: Option<String>,
1181}
1182
1183#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1185pub struct UpdateMessageStatusDto {
1186 pub status: String,
1190 #[serde(default, skip_serializing_if = "Option::is_none")]
1192 pub error: Option<ErrorDto>,
1193 #[serde(
1195 rename = "emailMessageId",
1196 default,
1197 skip_serializing_if = "Option::is_none"
1198 )]
1199 pub email_message_id: Option<String>,
1200 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1202 pub recipients: Vec<String>,
1203}
1204
1205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1207pub struct UploadFilesDto {
1208 #[serde(rename = "conversationId")]
1211 pub conversation_id: String,
1212 #[serde(rename = "contactId")]
1215 pub contact_id: String,
1216 #[serde(rename = "locationId")]
1218 pub location_id: String,
1219 #[serde(
1221 rename = "attachmentUrls",
1222 default,
1223 skip_serializing_if = "Vec::is_empty"
1224 )]
1225 pub attachment_urls: Vec<String>,
1226 #[serde(
1228 rename = "chatServiceSid",
1229 default,
1230 skip_serializing_if = "Option::is_none"
1231 )]
1232 pub chat_service_sid: Option<String>,
1233 #[serde(
1236 rename = "isGroupSms",
1237 default,
1238 skip_serializing_if = "Option::is_none"
1239 )]
1240 pub is_group_sms: Option<String>,
1241}
1242
1243#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1245pub struct UploadFilesErrorResponseDto {
1246 pub status: String,
1250 pub message: String,
1253}
1254
1255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1257pub struct UploadFilesResponseDto {
1258 #[serde(rename = "uploadedFiles")]
1260 pub uploaded_files: serde_json::Value,
1261 #[serde(
1263 rename = "twilioMediaSids",
1264 default,
1265 skip_serializing_if = "Vec::is_empty"
1266 )]
1267 pub twilio_media_sids: Vec<String>,
1268}
1269
1270#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1272pub struct UserSubscriptionChangeDto {
1273 #[serde(rename = "locationId")]
1276 pub location_id: String,
1277 #[serde(rename = "contactId")]
1280 pub contact_id: String,
1281 pub email: String,
1284 pub subscription_action: SubscriptionActionDto,
1287 #[serde(default, skip_serializing_if = "Option::is_none")]
1289 pub legal_reason: Option<String>,
1290 #[serde(default, skip_serializing_if = "Option::is_none")]
1292 pub legal_description: Option<String>,
1293}
1294
1295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1297pub struct UserTypingBody {
1298 #[serde(rename = "locationId")]
1301 pub location_id: String,
1302 #[serde(rename = "isTyping")]
1305 pub is_typing: String,
1306 #[serde(rename = "visitorId")]
1312 pub visitor_id: String,
1313 #[serde(rename = "conversationId")]
1316 pub conversation_id: String,
1317}