use crate::apis::bridges::models;
use crate::apis::params::{IfExists, TerminateOn};
use derive_new::new;
use derive_setters::Setters;
use serde::Serialize;
#[derive(Clone, Default, Debug, PartialEq, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct CreateRequest {
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
#[setters(rename = "with_type")]
#[new(default)]
r#type: Option<models::BridgeType>,
#[serde(rename = "bridgeId", skip_serializing_if = "Option::is_none")]
#[new(default)]
bridge_id: Option<String>,
#[serde(rename = "bridgeId", skip_serializing_if = "Option::is_none")]
#[new(default)]
name: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct CreateWithIdRequest {
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) bridge_id: String,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
#[setters(rename = "with_type")]
#[new(default)]
r#type: Option<models::BridgeType>,
#[serde(rename = "bridgeId", skip_serializing_if = "Option::is_none")]
#[new(default)]
name: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct AddChannelRequest {
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) bridge_id: String,
#[setters(skip)]
#[new(into)]
pub(crate) channel: String,
#[serde(rename = "role", skip_serializing_if = "Option::is_none")]
#[new(default)]
role: Option<String>,
#[serde(rename = "absorbDTMF", skip_serializing_if = "Option::is_none")]
#[new(default)]
absorb_dtmf: Option<bool>,
#[serde(rename = "mute", skip_serializing_if = "Option::is_none")]
#[new(default)]
mute: Option<bool>,
#[serde(
rename = "inhibitConnectedLineUpdates",
skip_serializing_if = "Option::is_none"
)]
#[new(default)]
inhibit_connected_line_updates: Option<bool>,
}
#[derive(Clone, Debug, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct MohRequest {
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) bridge_id: String,
#[serde(rename = "mohClass", skip_serializing_if = "Option::is_none")]
#[new(default)]
moh_class: Option<String>,
}
#[derive(Clone, Debug, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct PlayRequest {
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) bridge_id: String,
#[setters(skip)]
#[new(into)]
media: String,
#[serde(rename = "lang", skip_serializing_if = "Option::is_none")]
#[new(default)]
lang: Option<String>,
#[serde(rename = "offsetms", skip_serializing_if = "Option::is_none")]
#[new(default)]
offset_ms: Option<u32>,
#[serde(rename = "skipms", skip_serializing_if = "Option::is_none")]
#[new(default)]
skip_ms: Option<u32>,
}
#[derive(Clone, Debug, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct PlayWithIdRequest {
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) bridge_id: String,
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) playback_id: String,
#[setters(skip)]
#[new(into)]
pub(crate) media: String,
#[serde(rename = "lang", skip_serializing_if = "Option::is_none")]
#[new(default)]
lang: Option<String>,
#[serde(rename = "offsetms", skip_serializing_if = "Option::is_none")]
#[new(default)]
offset_ms: Option<u32>,
#[serde(rename = "skipms", skip_serializing_if = "Option::is_none")]
#[new(default)]
skip_ms: Option<u32>,
}
#[derive(Clone, Debug, Serialize, new, Setters)]
#[setters(prefix = "with_")]
#[setters(into, strip_option)]
pub struct RecordRequest {
#[serde(skip_serializing)]
#[setters(skip)]
#[new(into)]
pub(crate) bridge_id: String,
#[setters(skip)]
#[new(into)]
pub(crate) name: String,
#[setters(skip)]
#[new(into)]
pub(crate) format: String,
#[serde(rename = "maxDurationSeconds", skip_serializing_if = "Option::is_none")]
#[new(default)]
max_duration_seconds: Option<u32>,
#[serde(rename = "maxSilenceSeconds", skip_serializing_if = "Option::is_none")]
#[new(default)]
max_silence_seconds: Option<u32>,
#[serde(rename = "ifExists", skip_serializing_if = "Option::is_none")]
#[new(default)]
if_exists: Option<IfExists>,
#[serde(rename = "beep", skip_serializing_if = "Option::is_none")]
#[new(default)]
beep: Option<bool>,
#[serde(rename = "terminateOn", skip_serializing_if = "Option::is_none")]
#[new(default)]
terminate_on: Option<TerminateOn>,
}