#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentActionResponseDTO {
pub id: String,
#[serde(rename = "actionType")]
pub action_type: String,
pub name: String,
#[serde(rename = "actionParameters")]
pub action_parameters: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentCreationRequestDTO {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "agentName", default, skip_serializing_if = "Option::is_none")]
pub agent_name: Option<String>,
#[serde(
rename = "businessName",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_name: Option<String>,
#[serde(
rename = "welcomeMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub welcome_message: Option<String>,
#[serde(
rename = "agentPrompt",
default,
skip_serializing_if = "Option::is_none"
)]
pub agent_prompt: Option<String>,
#[serde(rename = "voiceId", default, skip_serializing_if = "Option::is_none")]
pub voice_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<VoiceAILanguage>,
#[serde(
rename = "patienceLevel",
default,
skip_serializing_if = "Option::is_none"
)]
pub patience_level: Option<PatienceLevel>,
#[serde(
rename = "maxCallDuration",
default,
skip_serializing_if = "Option::is_none"
)]
pub max_call_duration: Option<f64>,
#[serde(
rename = "sendUserIdleReminders",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_user_idle_reminders: Option<bool>,
#[serde(
rename = "reminderAfterIdleTimeSeconds",
default,
skip_serializing_if = "Option::is_none"
)]
pub reminder_after_idle_time_seconds: Option<f64>,
#[serde(
rename = "inboundNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub inbound_number: Option<String>,
#[serde(
rename = "numberPoolId",
default,
skip_serializing_if = "Option::is_none"
)]
pub number_pool_id: Option<String>,
#[serde(
rename = "callEndWorkflowIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub call_end_workflow_ids: Vec<String>,
#[serde(
rename = "sendPostCallNotificationTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_post_call_notification_to: Option<SendPostCallNotificationDTO>,
#[serde(
rename = "agentWorkingHours",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub agent_working_hours: Vec<AgentWorkingHoursDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(
rename = "isAgentAsBackupDisabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_agent_as_backup_disabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub translation: Option<TranslationDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentWorkingHoursDTO {
#[serde(rename = "dayOfTheWeek")]
pub day_of_the_week: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub intervals: Vec<IntervalDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AppointmentBookingActionParameters {
#[serde(rename = "calendarId")]
pub calendar_id: String,
#[serde(rename = "daysOfOfferingDates")]
pub days_of_offering_dates: f64,
#[serde(rename = "slotsPerDay")]
pub slots_per_day: f64,
#[serde(rename = "hoursBetweenSlots")]
pub hours_between_slots: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CallActionSchema {
#[serde(rename = "actionId", default, skip_serializing_if = "Option::is_none")]
pub action_id: Option<String>,
#[serde(rename = "actionType")]
pub action_type: String,
#[serde(rename = "actionName")]
pub action_name: String,
#[serde(
rename = "actionParameters",
default,
skip_serializing_if = "Option::is_none"
)]
pub action_parameters: Option<serde_json::Value>,
#[serde(
rename = "executedAt",
default,
skip_serializing_if = "Option::is_none"
)]
pub executed_at: Option<String>,
#[serde(
rename = "triggerReceivedAt",
default,
skip_serializing_if = "Option::is_none"
)]
pub trigger_received_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CallLogDTO {
pub id: String,
#[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(rename = "agentId")]
pub agent_id: String,
#[serde(rename = "isAgentDeleted")]
pub is_agent_deleted: bool,
#[serde(
rename = "fromNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub from_number: Option<String>,
#[serde(rename = "createdAt")]
pub created_at: String,
pub duration: f64,
#[serde(rename = "trialCall")]
pub trial_call: bool,
#[serde(
rename = "executedCallActions",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub executed_call_actions: Vec<CallActionSchema>,
pub summary: String,
pub transcript: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub translation: Option<TranslationSchema>,
#[serde(
rename = "extractedData",
default,
skip_serializing_if = "Option::is_none"
)]
pub extracted_data: Option<ExtractedDataSchema>,
#[serde(rename = "messageId", default, skip_serializing_if = "Option::is_none")]
pub message_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CallLogsResponseDTO {
pub total: f64,
pub page: f64,
#[serde(rename = "pageSize")]
pub page_size: f64,
#[serde(rename = "callLogs", default, skip_serializing_if = "Vec::is_empty")]
pub call_logs: Vec<CallLogDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CallTransferActionParameters {
#[serde(rename = "triggerPrompt")]
pub trigger_prompt: String,
#[serde(rename = "transferToType")]
pub transfer_to_type: String,
#[serde(rename = "transferToValue")]
pub transfer_to_value: String,
#[serde(rename = "triggerMessage")]
pub trigger_message: String,
#[serde(
rename = "hearWhisperMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub hear_whisper_message: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateActionResponseDTO {
pub id: String,
#[serde(rename = "actionType")]
pub action_type: String,
pub name: String,
#[serde(rename = "actionParameters")]
pub action_parameters: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateAgentResponseDTO {
pub id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "agentName")]
pub agent_name: String,
#[serde(rename = "businessName")]
pub business_name: String,
#[serde(rename = "welcomeMessage")]
pub welcome_message: String,
#[serde(rename = "agentPrompt")]
pub agent_prompt: String,
#[serde(rename = "voiceId")]
pub voice_id: String,
pub language: String,
#[serde(rename = "patienceLevel")]
pub patience_level: String,
#[serde(rename = "maxCallDuration")]
pub max_call_duration: f64,
#[serde(rename = "sendUserIdleReminders")]
pub send_user_idle_reminders: bool,
#[serde(rename = "reminderAfterIdleTimeSeconds")]
pub reminder_after_idle_time_seconds: f64,
#[serde(
rename = "inboundNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub inbound_number: Option<String>,
#[serde(
rename = "numberPoolId",
default,
skip_serializing_if = "Option::is_none"
)]
pub number_pool_id: Option<String>,
#[serde(
rename = "callEndWorkflowIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub call_end_workflow_ids: Vec<String>,
#[serde(
rename = "sendPostCallNotificationTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_post_call_notification_to: Option<SendPostCallNotificationSchema>,
#[serde(
rename = "agentWorkingHours",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub agent_working_hours: Vec<AgentWorkingHoursDTO>,
pub timezone: String,
#[serde(rename = "isAgentAsBackupDisabled")]
pub is_agent_as_backup_disabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub translation: Option<TranslationSchema>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateSingleActionDTO {
#[serde(rename = "agentId")]
pub agent_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "actionType")]
pub action_type: String,
pub name: String,
#[serde(rename = "actionParameters")]
pub action_parameters: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomActionApiDetailsDTO {
pub url: String,
pub method: String,
#[serde(
rename = "authenticationRequired",
default,
skip_serializing_if = "Option::is_none"
)]
pub authentication_required: Option<bool>,
#[serde(
rename = "authenticationValue",
default,
skip_serializing_if = "Option::is_none"
)]
pub authentication_value: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub headers: Vec<CustomActionHeaderDTO>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub parameters: Vec<CustomActionParameterDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomActionHeaderDTO {
pub key: String,
pub value: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomActionParameterDTO {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub example: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomActionParameters {
#[serde(rename = "triggerPrompt")]
pub trigger_prompt: String,
#[serde(rename = "triggerMessage")]
pub trigger_message: String,
#[serde(rename = "apiDetails")]
pub api_details: CustomActionApiDetailsDTO,
#[serde(
rename = "selectedPaths",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub selected_paths: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DataExtractionActionParameters {
#[serde(rename = "contactFieldId")]
pub contact_field_id: String,
pub description: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub examples: Vec<String>,
#[serde(
rename = "overwriteExistingValue",
default,
skip_serializing_if = "Option::is_none"
)]
pub overwrite_existing_value: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ExtractedDataSchema {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetActionResponseDTO {
pub id: String,
#[serde(rename = "actionType")]
pub action_type: String,
pub name: String,
#[serde(rename = "actionParameters")]
pub action_parameters: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetAgentResponseDTO {
pub id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "agentName")]
pub agent_name: String,
#[serde(rename = "businessName")]
pub business_name: String,
#[serde(rename = "welcomeMessage")]
pub welcome_message: String,
#[serde(rename = "agentPrompt")]
pub agent_prompt: String,
#[serde(rename = "voiceId")]
pub voice_id: String,
pub language: String,
#[serde(rename = "patienceLevel")]
pub patience_level: String,
#[serde(rename = "maxCallDuration")]
pub max_call_duration: f64,
#[serde(rename = "sendUserIdleReminders")]
pub send_user_idle_reminders: bool,
#[serde(rename = "reminderAfterIdleTimeSeconds")]
pub reminder_after_idle_time_seconds: f64,
#[serde(
rename = "inboundNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub inbound_number: Option<String>,
#[serde(
rename = "numberPoolId",
default,
skip_serializing_if = "Option::is_none"
)]
pub number_pool_id: Option<String>,
#[serde(
rename = "callEndWorkflowIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub call_end_workflow_ids: Vec<String>,
#[serde(
rename = "sendPostCallNotificationTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_post_call_notification_to: Option<SendPostCallNotificationSchema>,
#[serde(
rename = "agentWorkingHours",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub agent_working_hours: Vec<AgentWorkingHoursDTO>,
pub timezone: String,
#[serde(rename = "isAgentAsBackupDisabled")]
pub is_agent_as_backup_disabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub translation: Option<TranslationSchema>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub actions: Vec<AgentActionResponseDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetAgentsResponseDTO {
pub total: f64,
pub page: f64,
#[serde(rename = "pageSize")]
pub page_size: f64,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub agents: Vec<GetAgentResponseDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InCallDataExtractionActionParameters {
#[serde(rename = "contactFieldId")]
pub contact_field_id: String,
pub description: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub examples: Vec<String>,
#[serde(
rename = "overwriteExistingValue",
default,
skip_serializing_if = "Option::is_none"
)]
pub overwrite_existing_value: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct IntervalDTO {
#[serde(rename = "startHour")]
pub start_hour: f64,
#[serde(rename = "endHour")]
pub end_hour: f64,
#[serde(rename = "startMinute")]
pub start_minute: f64,
#[serde(rename = "endMinute")]
pub end_minute: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct KnowledgeBaseParameters {
#[serde(rename = "triggerPrompt")]
pub trigger_prompt: String,
#[serde(rename = "knowledgeBaseId")]
pub knowledge_base_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PatchAgentDTO {
#[serde(rename = "agentName", default, skip_serializing_if = "Option::is_none")]
pub agent_name: Option<String>,
#[serde(
rename = "businessName",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_name: Option<String>,
#[serde(
rename = "welcomeMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub welcome_message: Option<String>,
#[serde(
rename = "agentPrompt",
default,
skip_serializing_if = "Option::is_none"
)]
pub agent_prompt: Option<String>,
#[serde(rename = "voiceId", default, skip_serializing_if = "Option::is_none")]
pub voice_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<VoiceAILanguage>,
#[serde(
rename = "patienceLevel",
default,
skip_serializing_if = "Option::is_none"
)]
pub patience_level: Option<PatienceLevel>,
#[serde(
rename = "maxCallDuration",
default,
skip_serializing_if = "Option::is_none"
)]
pub max_call_duration: Option<f64>,
#[serde(
rename = "sendUserIdleReminders",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_user_idle_reminders: Option<bool>,
#[serde(
rename = "reminderAfterIdleTimeSeconds",
default,
skip_serializing_if = "Option::is_none"
)]
pub reminder_after_idle_time_seconds: Option<f64>,
#[serde(
rename = "inboundNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub inbound_number: Option<String>,
#[serde(
rename = "numberPoolId",
default,
skip_serializing_if = "Option::is_none"
)]
pub number_pool_id: Option<String>,
#[serde(
rename = "callEndWorkflowIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub call_end_workflow_ids: Vec<String>,
#[serde(
rename = "sendPostCallNotificationTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_post_call_notification_to: Option<SendPostCallNotificationDTO>,
#[serde(
rename = "agentWorkingHours",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub agent_working_hours: Vec<AgentWorkingHoursDTO>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(
rename = "isAgentAsBackupDisabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_agent_as_backup_disabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub translation: Option<TranslationDTO>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PatchAgentResponseDTO {
pub id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "agentName")]
pub agent_name: String,
#[serde(rename = "businessName")]
pub business_name: String,
#[serde(rename = "welcomeMessage")]
pub welcome_message: String,
#[serde(rename = "agentPrompt")]
pub agent_prompt: String,
#[serde(rename = "voiceId")]
pub voice_id: String,
pub language: String,
#[serde(rename = "patienceLevel")]
pub patience_level: String,
#[serde(rename = "maxCallDuration")]
pub max_call_duration: f64,
#[serde(rename = "sendUserIdleReminders")]
pub send_user_idle_reminders: bool,
#[serde(rename = "reminderAfterIdleTimeSeconds")]
pub reminder_after_idle_time_seconds: f64,
#[serde(
rename = "inboundNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub inbound_number: Option<String>,
#[serde(
rename = "numberPoolId",
default,
skip_serializing_if = "Option::is_none"
)]
pub number_pool_id: Option<String>,
#[serde(
rename = "callEndWorkflowIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub call_end_workflow_ids: Vec<String>,
#[serde(
rename = "sendPostCallNotificationTo",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_post_call_notification_to: Option<SendPostCallNotificationSchema>,
#[serde(
rename = "agentWorkingHours",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub agent_working_hours: Vec<AgentWorkingHoursDTO>,
pub timezone: String,
#[serde(rename = "isAgentAsBackupDisabled")]
pub is_agent_as_backup_disabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub translation: Option<TranslationSchema>,
}
pub type PatienceLevel = String;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SMSParameters {
#[serde(rename = "triggerPrompt")]
pub trigger_prompt: String,
#[serde(rename = "triggerMessage")]
pub trigger_message: String,
#[serde(rename = "messageBody")]
pub message_body: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendPostCallNotificationDTO {
pub admins: bool,
#[serde(rename = "allUsers")]
pub all_users: bool,
#[serde(rename = "contactAssignedUser")]
pub contact_assigned_user: bool,
#[serde(
rename = "specificUsers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub specific_users: Vec<String>,
#[serde(
rename = "customEmails",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_emails: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendPostCallNotificationSchema {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub admins: Option<bool>,
#[serde(rename = "allUsers", default, skip_serializing_if = "Option::is_none")]
pub all_users: Option<bool>,
#[serde(
rename = "contactAssignedUser",
default,
skip_serializing_if = "Option::is_none"
)]
pub contact_assigned_user: Option<bool>,
#[serde(
rename = "specificUsers",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub specific_users: Vec<String>,
#[serde(
rename = "customEmails",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_emails: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TranslationDTO {
pub enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TranslationSchema {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateActionResponseDTO {
pub id: String,
#[serde(rename = "actionType")]
pub action_type: String,
pub name: String,
#[serde(rename = "actionParameters")]
pub action_parameters: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateSingleActionDTO {
#[serde(rename = "agentId")]
pub agent_id: String,
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "actionType")]
pub action_type: String,
pub name: String,
#[serde(rename = "actionParameters")]
pub action_parameters: serde_json::Value,
}
pub type VoiceAILanguage = String;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WorkflowTriggerParameters {
#[serde(rename = "triggerPrompt")]
pub trigger_prompt: String,
#[serde(rename = "triggerMessage")]
pub trigger_message: String,
#[serde(rename = "workflowId")]
pub workflow_id: String,
}