#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct A2PComplianceDTO {
#[serde(
rename = "enableA2PCompliance",
default,
skip_serializing_if = "Option::is_none"
)]
pub enable_a2_p_compliance: Option<bool>,
#[serde(
rename = "a2pOptInForm1",
default,
skip_serializing_if = "Option::is_none"
)]
pub a2p_opt_in_form1: Option<String>,
#[serde(
rename = "a2pOptInForm1ShowCheckbox",
default,
skip_serializing_if = "Option::is_none"
)]
pub a2p_opt_in_form1_show_checkbox: Option<bool>,
#[serde(
rename = "a2pOptInForm1PreChecked",
default,
skip_serializing_if = "Option::is_none"
)]
pub a2p_opt_in_form1_pre_checked: Option<bool>,
#[serde(
rename = "isA2POptInForm2",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_a2_p_opt_in_form2: Option<bool>,
#[serde(
rename = "a2pOptInForm2",
default,
skip_serializing_if = "Option::is_none"
)]
pub a2p_opt_in_form2: Option<String>,
#[serde(
rename = "a2pOptInForm2ShowCheckbox",
default,
skip_serializing_if = "Option::is_none"
)]
pub a2p_opt_in_form2_show_checkbox: Option<bool>,
#[serde(
rename = "a2pOptInForm2PreChecked",
default,
skip_serializing_if = "Option::is_none"
)]
pub a2p_opt_in_form2_pre_checked: Option<bool>,
#[serde(
rename = "privacyPolicyLink",
default,
skip_serializing_if = "Option::is_none"
)]
pub privacy_policy_link: Option<String>,
#[serde(
rename = "termsOfServiceLink",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_of_service_link: Option<String>,
#[serde(
rename = "isA2POptInForm1",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_a2_p_opt_in_form1: Option<bool>,
#[serde(
rename = "messageType",
default,
skip_serializing_if = "Option::is_none"
)]
pub message_type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AcknowledgementDetailsDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(
rename = "placeholderColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub placeholder_color: Option<String>,
#[serde(
rename = "liveChatIcon",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_icon: Option<String>,
#[serde(
rename = "liveChatPlaceholderColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_placeholder_color: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AdvanceSettingsDTO {
#[serde(
rename = "brandingTitle",
default,
skip_serializing_if = "Option::is_none"
)]
pub branding_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub redirect: Option<RedirectDTO>,
#[serde(
rename = "enableContactForm",
default,
skip_serializing_if = "Option::is_none"
)]
pub enable_contact_form: Option<bool>,
#[serde(
rename = "defaultConsentCheck",
default,
skip_serializing_if = "Option::is_none"
)]
pub default_consent_check: Option<bool>,
#[serde(
rename = "businessOfficeHours",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_office_hours: Option<BusinessOfficeHoursDTO>,
#[serde(
rename = "contactFormOptions",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub contact_form_options: Vec<String>,
#[serde(
rename = "allInOneChatTypes",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub all_in_one_chat_types: Vec<String>,
#[serde(
rename = "allInOneInitialMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub all_in_one_initial_msg: Option<String>,
#[serde(
rename = "contactFormIntroMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub contact_form_intro_message: Option<String>,
#[serde(
rename = "contactFormSystemMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub contact_form_system_message: Option<String>,
#[serde(
rename = "prefilledMessageText",
default,
skip_serializing_if = "Option::is_none"
)]
pub prefilled_message_text: Option<String>,
#[serde(
rename = "voiceAiAgent",
default,
skip_serializing_if = "Option::is_none"
)]
pub voice_ai_agent: Option<serde_json::Value>,
#[serde(rename = "fbPage", default, skip_serializing_if = "Option::is_none")]
pub fb_page: Option<FBPageDTO>,
#[serde(
rename = "instagramPage",
default,
skip_serializing_if = "Option::is_none"
)]
pub instagram_page: Option<InstagramPageDTO>,
#[serde(
rename = "playNotificationSound",
default,
skip_serializing_if = "Option::is_none"
)]
pub play_notification_sound: Option<bool>,
#[serde(
rename = "voiceAiSendActionText",
default,
skip_serializing_if = "Option::is_none"
)]
pub voice_ai_send_action_text: Option<String>,
#[serde(
rename = "aTwoPCompliance",
default,
skip_serializing_if = "Option::is_none"
)]
pub a_two_p_compliance: Option<A2PComplianceDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BusinessOfficeHoursDTO {
#[serde(
rename = "enableBusinessHours",
default,
skip_serializing_if = "Option::is_none"
)]
pub enable_business_hours: Option<bool>,
#[serde(rename = "openHours", default, skip_serializing_if = "Vec::is_empty")]
pub open_hours: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(
rename = "outsideOfficeHoursWelcomeMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub outside_office_hours_welcome_msg: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CloneChatWidgetDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "chatWidgetId")]
pub chat_widget_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateWidgetDTO {
pub version: f64,
#[serde(rename = "chatType")]
pub chat_type: String,
pub name: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deleted: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub settings: Option<WidgetSettingsDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FBPageDTO {
#[serde(
rename = "facebookPageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub facebook_page_id: Option<String>,
#[serde(
rename = "facebookPageName",
default,
skip_serializing_if = "Option::is_none"
)]
pub facebook_page_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InstagramPageDTO {
#[serde(
rename = "facebookPageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub facebook_page_id: Option<String>,
#[serde(
rename = "facebookPageName",
default,
skip_serializing_if = "Option::is_none"
)]
pub facebook_page_name: Option<String>,
#[serde(
rename = "instagramPageId",
default,
skip_serializing_if = "Option::is_none"
)]
pub instagram_page_id: Option<String>,
#[serde(
rename = "instagramUsername",
default,
skip_serializing_if = "Option::is_none"
)]
pub instagram_username: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RedirectDTO {
#[serde(
rename = "redirectAction",
default,
skip_serializing_if = "Option::is_none"
)]
pub redirect_action: Option<bool>,
#[serde(
rename = "redirectWebsite",
default,
skip_serializing_if = "Option::is_none"
)]
pub redirect_website: Option<String>,
#[serde(
rename = "redirectText",
default,
skip_serializing_if = "Option::is_none"
)]
pub redirect_text: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateWidgetDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<f64>,
#[serde(rename = "chatType", default, skip_serializing_if = "Option::is_none")]
pub chat_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub settings: Option<WidgetSettingsDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WidgetSettingsCustomizationDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub position: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sizes: Option<WidgetSettingsCustomizationSizeDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WidgetSettingsCustomizationSizeDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub width: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub height: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WidgetSettingsDTO {
#[serde(
rename = "acknowledgementDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub acknowledgement_details: Option<AcknowledgementDetailsDTO>,
#[serde(
rename = "agencyName",
default,
skip_serializing_if = "Option::is_none"
)]
pub agency_name: Option<String>,
#[serde(
rename = "agencyWebsite",
default,
skip_serializing_if = "Option::is_none"
)]
pub agency_website: Option<String>,
#[serde(
rename = "allowAvatarImage",
default,
skip_serializing_if = "Option::is_none"
)]
pub allow_avatar_image: Option<bool>,
#[serde(
rename = "autoCountryCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub auto_country_code: Option<bool>,
#[serde(
rename = "countryCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub country_code: Option<String>,
#[serde(rename = "chatType")]
pub chat_type: String,
#[serde(
rename = "promptType",
default,
skip_serializing_if = "Option::is_none"
)]
pub prompt_type: Option<String>,
#[serde(rename = "chatIcon")]
pub chat_icon: String,
#[serde(
rename = "enableRevisitMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub enable_revisit_message: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub heading: Option<String>,
#[serde(rename = "legalMsg", default, skip_serializing_if = "Option::is_none")]
pub legal_msg: Option<String>,
#[serde(
rename = "liveChatAckMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_ack_msg: Option<String>,
#[serde(
rename = "liveChatEndedMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_ended_msg: Option<String>,
#[serde(
rename = "liveChatFeedbackMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_feedback_msg: Option<String>,
#[serde(
rename = "liveChatFeedbackNote",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_feedback_note: Option<String>,
#[serde(
rename = "liveChatIntroMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_intro_msg: Option<String>,
#[serde(
rename = "liveChatUserInactiveMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_user_inactive_msg: Option<String>,
#[serde(
rename = "liveChatUserInactiveTime",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_user_inactive_time: Option<String>,
#[serde(
rename = "liveChatVisitorInactiveMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_visitor_inactive_msg: Option<String>,
#[serde(
rename = "liveChatVisitorInactiveTime",
default,
skip_serializing_if = "Option::is_none"
)]
pub live_chat_visitor_inactive_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[serde(
rename = "promptAvatar",
default,
skip_serializing_if = "Option::is_none"
)]
pub prompt_avatar: Option<String>,
#[serde(
rename = "promptAvatarAltText",
default,
skip_serializing_if = "Option::is_none"
)]
pub prompt_avatar_alt_text: Option<String>,
#[serde(
rename = "isPromptAvatarImageOptimize",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_prompt_avatar_image_optimize: Option<bool>,
#[serde(rename = "promptMsg", default, skip_serializing_if = "Option::is_none")]
pub prompt_msg: Option<String>,
#[serde(
rename = "revisitPromptMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub revisit_prompt_msg: Option<String>,
#[serde(
rename = "sendActionText",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_action_text: Option<String>,
#[serde(
rename = "showAgencyBranding",
default,
skip_serializing_if = "Option::is_none"
)]
pub show_agency_branding: Option<bool>,
#[serde(
rename = "showConsentCheckbox",
default,
skip_serializing_if = "Option::is_none"
)]
pub show_consent_checkbox: Option<bool>,
#[serde(
rename = "showLiveChatWelcomeMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub show_live_chat_welcome_msg: Option<bool>,
#[serde(
rename = "showPrompt",
default,
skip_serializing_if = "Option::is_none"
)]
pub show_prompt: Option<bool>,
#[serde(
rename = "subHeading",
default,
skip_serializing_if = "Option::is_none"
)]
pub sub_heading: Option<String>,
#[serde(
rename = "successMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub success_msg: Option<String>,
#[serde(
rename = "supportContact",
default,
skip_serializing_if = "Option::is_none"
)]
pub support_contact: Option<String>,
#[serde(
rename = "thankYouMsg",
default,
skip_serializing_if = "Option::is_none"
)]
pub thank_you_msg: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub theme: Option<WidgetSettingsThemeDTO>,
#[serde(
rename = "useEmailField",
default,
skip_serializing_if = "Option::is_none"
)]
pub use_email_field: Option<bool>,
#[serde(rename = "waNumber", default, skip_serializing_if = "Option::is_none")]
pub wa_number: Option<String>,
#[serde(
rename = "widgetPrimaryColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub widget_primary_color: Option<String>,
#[serde(
rename = "representativeAssignedMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub representative_assigned_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dimensions: Option<WidgetSettingsCustomizationDTO>,
#[serde(
rename = "advanceSettings",
default,
skip_serializing_if = "Option::is_none"
)]
pub advance_settings: Option<AdvanceSettingsDTO>,
#[serde(
rename = "locationCountryCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub location_country_code: Option<String>,
#[serde(rename = "widgetId", default, skip_serializing_if = "Option::is_none")]
pub widget_id: Option<String>,
#[serde(
rename = "widgetPlacement",
default,
skip_serializing_if = "Option::is_none"
)]
pub widget_placement: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WidgetSettingsThemeCustomColorDTO {
#[serde(
rename = "chatBubbleColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub chat_bubble_color: Option<String>,
#[serde(
rename = "backgroundColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub background_color: Option<String>,
#[serde(
rename = "headerColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub header_color: Option<String>,
#[serde(
rename = "buttonColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub button_color: Option<String>,
#[serde(
rename = "avatarBackgroundColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub avatar_background_color: Option<String>,
#[serde(
rename = "avatarBorderColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub avatar_border_color: Option<String>,
#[serde(
rename = "senderMessageColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub sender_message_color: Option<String>,
#[serde(
rename = "receivedMessageColor",
default,
skip_serializing_if = "Option::is_none"
)]
pub received_message_color: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WidgetSettingsThemeDTO {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub colors: Option<WidgetSettingsThemeCustomColorDTO>,
}