#![allow(unused_imports)]
use serde::{Deserialize, Serialize};
use super::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioTranscription {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct CallAcceptParams {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub include: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub max_output_tokens: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_modalities: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_choice: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tools: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tracing: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub truncation: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct CallCreateParams {
pub sdp: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub session: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct CallReferParams {
pub target_uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct CallRejectParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status_code: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ClientSecretCreateParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_after: Option<ExpiresAfter>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub session: Option<Session>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ExpiresAfter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub anchor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub seconds: Option<i64>,
}
pub type Session = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ClientSecretCreateResponse {
pub expires_at: i64,
pub session: Session,
pub value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct Conversation {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationCreatedEvent {
pub conversation: Conversation,
pub event_id: String,
#[serde(rename = "type")]
pub type_: String,
}
pub type ConversationItem = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemAdded {
pub event_id: String,
pub item: ConversationItem,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub previous_item_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemCreateEvent {
pub item: ConversationItem,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub previous_item_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemCreatedEvent {
pub event_id: String,
pub item: ConversationItem,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub previous_item_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemDeleteEvent {
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemDeletedEvent {
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemDone {
pub event_id: String,
pub item: ConversationItem,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub previous_item_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageTranscriptTextUsageTokensInputTokenDetails {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageTranscriptTextUsageTokens {
pub input_tokens: i64,
pub output_tokens: i64,
pub total_tokens: i64,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input_token_details: Option<UsageTranscriptTextUsageTokensInputTokenDetails>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageTranscriptTextUsageDuration {
pub seconds: f64,
#[serde(rename = "type")]
pub type_: String,
}
pub type Usage = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemInputAudioTranscriptionCompletedEvent {
pub content_index: i64,
pub event_id: String,
pub item_id: String,
pub transcript: String,
#[serde(rename = "type")]
pub type_: String,
pub usage: Usage,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub logprobs: Option<Vec<LogProbProperties>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemInputAudioTranscriptionDeltaEvent {
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub content_index: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub delta: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub logprobs: Option<Vec<LogProbProperties>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemError {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub param: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemInputAudioTranscriptionFailedEvent {
pub content_index: i64,
pub error: serde_json::Value,
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemInputAudioTranscriptionSegment {
pub id: String,
pub content_index: i64,
pub end: f64,
pub event_id: String,
pub item_id: String,
pub speaker: String,
pub start: f64,
pub text: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemRetrieveEvent {
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemTruncateEvent {
pub audio_end_ms: i64,
pub content_index: i64,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemTruncatedEvent {
pub audio_end_ms: i64,
pub content_index: i64,
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferAppendEvent {
pub audio: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferClearEvent {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferClearedEvent {
pub event_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferCommitEvent {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferCommittedEvent {
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub previous_item_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferDtmfEventReceivedEvent {
pub event: String,
pub received_at: i64,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferSpeechStartedEvent {
pub audio_start_ms: i64,
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferSpeechStoppedEvent {
pub audio_end_ms: i64,
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct InputAudioBufferTimeoutTriggered {
pub audio_end_ms: i64,
pub audio_start_ms: i64,
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct LogProbProperties {
pub token: String,
pub bytes: Vec<i64>,
pub logprob: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpListToolsCompleted {
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpListToolsFailed {
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpListToolsInProgress {
pub event_id: String,
pub item_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct OutputAudioBufferClearEvent {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RateLimitName {
#[serde(rename = "requests")]
Requests,
#[serde(rename = "tokens")]
Tokens,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RateLimit {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub name: Option<RateLimitName>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub remaining: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reset_seconds: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RateLimitsUpdatedEvent {
pub event_id: String,
pub rate_limits: Vec<RateLimit>,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeAudioConfig {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input: Option<RealtimeAudioConfigInput>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output: Option<RealtimeAudioConfigOutput>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct NoiseReduction {
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<NoiseReductionType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeAudioConfigInput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub format: Option<RealtimeAudioFormats>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub noise_reduction: Option<NoiseReduction>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub transcription: Option<AudioTranscription>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub turn_detection: Option<RealtimeAudioInputTurnDetection>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct VoiceID {
pub id: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum Voice {
Alloy,
Ash,
Ballad,
Coral,
Echo,
Sage,
Shimmer,
Verse,
Marin,
Cedar,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeAudioConfigOutput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub format: Option<RealtimeAudioFormats>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub speed: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub voice: Option<Voice>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioPCM {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub rate: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioPCMU {
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioPCMA {
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
pub type RealtimeAudioFormats = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ServerVad {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub create_response: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub idle_timeout_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub interrupt_response: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prefix_padding_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub silence_duration_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub threshold: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum SemanticVadEagerness {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct SemanticVad {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub create_response: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub eagerness: Option<SemanticVadEagerness>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub interrupt_response: Option<bool>,
}
pub type RealtimeAudioInputTurnDetection = serde_json::Value;
pub type RealtimeClientEvent = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConnectParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub call_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub model: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationContentType {
#[serde(rename = "output_text")]
OutputText,
#[serde(rename = "output_audio")]
OutputAudio,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConversationContent {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub transcript: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<RealtimeConversationContentType>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationItemAssistantMessageStatus {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "in_progress")]
InProgress,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConversationItemAssistantMessage {
pub content: Vec<RealtimeConversationContent>,
pub role: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status: Option<RealtimeConversationItemAssistantMessageStatus>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationItemFunctionCallStatus {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "in_progress")]
InProgress,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConversationItemFunctionCall {
pub arguments: String,
pub name: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub call_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status: Option<RealtimeConversationItemFunctionCallStatus>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationItemFunctionCallOutputStatus {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "in_progress")]
InProgress,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConversationItemFunctionCallOutput {
pub call_id: String,
pub output: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status: Option<RealtimeConversationItemFunctionCallOutputStatus>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationItemSystemMessageStatus {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "in_progress")]
InProgress,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConversationItemSystemMessage {
pub content: Vec<RealtimeConversationContent>,
pub role: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status: Option<RealtimeConversationItemSystemMessageStatus>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationContentDetail {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "low")]
Low,
#[serde(rename = "high")]
High,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeConversationItemUserMessageStatus {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "in_progress")]
InProgress,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeConversationItemUserMessage {
pub content: Vec<RealtimeConversationContent>,
pub role: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status: Option<RealtimeConversationItemUserMessageStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeError {
pub message: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeErrorEvent {
pub error: RealtimeError,
pub event_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeFunctionTool {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub parameters: Option<serde_json::Value>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpApprovalRequest {
pub id: String,
pub arguments: String,
pub name: String,
pub server_label: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpApprovalResponse {
pub id: String,
pub approval_request_id: String,
pub approve: bool,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reason: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpTool {
pub input_schema: serde_json::Value,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub annotations: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpListTools {
pub server_label: String,
pub tools: Vec<RealtimeMcpTool>,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpProtocolError {
pub code: i64,
pub message: String,
#[serde(rename = "type")]
pub type_: String,
}
pub type Error = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpToolCall {
pub id: String,
pub arguments: String,
pub name: String,
pub server_label: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub approval_request_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub error: Option<Error>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcpToolExecutionError {
pub message: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeMcphttpError {
pub code: i64,
pub message: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioOutput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub format: Option<RealtimeAudioFormats>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub voice: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct Audio {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output: Option<AudioOutput>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponse {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<Audio>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub conversation_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub max_output_tokens: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output: Option<Vec<ConversationItem>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_modalities: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status: Option<RealtimeResponseStatus>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub status_details: Option<RealtimeResponseStatus>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub usage: Option<RealtimeResponseUsage>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct OutputVoiceID {
pub id: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum OutputVoice {
Alloy,
Ash,
Ballad,
Coral,
Echo,
Sage,
Shimmer,
Verse,
Marin,
Cedar,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseOutput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub format: Option<RealtimeAudioFormats>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub voice: Option<OutputVoice>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseCreateAudioOutput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output: Option<RealtimeResponseOutput>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AllowedToolsMcpToolFilter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
pub type AllowedTools = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RequireApprovalMcpToolApprovalFilterAlways {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RequireApprovalMcpToolApprovalFilterNever {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RequireApprovalMcpToolApprovalFilter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub always: Option<RequireApprovalMcpToolApprovalFilterAlways>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub never: Option<RequireApprovalMcpToolApprovalFilterNever>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RequireApproval {
Always,
Never,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeResponseCreateMcpToolConnectorId {
#[serde(rename = "connector_dropbox")]
ConnectorDropbox,
#[serde(rename = "connector_gmail")]
ConnectorGmail,
#[serde(rename = "connector_googlecalendar")]
ConnectorGooglecalendar,
#[serde(rename = "connector_googledrive")]
ConnectorGoogledrive,
#[serde(rename = "connector_microsoftteams")]
ConnectorMicrosoftteams,
#[serde(rename = "connector_outlookcalendar")]
ConnectorOutlookcalendar,
#[serde(rename = "connector_outlookemail")]
ConnectorOutlookemail,
#[serde(rename = "connector_sharepoint")]
ConnectorSharepoint,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseCreateMcpTool {
pub server_label: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub allowed_tools: Option<AllowedTools>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub authorization: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub connector_id: Option<RealtimeResponseCreateMcpToolConnectorId>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub headers: Option<std::collections::HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub require_approval: Option<RequireApproval>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub server_description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub server_url: Option<String>,
}
pub type ToolChoice = serde_json::Value;
pub type Tool = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseCreateParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<RealtimeResponseCreateAudioOutput>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub conversation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input: Option<Vec<ConversationItem>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub max_output_tokens: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_modalities: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_choice: Option<ToolChoice>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tools: Option<Vec<RealtimeMcpTool>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseError {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub code: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeResponseStatusReason {
#[serde(rename = "turn_detected")]
TurnDetected,
#[serde(rename = "client_cancelled")]
ClientCancelled,
#[serde(rename = "max_output_tokens")]
MaxOutputTokens,
#[serde(rename = "content_filter")]
ContentFilter,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeResponseStatusType {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "failed")]
Failed,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseStatus {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub error: Option<Error>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reason: Option<RealtimeResponseStatusReason>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<RealtimeResponseStatusType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseUsage {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input_token_details: Option<RealtimeResponseUsageInputTokenDetails>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_token_details: Option<RealtimeResponseUsageOutputTokenDetails>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub total_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct CachedTokensDetails {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub image_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseUsageInputTokenDetails {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub cached_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub cached_tokens_details: Option<CachedTokensDetails>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub image_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeResponseUsageOutputTokenDetails {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ConversationItemRetrieved {
pub event_id: String,
pub item: ConversationItem,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct OutputAudioBufferStarted {
pub event_id: String,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct OutputAudioBufferStopped {
pub event_id: String,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct OutputAudioBufferCleared {
pub event_id: String,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
pub type RealtimeServerEvent = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeSessionClientSecret {
pub expires_at: i64,
pub value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeSessionCreateRequest {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<RealtimeAudioConfig>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub include: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub max_output_tokens: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_modalities: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_choice: Option<RealtimeToolChoiceConfig>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tools: Option<RealtimeToolsConfig>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tracing: Option<RealtimeTracingConfig>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub truncation: Option<RealtimeTruncation>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioInputNoiseReduction {
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<NoiseReductionType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioInputTurnDetectionServerVad {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub create_response: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub idle_timeout_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub interrupt_response: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prefix_padding_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub silence_duration_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub threshold: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum AudioInputTurnDetectionSemanticVadEagerness {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioInputTurnDetectionSemanticVad {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub create_response: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub eagerness: Option<AudioInputTurnDetectionSemanticVadEagerness>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub interrupt_response: Option<bool>,
}
pub type AudioInputTurnDetection = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct AudioInput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub format: Option<RealtimeAudioFormats>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub noise_reduction: Option<AudioInputNoiseReduction>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub transcription: Option<AudioTranscription>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub turn_detection: Option<AudioInputTurnDetection>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ToolMcpToolAllowedToolsMcpToolFilter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
pub type ToolMcpToolAllowedTools = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ToolMcpToolRequireApprovalMcpToolApprovalFilterAlways {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ToolMcpToolRequireApprovalMcpToolApprovalFilterNever {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ToolMcpToolRequireApprovalMcpToolApprovalFilter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub always: Option<ToolMcpToolRequireApprovalMcpToolApprovalFilterAlways>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub never: Option<ToolMcpToolRequireApprovalMcpToolApprovalFilterNever>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ToolMcpToolRequireApproval {
Always,
Never,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ToolMcpToolConnectorId {
#[serde(rename = "connector_dropbox")]
ConnectorDropbox,
#[serde(rename = "connector_gmail")]
ConnectorGmail,
#[serde(rename = "connector_googlecalendar")]
ConnectorGooglecalendar,
#[serde(rename = "connector_googledrive")]
ConnectorGoogledrive,
#[serde(rename = "connector_microsoftteams")]
ConnectorMicrosoftteams,
#[serde(rename = "connector_outlookcalendar")]
ConnectorOutlookcalendar,
#[serde(rename = "connector_outlookemail")]
ConnectorOutlookemail,
#[serde(rename = "connector_sharepoint")]
ConnectorSharepoint,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ToolMcpTool {
pub server_label: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub allowed_tools: Option<ToolMcpToolAllowedTools>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub authorization: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub connector_id: Option<ToolMcpToolConnectorId>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub headers: Option<std::collections::HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub require_approval: Option<ToolMcpToolRequireApproval>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub server_description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub server_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TracingTracingConfiguration {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub group_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub workflow_name: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum Tracing {
Auto,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeSessionCreateResponse {
pub client_secret: RealtimeSessionClientSecret,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<Audio>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub include: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub max_output_tokens: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub output_modalities: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_choice: Option<ToolChoice>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tools: Option<Vec<RealtimeMcpTool>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tracing: Option<Tracing>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub truncation: Option<RealtimeTruncation>,
}
pub type RealtimeToolChoiceConfig = serde_json::Value;
pub type RealtimeToolsConfig = Vec<RealtimeToolsConfigUnion>;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpAllowedToolsMcpToolFilter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
pub type McpAllowedTools = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpRequireApprovalMcpToolApprovalFilterAlways {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpRequireApprovalMcpToolApprovalFilterNever {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub tool_names: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct McpRequireApprovalMcpToolApprovalFilter {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub always: Option<McpRequireApprovalMcpToolApprovalFilterAlways>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub never: Option<McpRequireApprovalMcpToolApprovalFilterNever>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum McpRequireApproval {
Always,
Never,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum McpConnectorId {
#[serde(rename = "connector_dropbox")]
ConnectorDropbox,
#[serde(rename = "connector_gmail")]
ConnectorGmail,
#[serde(rename = "connector_googlecalendar")]
ConnectorGooglecalendar,
#[serde(rename = "connector_googledrive")]
ConnectorGoogledrive,
#[serde(rename = "connector_microsoftteams")]
ConnectorMicrosoftteams,
#[serde(rename = "connector_outlookcalendar")]
ConnectorOutlookcalendar,
#[serde(rename = "connector_outlookemail")]
ConnectorOutlookemail,
#[serde(rename = "connector_sharepoint")]
ConnectorSharepoint,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct Mcp {
pub server_label: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub allowed_tools: Option<McpAllowedTools>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub authorization: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub connector_id: Option<McpConnectorId>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub headers: Option<std::collections::HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub require_approval: Option<McpRequireApproval>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub server_description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub server_url: Option<String>,
}
pub type RealtimeToolsConfigUnion = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TracingConfiguration {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub group_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub workflow_name: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeTracingConfig {
Auto,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeTranscriptionSessionAudio {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input: Option<RealtimeTranscriptionSessionAudioInput>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeTranscriptionSessionAudioInput {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub format: Option<RealtimeAudioFormats>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub noise_reduction: Option<NoiseReduction>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub transcription: Option<AudioTranscription>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub turn_detection: Option<RealtimeTranscriptionSessionAudioInputTurnDetection>,
}
pub type RealtimeTranscriptionSessionAudioInputTurnDetection = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeTranscriptionSessionCreateRequest {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<RealtimeTranscriptionSessionAudio>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub include: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeTranscriptionSessionCreateResponse {
pub id: String,
pub object: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<Audio>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_at: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub include: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeTranscriptionSessionTurnDetection {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prefix_padding_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub silence_duration_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub threshold: Option<f64>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum RealtimeTruncation {
Auto,
Disabled,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TokenLimits {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub post_instructions: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct RealtimeTruncationRetentionRatio {
pub retention_ratio: f64,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub token_limits: Option<TokenLimits>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseAudioDeltaEvent {
pub content_index: i64,
pub delta: String,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseAudioDoneEvent {
pub content_index: i64,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseAudioTranscriptDeltaEvent {
pub content_index: i64,
pub delta: String,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseAudioTranscriptDoneEvent {
pub content_index: i64,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
pub transcript: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseCancelEvent {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub response_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ContentPartPartType {
#[serde(rename = "text")]
Text,
#[serde(rename = "audio")]
Audio,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ContentPartPart {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub transcript: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
pub type_: Option<ContentPartPartType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseContentPartAddedEvent {
pub content_index: i64,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub part: ContentPartPart,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseContentPartDoneEvent {
pub content_index: i64,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub part: ContentPartPart,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseCreateEvent {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub response: Option<RealtimeResponseCreateParams>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseCreatedEvent {
pub event_id: String,
pub response: RealtimeResponse,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseDoneEvent {
pub event_id: String,
pub response: RealtimeResponse,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseFunctionCallArgumentsDeltaEvent {
pub call_id: String,
pub delta: String,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseFunctionCallArgumentsDoneEvent {
pub arguments: String,
pub call_id: String,
pub event_id: String,
pub item_id: String,
pub name: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseMcpCallArgumentsDelta {
pub delta: String,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub obfuscation: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseMcpCallArgumentsDone {
pub arguments: String,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseMcpCallCompleted {
pub event_id: String,
pub item_id: String,
pub output_index: i64,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseMcpCallFailed {
pub event_id: String,
pub item_id: String,
pub output_index: i64,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseMcpCallInProgress {
pub event_id: String,
pub item_id: String,
pub output_index: i64,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseOutputItemAddedEvent {
pub event_id: String,
pub item: ConversationItem,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseOutputItemDoneEvent {
pub event_id: String,
pub item: ConversationItem,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseTextDeltaEvent {
pub content_index: i64,
pub delta: String,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ResponseTextDoneEvent {
pub content_index: i64,
pub event_id: String,
pub item_id: String,
pub output_index: i64,
pub response_id: String,
pub text: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct SessionCreatedEvent {
pub event_id: String,
pub session: Session,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct SessionUpdateEvent {
pub session: Session,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct SessionUpdatedEvent {
pub event_id: String,
pub session: Session,
#[serde(rename = "type")]
pub type_: String,
}