1#![allow(
14 missing_docs,
15 clippy::doc_lazy_continuation,
16 clippy::doc_overindented_list_items
17)]
18
19use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct AddMessageAttachmentsDto {
24 #[serde(default, skip_serializing_if = "Vec::is_empty")]
27 pub attachments: Vec<String>,
28}
29
30#[derive(Debug, Clone, Default, Serialize, Deserialize)]
32pub struct CallDataDTO {
33 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub to: Option<String>,
36 #[serde(rename = "from", default, skip_serializing_if = "Option::is_none")]
38 pub from_: Option<String>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
43 pub status: Option<String>,
44}
45
46#[derive(Debug, Clone, Default, Serialize, Deserialize)]
48pub struct CancelScheduledResponseDto {
49 pub status: f64,
52 pub message: String,
55}
56
57#[derive(Debug, Clone, Default, Serialize, Deserialize)]
59pub struct CompleteFileUploadDto {
60 #[serde(rename = "uploadId")]
63 pub upload_id: String,
64 #[serde(rename = "filePath")]
67 pub file_path: String,
68 #[serde(rename = "locationId")]
71 pub location_id: String,
72 #[serde(rename = "conversationId")]
75 pub conversation_id: String,
76 pub filename: String,
79}
80
81#[derive(Debug, Clone, Default, Serialize, Deserialize)]
83pub struct CompleteFileUploadResponseDto {
84 #[serde(rename = "uploadedFiles")]
87 pub uploaded_files: serde_json::Value,
88 pub metadata: serde_json::Value,
91}
92
93#[derive(Debug, Clone, Default, Serialize, Deserialize)]
95pub struct ConversationCreateResponseDto {
96 pub id: String,
99 #[serde(rename = "dateUpdated")]
102 pub date_updated: String,
103 #[serde(rename = "dateAdded")]
106 pub date_added: String,
107 pub deleted: bool,
110 #[serde(rename = "contactId")]
113 pub contact_id: String,
114 #[serde(rename = "locationId")]
117 pub location_id: String,
118 #[serde(rename = "lastMessageDate")]
121 pub last_message_date: String,
122 #[serde(
124 rename = "assignedTo",
125 default,
126 skip_serializing_if = "Option::is_none"
127 )]
128 pub assigned_to: Option<String>,
129}
130
131#[derive(Debug, Clone, Default, Serialize, Deserialize)]
133pub struct ConversationDto {
134 #[serde(default, skip_serializing_if = "Option::is_none")]
136 pub id: Option<String>,
137 #[serde(rename = "locationId")]
140 pub location_id: String,
141 #[serde(rename = "contactId")]
144 pub contact_id: String,
145 #[serde(
147 rename = "assignedTo",
148 default,
149 skip_serializing_if = "Option::is_none"
150 )]
151 pub assigned_to: Option<String>,
152 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
154 pub user_id: Option<String>,
155 #[serde(
157 rename = "lastMessageBody",
158 default,
159 skip_serializing_if = "Option::is_none"
160 )]
161 pub last_message_body: Option<String>,
162 #[serde(
164 rename = "lastMessageDate",
165 default,
166 skip_serializing_if = "Option::is_none"
167 )]
168 pub last_message_date: Option<String>,
169 #[serde(
175 rename = "lastMessageType",
176 default,
177 skip_serializing_if = "Option::is_none"
178 )]
179 pub last_message_type: Option<String>,
180 #[serde(
182 rename = "unreadCount",
183 default,
184 skip_serializing_if = "Option::is_none"
185 )]
186 pub unread_count: Option<f64>,
187 #[serde(default, skip_serializing_if = "Option::is_none")]
189 pub inbox: Option<bool>,
190 #[serde(default, skip_serializing_if = "Option::is_none")]
192 pub starred: Option<bool>,
193 pub deleted: bool,
196}
197
198#[derive(Debug, Clone, Default, Serialize, Deserialize)]
200pub struct ConversationSchema {
201 pub id: String,
204 #[serde(rename = "contactId")]
207 pub contact_id: String,
208 #[serde(rename = "locationId")]
211 pub location_id: String,
212 #[serde(rename = "lastMessageBody")]
215 pub last_message_body: String,
216 #[serde(rename = "lastMessageType")]
223 pub last_message_type: String,
224 #[serde(rename = "type")]
229 pub type_: String,
230 #[serde(rename = "unreadCount")]
233 pub unread_count: f64,
234 #[serde(rename = "fullName")]
237 pub full_name: String,
238 #[serde(rename = "contactName")]
241 pub contact_name: String,
242 pub email: String,
245 pub phone: String,
248}
249
250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
252pub struct CreateConversationDto {
253 #[serde(rename = "locationId")]
256 pub location_id: String,
257 #[serde(rename = "contactId")]
260 pub contact_id: String,
261}
262
263#[derive(Debug, Clone, Default, Serialize, Deserialize)]
265pub struct CreateConversationSuccessResponse {
266 pub success: bool,
269 pub conversation: ConversationCreateResponseDto,
272}
273
274#[derive(Debug, Clone, Default, Serialize, Deserialize)]
276pub struct CreateCustomSubtypeDto {
277 pub name: String,
280 #[serde(default, skip_serializing_if = "Option::is_none")]
282 pub description: Option<String>,
283 pub channel: String,
287 pub language: String,
290}
291
292#[derive(Debug, Clone, Default, Serialize, Deserialize)]
294pub struct CreateLiveChatMessageFeedbackResponse {
295 pub success: bool,
297}
298
299#[derive(Debug, Clone, Default, Serialize, Deserialize)]
301pub struct DeleteConversationSuccessfulResponse {
302 pub success: bool,
305}
306
307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
309pub struct ErrorDto {
310 pub code: String,
313 #[serde(rename = "type")]
316 pub type_: String,
317 pub message: String,
320}
321
322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
324pub struct ExportMessagesResponseDto {
325 #[serde(default, skip_serializing_if = "Vec::is_empty")]
328 pub messages: Vec<GetMessageResponseDto>,
329 #[serde(
331 rename = "nextCursor",
332 default,
333 skip_serializing_if = "Option::is_none"
334 )]
335 pub next_cursor: Option<String>,
336 pub total: f64,
339}
340
341#[derive(Debug, Clone, Default, Serialize, Deserialize)]
343pub struct ForwardConfigDto {
344 #[serde(rename = "isForwarded")]
347 pub is_forwarded: bool,
348 #[serde(
350 rename = "forwardWholeThread",
351 default,
352 skip_serializing_if = "Option::is_none"
353 )]
354 pub forward_whole_thread: Option<bool>,
355 #[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
357 pub message_id: Option<String>,
358 #[serde(
361 rename = "emailMessageId",
362 default,
363 skip_serializing_if = "Option::is_none"
364 )]
365 pub email_message_id: Option<String>,
366 #[serde(
369 rename = "sourceContactId",
370 default,
371 skip_serializing_if = "Option::is_none"
372 )]
373 pub source_contact_id: Option<String>,
374 #[serde(
377 rename = "sourceConversationId",
378 default,
379 skip_serializing_if = "Option::is_none"
380 )]
381 pub source_conversation_id: Option<String>,
382 #[serde(rename = "toEmail", default, skip_serializing_if = "Option::is_none")]
384 pub to_email: Option<String>,
385 #[serde(
387 rename = "recipientContactId",
388 default,
389 skip_serializing_if = "Option::is_none"
390 )]
391 pub recipient_contact_id: Option<String>,
392 #[serde(
394 rename = "recipientConversationId",
395 default,
396 skip_serializing_if = "Option::is_none"
397 )]
398 pub recipient_conversation_id: Option<String>,
399}
400
401#[derive(Debug, Clone, Default, Serialize, Deserialize)]
403pub struct ForwardResponseDto {
404 #[serde(
406 rename = "forwardWholeThread",
407 default,
408 skip_serializing_if = "Option::is_none"
409 )]
410 pub forward_whole_thread: Option<bool>,
411 #[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
413 pub message_id: Option<String>,
414 #[serde(
416 rename = "emailMessageId",
417 default,
418 skip_serializing_if = "Option::is_none"
419 )]
420 pub email_message_id: Option<String>,
421 #[serde(
423 rename = "sourceContactId",
424 default,
425 skip_serializing_if = "Option::is_none"
426 )]
427 pub source_contact_id: Option<String>,
428 #[serde(
430 rename = "sourceConversationId",
431 default,
432 skip_serializing_if = "Option::is_none"
433 )]
434 pub source_conversation_id: Option<String>,
435 #[serde(
437 rename = "forwardToEmail",
438 default,
439 skip_serializing_if = "Option::is_none"
440 )]
441 pub forward_to_email: Option<String>,
442 #[serde(
444 rename = "recipientContactId",
445 default,
446 skip_serializing_if = "Option::is_none"
447 )]
448 pub recipient_contact_id: Option<String>,
449 #[serde(
451 rename = "recipientConversationId",
452 default,
453 skip_serializing_if = "Option::is_none"
454 )]
455 pub recipient_conversation_id: Option<String>,
456}
457
458#[derive(Debug, Clone, Default, Serialize, Deserialize)]
460pub struct GetConversationByIdResponse {
461 #[serde(rename = "contactId")]
464 pub contact_id: String,
465 #[serde(rename = "locationId")]
468 pub location_id: String,
469 pub deleted: bool,
472 pub inbox: bool,
475 #[serde(rename = "type")]
479 pub type_: f64,
480 #[serde(rename = "unreadCount")]
483 pub unread_count: f64,
484 #[serde(
487 rename = "assignedTo",
488 default,
489 skip_serializing_if = "Option::is_none"
490 )]
491 pub assigned_to: Option<String>,
492 pub id: String,
495 #[serde(default, skip_serializing_if = "Option::is_none")]
497 pub starred: Option<bool>,
498}
499
500#[derive(Debug, Clone, Default, Serialize, Deserialize)]
502pub struct GetConversationSuccessfulResponse {
503 pub success: bool,
506 pub conversation: ConversationDto,
509}
510
511#[derive(Debug, Clone, Default, Serialize, Deserialize)]
513pub struct GetEmailMessageResponseDto {
514 pub id: String,
516 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
518 pub alt_id: Option<String>,
519 #[serde(rename = "threadId")]
522 pub thread_id: String,
523 #[serde(rename = "locationId")]
525 pub location_id: String,
526 #[serde(rename = "contactId")]
528 pub contact_id: String,
529 #[serde(rename = "conversationId")]
531 pub conversation_id: String,
532 #[serde(rename = "dateAdded")]
534 pub date_added: String,
535 #[serde(default, skip_serializing_if = "Option::is_none")]
536 pub subject: Option<String>,
537 pub body: String,
539 pub direction: String,
542 #[serde(default, skip_serializing_if = "Option::is_none")]
545 pub status: Option<String>,
546 #[serde(rename = "contentType")]
548 pub content_type: String,
549 #[serde(default, skip_serializing_if = "Vec::is_empty")]
551 pub attachments: Vec<String>,
552 #[serde(default, skip_serializing_if = "Option::is_none")]
553 pub provider: Option<String>,
554 #[serde(rename = "from")]
557 pub from_: String,
558 #[serde(default, skip_serializing_if = "Vec::is_empty")]
561 pub to: Vec<String>,
562 #[serde(default, skip_serializing_if = "Vec::is_empty")]
564 pub cc: Vec<String>,
565 #[serde(default, skip_serializing_if = "Vec::is_empty")]
567 pub bcc: Vec<String>,
568 #[serde(
570 rename = "replyToMessageId",
571 default,
572 skip_serializing_if = "Option::is_none"
573 )]
574 pub reply_to_message_id: Option<String>,
575 #[serde(default, skip_serializing_if = "Option::is_none")]
578 pub source: Option<String>,
579 #[serde(
581 rename = "conversationProviderId",
582 default,
583 skip_serializing_if = "Option::is_none"
584 )]
585 pub conversation_provider_id: Option<String>,
586}
587
588#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590pub struct GetMessageResponseDto {
591 pub id: String,
593 #[serde(rename = "type")]
595 pub type_: f64,
596 #[serde(rename = "messageType")]
603 pub message_type: String,
604 #[serde(rename = "locationId")]
606 pub location_id: String,
607 #[serde(rename = "contactId")]
609 pub contact_id: String,
610 #[serde(rename = "conversationId")]
612 pub conversation_id: String,
613 #[serde(rename = "dateAdded")]
615 pub date_added: String,
616 #[serde(default, skip_serializing_if = "Option::is_none")]
617 pub body: Option<String>,
618 pub direction: String,
621 #[serde(default, skip_serializing_if = "Option::is_none")]
624 pub status: Option<String>,
625 #[serde(rename = "contentType")]
627 pub content_type: String,
628 #[serde(default, skip_serializing_if = "Vec::is_empty")]
631 pub attachments: Vec<String>,
632 #[serde(default, skip_serializing_if = "Option::is_none")]
633 pub meta: Option<MessageMeta>,
634 #[serde(default, skip_serializing_if = "Option::is_none")]
637 pub source: Option<String>,
638 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
640 pub user_id: Option<String>,
641 #[serde(
643 rename = "conversationProviderId",
644 default,
645 skip_serializing_if = "Option::is_none"
646 )]
647 pub conversation_provider_id: Option<String>,
648 #[serde(
650 rename = "chatWidgetId",
651 default,
652 skip_serializing_if = "Option::is_none"
653 )]
654 pub chat_widget_id: Option<String>,
655}
656
657#[derive(Debug, Clone, Default, Serialize, Deserialize)]
659pub struct GetMessageTranscriptionResponseDto {
660 #[serde(rename = "mediaChannel")]
663 pub media_channel: f64,
664 #[serde(rename = "sentenceIndex")]
667 pub sentence_index: f64,
668 #[serde(rename = "startTime")]
671 pub start_time: f64,
672 #[serde(rename = "endTime")]
675 pub end_time: f64,
676 pub transcript: String,
679 pub confidence: f64,
682}
683
684#[derive(Debug, Clone, Default, Serialize, Deserialize)]
686pub struct GetMessagesByConversationResponseDto {
687 #[serde(rename = "lastMessageId")]
690 pub last_message_id: String,
691 #[serde(rename = "nextPage")]
696 pub next_page: bool,
697 #[serde(default, skip_serializing_if = "Vec::is_empty")]
700 pub messages: Vec<GetMessageResponseDto>,
701}
702
703#[derive(Debug, Clone, Default, Serialize, Deserialize)]
705pub struct InitiateFileUploadDto {
706 #[serde(rename = "locationId")]
709 pub location_id: String,
710 #[serde(rename = "conversationId")]
713 pub conversation_id: String,
714 pub filename: String,
717 #[serde(rename = "contentType")]
720 pub content_type: String,
721 #[serde(rename = "fileSize", default, skip_serializing_if = "Option::is_none")]
723 pub file_size: Option<f64>,
724 pub channel: String,
727}
728
729#[derive(Debug, Clone, Default, Serialize, Deserialize)]
731pub struct InitiateFileUploadResponseDto {
732 #[serde(rename = "uploadUrl")]
735 pub upload_url: String,
736 #[serde(rename = "uploadId")]
739 pub upload_id: String,
740 #[serde(rename = "filePath")]
743 pub file_path: String,
744 #[serde(rename = "expiresAt")]
747 pub expires_at: f64,
748 #[serde(rename = "maxFileSize")]
751 pub max_file_size: f64,
752}
753
754#[derive(Debug, Clone, Default, Serialize, Deserialize)]
756pub struct MessageMeta {
757 #[serde(
759 rename = "callDuration",
760 default,
761 skip_serializing_if = "Option::is_none"
762 )]
763 pub call_duration: Option<String>,
764 #[serde(
769 rename = "callStatus",
770 default,
771 skip_serializing_if = "Option::is_none"
772 )]
773 pub call_status: Option<String>,
774 #[serde(default, skip_serializing_if = "Option::is_none")]
777 pub email: Option<serde_json::Value>,
778}
779
780#[derive(Debug, Clone, Default, Serialize, Deserialize)]
782pub struct ProcessMessageBodyDto {
783 #[serde(rename = "type")]
788 pub type_: String,
789 #[serde(default, skip_serializing_if = "Vec::is_empty")]
791 pub attachments: Vec<String>,
792 #[serde(default, skip_serializing_if = "Option::is_none")]
794 pub message: Option<String>,
795 #[serde(rename = "conversationId")]
798 pub conversation_id: String,
799 #[serde(rename = "contactId")]
802 pub contact_id: String,
803 #[serde(rename = "conversationProviderId")]
806 pub conversation_provider_id: String,
807 #[serde(default, skip_serializing_if = "Option::is_none")]
809 pub html: Option<String>,
810 #[serde(default, skip_serializing_if = "Option::is_none")]
812 pub subject: Option<String>,
813 #[serde(rename = "emailFrom", default, skip_serializing_if = "Option::is_none")]
816 pub email_from: Option<String>,
817 #[serde(rename = "emailTo", default, skip_serializing_if = "Option::is_none")]
820 pub email_to: Option<String>,
821 #[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
823 pub email_cc: Vec<String>,
824 #[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
826 pub email_bcc: Vec<String>,
827 #[serde(
830 rename = "emailMessageId",
831 default,
832 skip_serializing_if = "Option::is_none"
833 )]
834 pub email_message_id: Option<String>,
835 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
837 pub alt_id: Option<String>,
838 #[serde(default, skip_serializing_if = "Option::is_none")]
840 pub direction: Option<serde_json::Value>,
841 #[serde(default, skip_serializing_if = "Option::is_none")]
844 pub date: Option<String>,
845 #[serde(default, skip_serializing_if = "Option::is_none")]
847 pub call: Option<CallDataDTO>,
848}
849
850#[derive(Debug, Clone, Default, Serialize, Deserialize)]
852pub struct ProcessMessageResponseDto {
853 pub success: bool,
855 #[serde(rename = "conversationId")]
858 pub conversation_id: String,
859 #[serde(rename = "messageId")]
862 pub message_id: String,
863 pub message: String,
865 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
866 pub contact_id: Option<String>,
867 #[serde(rename = "dateAdded", default, skip_serializing_if = "Option::is_none")]
869 pub date_added: Option<String>,
870 #[serde(
871 rename = "emailMessageId",
872 default,
873 skip_serializing_if = "Option::is_none"
874 )]
875 pub email_message_id: Option<String>,
876}
877
878#[derive(Debug, Clone, Default, Serialize, Deserialize)]
880pub struct ProcessOutboundMessageBodyDto {
881 #[serde(rename = "type")]
885 pub type_: String,
886 #[serde(default, skip_serializing_if = "Vec::is_empty")]
888 pub attachments: Vec<String>,
889 #[serde(rename = "conversationId")]
892 pub conversation_id: String,
893 #[serde(rename = "conversationProviderId")]
896 pub conversation_provider_id: String,
897 #[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
899 pub alt_id: Option<String>,
900 #[serde(default, skip_serializing_if = "Option::is_none")]
903 pub date: Option<String>,
904 #[serde(default, skip_serializing_if = "Option::is_none")]
906 pub call: Option<CallDataDTO>,
907}
908
909#[derive(Debug, Clone, Default, Serialize, Deserialize)]
911pub struct SendConversationResponseDto {
912 #[serde(default, skip_serializing_if = "Vec::is_empty")]
915 pub conversations: Vec<ConversationSchema>,
916 pub total: f64,
919}
920
921#[derive(Debug, Clone, Default, Serialize, Deserialize)]
923pub struct SendMessageBodyDto {
924 #[serde(rename = "type")]
929 pub type_: String,
930 #[serde(rename = "subType")]
933 pub sub_type: serde_json::Value,
934 #[serde(rename = "contactId")]
937 pub contact_id: String,
938 #[serde(
940 rename = "appointmentId",
941 default,
942 skip_serializing_if = "Option::is_none"
943 )]
944 pub appointment_id: Option<String>,
945 #[serde(default, skip_serializing_if = "Vec::is_empty")]
947 pub attachments: Vec<String>,
948 #[serde(rename = "emailFrom", default, skip_serializing_if = "Option::is_none")]
950 pub email_from: Option<String>,
951 #[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
953 pub email_cc: Vec<String>,
954 #[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
956 pub email_bcc: Vec<String>,
957 #[serde(default, skip_serializing_if = "Option::is_none")]
959 pub html: Option<String>,
960 #[serde(default, skip_serializing_if = "Option::is_none")]
962 pub message: Option<String>,
963 #[serde(default, skip_serializing_if = "Option::is_none")]
965 pub subject: Option<String>,
966 #[serde(
968 rename = "replyMessageId",
969 default,
970 skip_serializing_if = "Option::is_none"
971 )]
972 pub reply_message_id: Option<String>,
973 #[serde(
975 rename = "templateId",
976 default,
977 skip_serializing_if = "Option::is_none"
978 )]
979 pub template_id: Option<String>,
980 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
983 pub thread_id: Option<String>,
984 #[serde(
986 rename = "scheduledTimestamp",
987 default,
988 skip_serializing_if = "Option::is_none"
989 )]
990 pub scheduled_timestamp: Option<f64>,
991 #[serde(
993 rename = "conversationProviderId",
994 default,
995 skip_serializing_if = "Option::is_none"
996 )]
997 pub conversation_provider_id: Option<String>,
998 #[serde(rename = "emailTo", default, skip_serializing_if = "Option::is_none")]
1001 pub email_to: Option<String>,
1002 #[serde(
1004 rename = "customSubtypeId",
1005 default,
1006 skip_serializing_if = "Option::is_none"
1007 )]
1008 pub custom_subtype_id: Option<String>,
1009 #[serde(
1012 rename = "emailReplyMode",
1013 default,
1014 skip_serializing_if = "Option::is_none"
1015 )]
1016 pub email_reply_mode: Option<String>,
1017 #[serde(
1019 rename = "fromNumber",
1020 default,
1021 skip_serializing_if = "Option::is_none"
1022 )]
1023 pub from_number: Option<String>,
1024 #[serde(rename = "toNumber", default, skip_serializing_if = "Option::is_none")]
1026 pub to_number: Option<String>,
1027 #[serde(default, skip_serializing_if = "Option::is_none")]
1029 pub forward: Option<ForwardConfigDto>,
1030 pub status: String,
1034 #[serde(
1036 rename = "usesNativeSchedulingAi",
1037 default,
1038 skip_serializing_if = "Option::is_none"
1039 )]
1040 pub uses_native_scheduling_ai: Option<bool>,
1041 #[serde(
1044 rename = "optimizationPeriod",
1045 default,
1046 skip_serializing_if = "Option::is_none"
1047 )]
1048 pub optimization_period: Option<String>,
1049}
1050
1051#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1053pub struct SendMessageResponseDto {
1054 #[serde(rename = "conversationId")]
1057 pub conversation_id: String,
1058 #[serde(
1061 rename = "emailMessageId",
1062 default,
1063 skip_serializing_if = "Option::is_none"
1064 )]
1065 pub email_message_id: Option<String>,
1066 #[serde(rename = "messageId")]
1069 pub message_id: String,
1070 #[serde(rename = "messageIds", default, skip_serializing_if = "Vec::is_empty")]
1073 pub message_ids: Vec<String>,
1074 #[serde(default, skip_serializing_if = "Option::is_none")]
1076 pub msg: Option<String>,
1077 #[serde(
1079 rename = "forwardData",
1080 default,
1081 skip_serializing_if = "Option::is_none"
1082 )]
1083 pub forward_data: Option<ForwardResponseDto>,
1084 pub status: String,
1088}
1089
1090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1092pub struct SendReviewReplyDto {
1093 #[serde(rename = "conversationId")]
1096 pub conversation_id: String,
1097 #[serde(rename = "locationId")]
1100 pub location_id: String,
1101 pub message: String,
1104}
1105
1106#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1108pub struct StartAfterArrayNumberSchema {
1109 #[serde(
1112 rename = "startAfterDate",
1113 default,
1114 skip_serializing_if = "Vec::is_empty"
1115 )]
1116 pub start_after_date: Vec<String>,
1117}
1118
1119#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1121pub struct StartAfterNumberSchema {
1122 #[serde(
1125 rename = "startAfterDate",
1126 default,
1127 skip_serializing_if = "Option::is_none"
1128 )]
1129 pub start_after_date: Option<f64>,
1130}
1131
1132#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1134pub struct SubscriptionActionDto {
1135 #[serde(rename = "type")]
1139 pub type_: String,
1140 #[serde(default, skip_serializing_if = "Option::is_none")]
1143 pub subtype_name: Option<String>,
1144 #[serde(default, skip_serializing_if = "Option::is_none")]
1146 pub subtype_id: Option<String>,
1147 pub subtype_status: String,
1151}
1152
1153#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1155pub struct UpdateConversationDto {
1156 #[serde(rename = "locationId")]
1159 pub location_id: String,
1160 #[serde(
1162 rename = "unreadCount",
1163 default,
1164 skip_serializing_if = "Option::is_none"
1165 )]
1166 pub unread_count: Option<f64>,
1167 #[serde(default, skip_serializing_if = "Option::is_none")]
1169 pub starred: Option<bool>,
1170 #[serde(default, skip_serializing_if = "Option::is_none")]
1171 pub feedback: Option<serde_json::Value>,
1172}
1173
1174#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1176pub struct UpdateCustomSubtypeDto {
1177 #[serde(default, skip_serializing_if = "Option::is_none")]
1179 pub name: Option<String>,
1180 #[serde(default, skip_serializing_if = "Option::is_none")]
1182 pub description: Option<String>,
1183 #[serde(default, skip_serializing_if = "Option::is_none")]
1185 pub archived: Option<bool>,
1186 #[serde(default, skip_serializing_if = "Option::is_none")]
1188 pub resubscription_legal_form_id: Option<String>,
1189}
1190
1191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1193pub struct UpdateMessageStatusDto {
1194 pub status: String,
1198 #[serde(default, skip_serializing_if = "Option::is_none")]
1200 pub error: Option<ErrorDto>,
1201 #[serde(
1203 rename = "emailMessageId",
1204 default,
1205 skip_serializing_if = "Option::is_none"
1206 )]
1207 pub email_message_id: Option<String>,
1208 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1210 pub recipients: Vec<String>,
1211}
1212
1213#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1215pub struct UploadFilesDto {
1216 #[serde(rename = "conversationId")]
1219 pub conversation_id: String,
1220 #[serde(rename = "contactId")]
1223 pub contact_id: String,
1224 #[serde(rename = "locationId")]
1226 pub location_id: String,
1227 #[serde(
1229 rename = "attachmentUrls",
1230 default,
1231 skip_serializing_if = "Vec::is_empty"
1232 )]
1233 pub attachment_urls: Vec<String>,
1234 #[serde(
1236 rename = "chatServiceSid",
1237 default,
1238 skip_serializing_if = "Option::is_none"
1239 )]
1240 pub chat_service_sid: Option<String>,
1241 #[serde(
1244 rename = "isGroupSms",
1245 default,
1246 skip_serializing_if = "Option::is_none"
1247 )]
1248 pub is_group_sms: Option<String>,
1249}
1250
1251#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1253pub struct UploadFilesErrorResponseDto {
1254 pub status: String,
1258 pub message: String,
1261}
1262
1263#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1265pub struct UploadFilesResponseDto {
1266 #[serde(rename = "uploadedFiles")]
1268 pub uploaded_files: serde_json::Value,
1269 #[serde(
1271 rename = "twilioMediaSids",
1272 default,
1273 skip_serializing_if = "Vec::is_empty"
1274 )]
1275 pub twilio_media_sids: Vec<String>,
1276}
1277
1278#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1280pub struct UserSubscriptionChangeDto {
1281 #[serde(rename = "locationId")]
1284 pub location_id: String,
1285 #[serde(rename = "contactId")]
1288 pub contact_id: String,
1289 pub email: String,
1292 pub subscription_action: SubscriptionActionDto,
1295 #[serde(default, skip_serializing_if = "Option::is_none")]
1297 pub legal_reason: Option<String>,
1298 #[serde(default, skip_serializing_if = "Option::is_none")]
1300 pub legal_description: Option<String>,
1301}
1302
1303#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1305pub struct UserTypingBody {
1306 #[serde(rename = "locationId")]
1309 pub location_id: String,
1310 #[serde(rename = "isTyping")]
1313 pub is_typing: String,
1314 #[serde(rename = "visitorId")]
1320 pub visitor_id: String,
1321 #[serde(rename = "conversationId")]
1324 pub conversation_id: String,
1325}