use super::{
default_type_value,
resources::{item::Item, response::Response, session::Session},
};
use derive_builder::Builder;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "SessionUpdateBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct SessionUpdate {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"session.update\")")]
pub r#type: String,
pub session: Session,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "InputAudioBufferAppendBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct InputAudioBufferAppend {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"input_audio_buffer.append\")")]
pub r#type: String,
pub audio: String,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "InputAudioBufferCommitBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct InputAudioBufferCommit {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"input_audio_buffer.commit\")")]
pub r#type: String,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "InputAudioBufferClearBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct InputAudioBufferClear {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"input_audio_buffer.clear\")")]
pub r#type: String,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "ConversationItemCreateBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct ConversationItemCreate {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"conversation.item.create\")")]
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub previous_item_id: Option<String>,
pub item: Item,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "ConversationItemTruncateBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct ConversationItemTruncate {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"conversation.item.truncate\")")]
pub r#type: String,
pub item_id: String,
pub content_index: u32,
pub audio_end_ms: u32,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "ConversationItemDeleteBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct ConversationItemDelete {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"conversation.item.delete\")")]
pub r#type: String,
pub item_id: String,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "ResponseCreateBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct ResponseCreate {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"response.create\")")]
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub response: Option<Response>,
}
#[derive(Serialize, Deserialize, Debug, Default, Builder, Clone, PartialEq)]
#[builder(name = "ResponseCancelBuilder")]
#[builder(setter(into, strip_option), default)]
pub struct ResponseCancel {
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
#[builder(default = "default_type_value(\"response.cancel\")")]
pub r#type: String,
}