1#![allow(unused_imports)]
5
6use serde::{Deserialize, Serialize};
7use super::*;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
11pub struct AudioTranscription {
12 #[serde(skip_serializing_if = "Option::is_none", default)]
14 pub language: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none", default)]
17 pub model: Option<String>,
18 #[serde(skip_serializing_if = "Option::is_none", default)]
20 pub prompt: Option<String>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
24#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
25pub struct CallAcceptParams {
26 #[serde(rename = "type")]
28 pub type_: String,
29 #[serde(skip_serializing_if = "Option::is_none", default)]
31 pub audio: Option<serde_json::Value>,
32 #[serde(skip_serializing_if = "Option::is_none", default)]
34 pub include: Option<Vec<String>>,
35 #[serde(skip_serializing_if = "Option::is_none", default)]
37 pub instructions: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none", default)]
40 pub max_output_tokens: Option<String>,
41 #[serde(skip_serializing_if = "Option::is_none", default)]
43 pub model: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none", default)]
46 pub output_modalities: Option<Vec<serde_json::Value>>,
47 #[serde(skip_serializing_if = "Option::is_none", default)]
49 pub prompt: Option<serde_json::Value>,
50 #[serde(skip_serializing_if = "Option::is_none", default)]
52 pub tool_choice: Option<serde_json::Value>,
53 #[serde(skip_serializing_if = "Option::is_none", default)]
55 pub tools: Option<serde_json::Value>,
56 #[serde(skip_serializing_if = "Option::is_none", default)]
58 pub tracing: Option<serde_json::Value>,
59 #[serde(skip_serializing_if = "Option::is_none", default)]
61 pub truncation: Option<serde_json::Value>,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize)]
65#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
66pub struct CallCreateParams {
67 pub sdp: String,
69 #[serde(skip_serializing_if = "Option::is_none", default)]
71 pub session: Option<serde_json::Value>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
75#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
76pub struct CallReferParams {
77 pub target_uri: String,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
83pub struct CallRejectParams {
84 #[serde(skip_serializing_if = "Option::is_none", default)]
86 pub status_code: Option<i64>,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
91pub struct ClientSecretCreateParams {
92 #[serde(skip_serializing_if = "Option::is_none", default)]
94 pub expires_after: Option<ExpiresAfter>,
95 #[serde(skip_serializing_if = "Option::is_none", default)]
97 pub session: Option<Session>,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
102#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
103pub struct ExpiresAfter {
104 #[serde(skip_serializing_if = "Option::is_none", default)]
106 pub anchor: Option<String>,
107 #[serde(skip_serializing_if = "Option::is_none", default)]
109 pub seconds: Option<i64>,
110}
111
112pub type Session = serde_json::Value;
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
117pub struct ClientSecretCreateResponse {
118 pub expires_at: i64,
120 pub session: Session,
122 pub value: String,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
128#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
129pub struct Conversation {
130 #[serde(skip_serializing_if = "Option::is_none", default)]
132 pub id: Option<String>,
133 #[serde(skip_serializing_if = "Option::is_none", default)]
135 pub object: Option<String>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
140#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
141pub struct ConversationCreatedEvent {
142 pub conversation: Conversation,
144 pub event_id: String,
146 #[serde(rename = "type")]
148 pub type_: String,
149}
150
151pub type ConversationItem = serde_json::Value;
152
153#[derive(Debug, Clone, Serialize, Deserialize)]
155#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
156pub struct ConversationItemAdded {
157 pub event_id: String,
159 pub item: ConversationItem,
161 #[serde(rename = "type")]
163 pub type_: String,
164 #[serde(skip_serializing_if = "Option::is_none", default)]
166 pub previous_item_id: Option<String>,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize)]
171#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
172pub struct ConversationItemCreateEvent {
173 pub item: ConversationItem,
175 #[serde(rename = "type")]
177 pub type_: String,
178 #[serde(skip_serializing_if = "Option::is_none", default)]
180 pub event_id: Option<String>,
181 #[serde(skip_serializing_if = "Option::is_none", default)]
183 pub previous_item_id: Option<String>,
184}
185
186#[derive(Debug, Clone, Serialize, Deserialize)]
188#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
189pub struct ConversationItemCreatedEvent {
190 pub event_id: String,
192 pub item: ConversationItem,
194 #[serde(rename = "type")]
196 pub type_: String,
197 #[serde(skip_serializing_if = "Option::is_none", default)]
199 pub previous_item_id: Option<String>,
200}
201
202#[derive(Debug, Clone, Serialize, Deserialize)]
204#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
205pub struct ConversationItemDeleteEvent {
206 pub item_id: String,
208 #[serde(rename = "type")]
210 pub type_: String,
211 #[serde(skip_serializing_if = "Option::is_none", default)]
213 pub event_id: Option<String>,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
218#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
219pub struct ConversationItemDeletedEvent {
220 pub event_id: String,
222 pub item_id: String,
224 #[serde(rename = "type")]
226 pub type_: String,
227}
228
229#[derive(Debug, Clone, Serialize, Deserialize)]
231#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
232pub struct ConversationItemDone {
233 pub event_id: String,
235 pub item: ConversationItem,
237 #[serde(rename = "type")]
239 pub type_: String,
240 #[serde(skip_serializing_if = "Option::is_none", default)]
242 pub previous_item_id: Option<String>,
243}
244
245#[derive(Debug, Clone, Serialize, Deserialize)]
247#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
248pub struct UsageTranscriptTextUsageTokensInputTokenDetails {
249 #[serde(skip_serializing_if = "Option::is_none", default)]
251 pub audio_tokens: Option<i64>,
252 #[serde(skip_serializing_if = "Option::is_none", default)]
254 pub text_tokens: Option<i64>,
255}
256
257#[derive(Debug, Clone, Serialize, Deserialize)]
259#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
260pub struct UsageTranscriptTextUsageTokens {
261 pub input_tokens: i64,
263 pub output_tokens: i64,
265 pub total_tokens: i64,
267 #[serde(rename = "type")]
269 pub type_: String,
270 #[serde(skip_serializing_if = "Option::is_none", default)]
272 pub input_token_details: Option<UsageTranscriptTextUsageTokensInputTokenDetails>,
273}
274
275#[derive(Debug, Clone, Serialize, Deserialize)]
277#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
278pub struct UsageTranscriptTextUsageDuration {
279 pub seconds: f64,
281 #[serde(rename = "type")]
283 pub type_: String,
284}
285
286pub type Usage = serde_json::Value;
287
288#[derive(Debug, Clone, Serialize, Deserialize)]
290#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
291pub struct ConversationItemInputAudioTranscriptionCompletedEvent {
292 pub content_index: i64,
294 pub event_id: String,
296 pub item_id: String,
298 pub transcript: String,
300 #[serde(rename = "type")]
302 pub type_: String,
303 pub usage: Usage,
305 #[serde(skip_serializing_if = "Option::is_none", default)]
307 pub logprobs: Option<Vec<LogProbProperties>>,
308}
309
310#[derive(Debug, Clone, Serialize, Deserialize)]
312#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
313pub struct ConversationItemInputAudioTranscriptionDeltaEvent {
314 pub event_id: String,
316 pub item_id: String,
318 #[serde(rename = "type")]
320 pub type_: String,
321 #[serde(skip_serializing_if = "Option::is_none", default)]
323 pub content_index: Option<i64>,
324 #[serde(skip_serializing_if = "Option::is_none", default)]
326 pub delta: Option<String>,
327 #[serde(skip_serializing_if = "Option::is_none", default)]
329 pub logprobs: Option<Vec<LogProbProperties>>,
330}
331
332#[derive(Debug, Clone, Serialize, Deserialize)]
334#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
335pub struct ConversationItemError {
336 #[serde(skip_serializing_if = "Option::is_none", default)]
338 pub code: Option<String>,
339 #[serde(skip_serializing_if = "Option::is_none", default)]
341 pub message: Option<String>,
342 #[serde(skip_serializing_if = "Option::is_none", default)]
344 pub param: Option<String>,
345 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
347 pub type_: Option<String>,
348}
349
350#[derive(Debug, Clone, Serialize, Deserialize)]
352#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
353pub struct ConversationItemInputAudioTranscriptionFailedEvent {
354 pub content_index: i64,
356 pub error: serde_json::Value,
358 pub event_id: String,
360 pub item_id: String,
362 #[serde(rename = "type")]
364 pub type_: String,
365}
366
367#[derive(Debug, Clone, Serialize, Deserialize)]
369#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
370pub struct ConversationItemInputAudioTranscriptionSegment {
371 pub id: String,
373 pub content_index: i64,
375 pub end: f64,
377 pub event_id: String,
379 pub item_id: String,
381 pub speaker: String,
383 pub start: f64,
385 pub text: String,
387 #[serde(rename = "type")]
389 pub type_: String,
390}
391
392#[derive(Debug, Clone, Serialize, Deserialize)]
394#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
395pub struct ConversationItemRetrieveEvent {
396 pub item_id: String,
398 #[serde(rename = "type")]
400 pub type_: String,
401 #[serde(skip_serializing_if = "Option::is_none", default)]
403 pub event_id: Option<String>,
404}
405
406#[derive(Debug, Clone, Serialize, Deserialize)]
408#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
409pub struct ConversationItemTruncateEvent {
410 pub audio_end_ms: i64,
412 pub content_index: i64,
414 pub item_id: String,
416 #[serde(rename = "type")]
418 pub type_: String,
419 #[serde(skip_serializing_if = "Option::is_none", default)]
421 pub event_id: Option<String>,
422}
423
424#[derive(Debug, Clone, Serialize, Deserialize)]
426#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
427pub struct ConversationItemTruncatedEvent {
428 pub audio_end_ms: i64,
430 pub content_index: i64,
432 pub event_id: String,
434 pub item_id: String,
436 #[serde(rename = "type")]
438 pub type_: String,
439}
440
441#[derive(Debug, Clone, Serialize, Deserialize)]
443#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
444pub struct InputAudioBufferAppendEvent {
445 pub audio: String,
447 #[serde(rename = "type")]
449 pub type_: String,
450 #[serde(skip_serializing_if = "Option::is_none", default)]
452 pub event_id: Option<String>,
453}
454
455#[derive(Debug, Clone, Serialize, Deserialize)]
457#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
458pub struct InputAudioBufferClearEvent {
459 #[serde(rename = "type")]
461 pub type_: String,
462 #[serde(skip_serializing_if = "Option::is_none", default)]
464 pub event_id: Option<String>,
465}
466
467#[derive(Debug, Clone, Serialize, Deserialize)]
469#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
470pub struct InputAudioBufferClearedEvent {
471 pub event_id: String,
473 #[serde(rename = "type")]
475 pub type_: String,
476}
477
478#[derive(Debug, Clone, Serialize, Deserialize)]
480#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
481pub struct InputAudioBufferCommitEvent {
482 #[serde(rename = "type")]
484 pub type_: String,
485 #[serde(skip_serializing_if = "Option::is_none", default)]
487 pub event_id: Option<String>,
488}
489
490#[derive(Debug, Clone, Serialize, Deserialize)]
492#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
493pub struct InputAudioBufferCommittedEvent {
494 pub event_id: String,
496 pub item_id: String,
498 #[serde(rename = "type")]
500 pub type_: String,
501 #[serde(skip_serializing_if = "Option::is_none", default)]
503 pub previous_item_id: Option<String>,
504}
505
506#[derive(Debug, Clone, Serialize, Deserialize)]
508#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
509pub struct InputAudioBufferDtmfEventReceivedEvent {
510 pub event: String,
512 pub received_at: i64,
514 #[serde(rename = "type")]
516 pub type_: String,
517}
518
519#[derive(Debug, Clone, Serialize, Deserialize)]
521#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
522pub struct InputAudioBufferSpeechStartedEvent {
523 pub audio_start_ms: i64,
525 pub event_id: String,
527 pub item_id: String,
529 #[serde(rename = "type")]
531 pub type_: String,
532}
533
534#[derive(Debug, Clone, Serialize, Deserialize)]
536#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
537pub struct InputAudioBufferSpeechStoppedEvent {
538 pub audio_end_ms: i64,
540 pub event_id: String,
542 pub item_id: String,
544 #[serde(rename = "type")]
546 pub type_: String,
547}
548
549#[derive(Debug, Clone, Serialize, Deserialize)]
551#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
552pub struct InputAudioBufferTimeoutTriggered {
553 pub audio_end_ms: i64,
555 pub audio_start_ms: i64,
557 pub event_id: String,
559 pub item_id: String,
561 #[serde(rename = "type")]
563 pub type_: String,
564}
565
566#[derive(Debug, Clone, Serialize, Deserialize)]
568#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
569pub struct LogProbProperties {
570 pub token: String,
572 pub bytes: Vec<i64>,
574 pub logprob: f64,
576}
577
578#[derive(Debug, Clone, Serialize, Deserialize)]
580#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
581pub struct McpListToolsCompleted {
582 pub event_id: String,
584 pub item_id: String,
586 #[serde(rename = "type")]
588 pub type_: String,
589}
590
591#[derive(Debug, Clone, Serialize, Deserialize)]
593#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
594pub struct McpListToolsFailed {
595 pub event_id: String,
597 pub item_id: String,
599 #[serde(rename = "type")]
601 pub type_: String,
602}
603
604#[derive(Debug, Clone, Serialize, Deserialize)]
606#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
607pub struct McpListToolsInProgress {
608 pub event_id: String,
610 pub item_id: String,
612 #[serde(rename = "type")]
614 pub type_: String,
615}
616
617#[derive(Debug, Clone, Serialize, Deserialize)]
619#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
620pub struct OutputAudioBufferClearEvent {
621 #[serde(rename = "type")]
623 pub type_: String,
624 #[serde(skip_serializing_if = "Option::is_none", default)]
626 pub event_id: Option<String>,
627}
628
629#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
630#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
631#[non_exhaustive]
632pub enum RateLimitName {
633 #[serde(rename = "requests")]
634 Requests,
635 #[serde(rename = "tokens")]
636 Tokens,
637}
638
639#[derive(Debug, Clone, Serialize, Deserialize)]
640#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
641pub struct RateLimit {
642 #[serde(skip_serializing_if = "Option::is_none", default)]
644 pub limit: Option<i64>,
645 #[serde(skip_serializing_if = "Option::is_none", default)]
647 pub name: Option<RateLimitName>,
648 #[serde(skip_serializing_if = "Option::is_none", default)]
650 pub remaining: Option<i64>,
651 #[serde(skip_serializing_if = "Option::is_none", default)]
653 pub reset_seconds: Option<f64>,
654}
655
656#[derive(Debug, Clone, Serialize, Deserialize)]
658#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
659pub struct RateLimitsUpdatedEvent {
660 pub event_id: String,
662 pub rate_limits: Vec<RateLimit>,
664 #[serde(rename = "type")]
666 pub type_: String,
667}
668
669#[derive(Debug, Clone, Serialize, Deserialize)]
671#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
672pub struct RealtimeAudioConfig {
673 #[serde(skip_serializing_if = "Option::is_none", default)]
674 pub input: Option<RealtimeAudioConfigInput>,
675 #[serde(skip_serializing_if = "Option::is_none", default)]
676 pub output: Option<RealtimeAudioConfigOutput>,
677}
678
679#[derive(Debug, Clone, Serialize, Deserialize)]
681#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
682pub struct NoiseReduction {
683 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
685 pub type_: Option<NoiseReductionType>,
686}
687
688#[derive(Debug, Clone, Serialize, Deserialize)]
689#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
690pub struct RealtimeAudioConfigInput {
691 #[serde(skip_serializing_if = "Option::is_none", default)]
693 pub format: Option<RealtimeAudioFormats>,
694 #[serde(skip_serializing_if = "Option::is_none", default)]
696 pub noise_reduction: Option<NoiseReduction>,
697 #[serde(skip_serializing_if = "Option::is_none", default)]
699 pub transcription: Option<AudioTranscription>,
700 #[serde(skip_serializing_if = "Option::is_none", default)]
702 pub turn_detection: Option<RealtimeAudioInputTurnDetection>,
703}
704
705#[derive(Debug, Clone, Serialize, Deserialize)]
707#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
708pub struct VoiceID {
709 pub id: String,
711}
712
713#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
714#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
715#[non_exhaustive]
716pub enum Voice {
717 Alloy,
718 Ash,
719 Ballad,
720 Coral,
721 Echo,
722 Sage,
723 Shimmer,
724 Verse,
725 Marin,
726 Cedar,
727}
728
729#[derive(Debug, Clone, Serialize, Deserialize)]
730#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
731pub struct RealtimeAudioConfigOutput {
732 #[serde(skip_serializing_if = "Option::is_none", default)]
734 pub format: Option<RealtimeAudioFormats>,
735 #[serde(skip_serializing_if = "Option::is_none", default)]
737 pub speed: Option<f64>,
738 #[serde(skip_serializing_if = "Option::is_none", default)]
740 pub voice: Option<Voice>,
741}
742
743#[derive(Debug, Clone, Serialize, Deserialize)]
745#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
746pub struct AudioPCM {
747 #[serde(skip_serializing_if = "Option::is_none", default)]
749 pub rate: Option<String>,
750 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
752 pub type_: Option<String>,
753}
754
755#[derive(Debug, Clone, Serialize, Deserialize)]
757#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
758pub struct AudioPCMU {
759 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
761 pub type_: Option<String>,
762}
763
764#[derive(Debug, Clone, Serialize, Deserialize)]
766#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
767pub struct AudioPCMA {
768 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
770 pub type_: Option<String>,
771}
772
773pub type RealtimeAudioFormats = serde_json::Value;
774
775#[derive(Debug, Clone, Serialize, Deserialize)]
777#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
778pub struct ServerVad {
779 #[serde(rename = "type")]
781 pub type_: String,
782 #[serde(skip_serializing_if = "Option::is_none", default)]
784 pub create_response: Option<bool>,
785 #[serde(skip_serializing_if = "Option::is_none", default)]
787 pub idle_timeout_ms: Option<i64>,
788 #[serde(skip_serializing_if = "Option::is_none", default)]
790 pub interrupt_response: Option<bool>,
791 #[serde(skip_serializing_if = "Option::is_none", default)]
793 pub prefix_padding_ms: Option<i64>,
794 #[serde(skip_serializing_if = "Option::is_none", default)]
796 pub silence_duration_ms: Option<i64>,
797 #[serde(skip_serializing_if = "Option::is_none", default)]
799 pub threshold: Option<f64>,
800}
801
802#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
803#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
804#[non_exhaustive]
805pub enum SemanticVadEagerness {
806 #[serde(rename = "low")]
807 Low,
808 #[serde(rename = "medium")]
809 Medium,
810 #[serde(rename = "high")]
811 High,
812 #[serde(rename = "auto")]
813 Auto,
814}
815
816#[derive(Debug, Clone, Serialize, Deserialize)]
818#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
819pub struct SemanticVad {
820 #[serde(rename = "type")]
822 pub type_: String,
823 #[serde(skip_serializing_if = "Option::is_none", default)]
825 pub create_response: Option<bool>,
826 #[serde(skip_serializing_if = "Option::is_none", default)]
828 pub eagerness: Option<SemanticVadEagerness>,
829 #[serde(skip_serializing_if = "Option::is_none", default)]
831 pub interrupt_response: Option<bool>,
832}
833
834pub type RealtimeAudioInputTurnDetection = serde_json::Value;
835
836pub type RealtimeClientEvent = serde_json::Value;
837
838#[derive(Debug, Clone, Serialize, Deserialize)]
839#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
840pub struct RealtimeConnectParams {
841 #[serde(skip_serializing_if = "Option::is_none", default)]
842 pub call_id: Option<String>,
843 #[serde(skip_serializing_if = "Option::is_none", default)]
844 pub model: Option<String>,
845}
846
847#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
848#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
849#[non_exhaustive]
850pub enum RealtimeConversationContentType {
851 #[serde(rename = "output_text")]
852 OutputText,
853 #[serde(rename = "output_audio")]
854 OutputAudio,
855}
856
857#[derive(Debug, Clone, Serialize, Deserialize)]
858#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
859pub struct RealtimeConversationContent {
860 #[serde(skip_serializing_if = "Option::is_none", default)]
862 pub audio: Option<String>,
863 #[serde(skip_serializing_if = "Option::is_none", default)]
865 pub text: Option<String>,
866 #[serde(skip_serializing_if = "Option::is_none", default)]
868 pub transcript: Option<String>,
869 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
871 pub type_: Option<RealtimeConversationContentType>,
872}
873
874#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
875#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
876#[non_exhaustive]
877pub enum RealtimeConversationItemAssistantMessageStatus {
878 #[serde(rename = "completed")]
879 Completed,
880 #[serde(rename = "incomplete")]
881 Incomplete,
882 #[serde(rename = "in_progress")]
883 InProgress,
884}
885
886#[derive(Debug, Clone, Serialize, Deserialize)]
888#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
889pub struct RealtimeConversationItemAssistantMessage {
890 pub content: Vec<RealtimeConversationContent>,
892 pub role: String,
894 #[serde(rename = "type")]
896 pub type_: String,
897 #[serde(skip_serializing_if = "Option::is_none", default)]
899 pub id: Option<String>,
900 #[serde(skip_serializing_if = "Option::is_none", default)]
902 pub object: Option<String>,
903 #[serde(skip_serializing_if = "Option::is_none", default)]
905 pub status: Option<RealtimeConversationItemAssistantMessageStatus>,
906}
907
908#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
909#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
910#[non_exhaustive]
911pub enum RealtimeConversationItemFunctionCallStatus {
912 #[serde(rename = "completed")]
913 Completed,
914 #[serde(rename = "incomplete")]
915 Incomplete,
916 #[serde(rename = "in_progress")]
917 InProgress,
918}
919
920#[derive(Debug, Clone, Serialize, Deserialize)]
922#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
923pub struct RealtimeConversationItemFunctionCall {
924 pub arguments: String,
926 pub name: String,
928 #[serde(rename = "type")]
930 pub type_: String,
931 #[serde(skip_serializing_if = "Option::is_none", default)]
933 pub id: Option<String>,
934 #[serde(skip_serializing_if = "Option::is_none", default)]
936 pub call_id: Option<String>,
937 #[serde(skip_serializing_if = "Option::is_none", default)]
939 pub object: Option<String>,
940 #[serde(skip_serializing_if = "Option::is_none", default)]
942 pub status: Option<RealtimeConversationItemFunctionCallStatus>,
943}
944
945#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
946#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
947#[non_exhaustive]
948pub enum RealtimeConversationItemFunctionCallOutputStatus {
949 #[serde(rename = "completed")]
950 Completed,
951 #[serde(rename = "incomplete")]
952 Incomplete,
953 #[serde(rename = "in_progress")]
954 InProgress,
955}
956
957#[derive(Debug, Clone, Serialize, Deserialize)]
959#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
960pub struct RealtimeConversationItemFunctionCallOutput {
961 pub call_id: String,
963 pub output: String,
965 #[serde(rename = "type")]
967 pub type_: String,
968 #[serde(skip_serializing_if = "Option::is_none", default)]
970 pub id: Option<String>,
971 #[serde(skip_serializing_if = "Option::is_none", default)]
973 pub object: Option<String>,
974 #[serde(skip_serializing_if = "Option::is_none", default)]
976 pub status: Option<RealtimeConversationItemFunctionCallOutputStatus>,
977}
978
979#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
980#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
981#[non_exhaustive]
982pub enum RealtimeConversationItemSystemMessageStatus {
983 #[serde(rename = "completed")]
984 Completed,
985 #[serde(rename = "incomplete")]
986 Incomplete,
987 #[serde(rename = "in_progress")]
988 InProgress,
989}
990
991#[derive(Debug, Clone, Serialize, Deserialize)]
993#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
994pub struct RealtimeConversationItemSystemMessage {
995 pub content: Vec<RealtimeConversationContent>,
997 pub role: String,
999 #[serde(rename = "type")]
1001 pub type_: String,
1002 #[serde(skip_serializing_if = "Option::is_none", default)]
1004 pub id: Option<String>,
1005 #[serde(skip_serializing_if = "Option::is_none", default)]
1007 pub object: Option<String>,
1008 #[serde(skip_serializing_if = "Option::is_none", default)]
1010 pub status: Option<RealtimeConversationItemSystemMessageStatus>,
1011}
1012
1013#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1014#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1015#[non_exhaustive]
1016pub enum RealtimeConversationContentDetail {
1017 #[serde(rename = "auto")]
1018 Auto,
1019 #[serde(rename = "low")]
1020 Low,
1021 #[serde(rename = "high")]
1022 High,
1023}
1024
1025#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1026#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1027#[non_exhaustive]
1028pub enum RealtimeConversationItemUserMessageStatus {
1029 #[serde(rename = "completed")]
1030 Completed,
1031 #[serde(rename = "incomplete")]
1032 Incomplete,
1033 #[serde(rename = "in_progress")]
1034 InProgress,
1035}
1036
1037#[derive(Debug, Clone, Serialize, Deserialize)]
1039#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1040pub struct RealtimeConversationItemUserMessage {
1041 pub content: Vec<RealtimeConversationContent>,
1043 pub role: String,
1045 #[serde(rename = "type")]
1047 pub type_: String,
1048 #[serde(skip_serializing_if = "Option::is_none", default)]
1050 pub id: Option<String>,
1051 #[serde(skip_serializing_if = "Option::is_none", default)]
1053 pub object: Option<String>,
1054 #[serde(skip_serializing_if = "Option::is_none", default)]
1056 pub status: Option<RealtimeConversationItemUserMessageStatus>,
1057}
1058
1059#[derive(Debug, Clone, Serialize, Deserialize)]
1061#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1062pub struct RealtimeError {
1063 pub message: String,
1065 #[serde(rename = "type")]
1067 pub type_: String,
1068 #[serde(skip_serializing_if = "Option::is_none", default)]
1070 pub code: Option<String>,
1071 #[serde(skip_serializing_if = "Option::is_none", default)]
1073 pub event_id: Option<String>,
1074 #[serde(skip_serializing_if = "Option::is_none", default)]
1076 pub param: Option<String>,
1077}
1078
1079#[derive(Debug, Clone, Serialize, Deserialize)]
1081#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1082pub struct RealtimeErrorEvent {
1083 pub error: RealtimeError,
1085 pub event_id: String,
1087 #[serde(rename = "type")]
1089 pub type_: String,
1090}
1091
1092#[derive(Debug, Clone, Serialize, Deserialize)]
1093#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1094pub struct RealtimeFunctionTool {
1095 #[serde(skip_serializing_if = "Option::is_none", default)]
1097 pub description: Option<String>,
1098 #[serde(skip_serializing_if = "Option::is_none", default)]
1100 pub name: Option<String>,
1101 #[serde(skip_serializing_if = "Option::is_none", default)]
1103 pub parameters: Option<serde_json::Value>,
1104 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
1106 pub type_: Option<String>,
1107}
1108
1109#[derive(Debug, Clone, Serialize, Deserialize)]
1111#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1112pub struct RealtimeMcpApprovalRequest {
1113 pub id: String,
1115 pub arguments: String,
1117 pub name: String,
1119 pub server_label: String,
1121 #[serde(rename = "type")]
1123 pub type_: String,
1124}
1125
1126#[derive(Debug, Clone, Serialize, Deserialize)]
1128#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1129pub struct RealtimeMcpApprovalResponse {
1130 pub id: String,
1132 pub approval_request_id: String,
1134 pub approve: bool,
1136 #[serde(rename = "type")]
1138 pub type_: String,
1139 #[serde(skip_serializing_if = "Option::is_none", default)]
1141 pub reason: Option<String>,
1142}
1143
1144#[derive(Debug, Clone, Serialize, Deserialize)]
1146#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1147pub struct RealtimeMcpTool {
1148 pub input_schema: serde_json::Value,
1150 pub name: String,
1152 #[serde(skip_serializing_if = "Option::is_none", default)]
1154 pub annotations: Option<serde_json::Value>,
1155 #[serde(skip_serializing_if = "Option::is_none", default)]
1157 pub description: Option<String>,
1158}
1159
1160#[derive(Debug, Clone, Serialize, Deserialize)]
1162#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1163pub struct RealtimeMcpListTools {
1164 pub server_label: String,
1166 pub tools: Vec<RealtimeMcpTool>,
1168 #[serde(rename = "type")]
1170 pub type_: String,
1171 #[serde(skip_serializing_if = "Option::is_none", default)]
1173 pub id: Option<String>,
1174}
1175
1176#[derive(Debug, Clone, Serialize, Deserialize)]
1177#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1178pub struct RealtimeMcpProtocolError {
1179 pub code: i64,
1180 pub message: String,
1181 #[serde(rename = "type")]
1182 pub type_: String,
1183}
1184
1185pub type Error = serde_json::Value;
1186
1187#[derive(Debug, Clone, Serialize, Deserialize)]
1189#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1190pub struct RealtimeMcpToolCall {
1191 pub id: String,
1193 pub arguments: String,
1195 pub name: String,
1197 pub server_label: String,
1199 #[serde(rename = "type")]
1201 pub type_: String,
1202 #[serde(skip_serializing_if = "Option::is_none", default)]
1204 pub approval_request_id: Option<String>,
1205 #[serde(skip_serializing_if = "Option::is_none", default)]
1207 pub error: Option<Error>,
1208 #[serde(skip_serializing_if = "Option::is_none", default)]
1210 pub output: Option<String>,
1211}
1212
1213#[derive(Debug, Clone, Serialize, Deserialize)]
1214#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1215pub struct RealtimeMcpToolExecutionError {
1216 pub message: String,
1217 #[serde(rename = "type")]
1218 pub type_: String,
1219}
1220
1221#[derive(Debug, Clone, Serialize, Deserialize)]
1222#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1223pub struct RealtimeMcphttpError {
1224 pub code: i64,
1225 pub message: String,
1226 #[serde(rename = "type")]
1227 pub type_: String,
1228}
1229
1230#[derive(Debug, Clone, Serialize, Deserialize)]
1231#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1232pub struct AudioOutput {
1233 #[serde(skip_serializing_if = "Option::is_none", default)]
1235 pub format: Option<RealtimeAudioFormats>,
1236 #[serde(skip_serializing_if = "Option::is_none", default)]
1238 pub voice: Option<String>,
1239}
1240
1241#[derive(Debug, Clone, Serialize, Deserialize)]
1243#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1244pub struct Audio {
1245 #[serde(skip_serializing_if = "Option::is_none", default)]
1246 pub output: Option<AudioOutput>,
1247}
1248
1249#[derive(Debug, Clone, Serialize, Deserialize)]
1251#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1252pub struct RealtimeResponse {
1253 #[serde(skip_serializing_if = "Option::is_none", default)]
1255 pub id: Option<String>,
1256 #[serde(skip_serializing_if = "Option::is_none", default)]
1258 pub audio: Option<Audio>,
1259 #[serde(skip_serializing_if = "Option::is_none", default)]
1261 pub conversation_id: Option<String>,
1262 #[serde(skip_serializing_if = "Option::is_none", default)]
1264 pub max_output_tokens: Option<String>,
1265 #[serde(skip_serializing_if = "Option::is_none", default)]
1267 pub metadata: Option<serde_json::Value>,
1268 #[serde(skip_serializing_if = "Option::is_none", default)]
1270 pub object: Option<String>,
1271 #[serde(skip_serializing_if = "Option::is_none", default)]
1273 pub output: Option<Vec<ConversationItem>>,
1274 #[serde(skip_serializing_if = "Option::is_none", default)]
1276 pub output_modalities: Option<Vec<serde_json::Value>>,
1277 #[serde(skip_serializing_if = "Option::is_none", default)]
1279 pub status: Option<RealtimeResponseStatus>,
1280 #[serde(skip_serializing_if = "Option::is_none", default)]
1282 pub status_details: Option<RealtimeResponseStatus>,
1283 #[serde(skip_serializing_if = "Option::is_none", default)]
1285 pub usage: Option<RealtimeResponseUsage>,
1286}
1287
1288#[derive(Debug, Clone, Serialize, Deserialize)]
1290#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1291pub struct OutputVoiceID {
1292 pub id: String,
1294}
1295
1296#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1297#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1298#[non_exhaustive]
1299pub enum OutputVoice {
1300 Alloy,
1301 Ash,
1302 Ballad,
1303 Coral,
1304 Echo,
1305 Sage,
1306 Shimmer,
1307 Verse,
1308 Marin,
1309 Cedar,
1310}
1311
1312#[derive(Debug, Clone, Serialize, Deserialize)]
1313#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1314pub struct RealtimeResponseOutput {
1315 #[serde(skip_serializing_if = "Option::is_none", default)]
1317 pub format: Option<RealtimeAudioFormats>,
1318 #[serde(skip_serializing_if = "Option::is_none", default)]
1320 pub voice: Option<OutputVoice>,
1321}
1322
1323#[derive(Debug, Clone, Serialize, Deserialize)]
1325#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1326pub struct RealtimeResponseCreateAudioOutput {
1327 #[serde(skip_serializing_if = "Option::is_none", default)]
1328 pub output: Option<RealtimeResponseOutput>,
1329}
1330
1331#[derive(Debug, Clone, Serialize, Deserialize)]
1333#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1334pub struct AllowedToolsMcpToolFilter {
1335 #[serde(skip_serializing_if = "Option::is_none", default)]
1337 pub read_only: Option<bool>,
1338 #[serde(skip_serializing_if = "Option::is_none", default)]
1340 pub tool_names: Option<Vec<String>>,
1341}
1342
1343pub type AllowedTools = serde_json::Value;
1344
1345#[derive(Debug, Clone, Serialize, Deserialize)]
1347#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1348pub struct RequireApprovalMcpToolApprovalFilterAlways {
1349 #[serde(skip_serializing_if = "Option::is_none", default)]
1351 pub read_only: Option<bool>,
1352 #[serde(skip_serializing_if = "Option::is_none", default)]
1354 pub tool_names: Option<Vec<String>>,
1355}
1356
1357#[derive(Debug, Clone, Serialize, Deserialize)]
1359#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1360pub struct RequireApprovalMcpToolApprovalFilterNever {
1361 #[serde(skip_serializing_if = "Option::is_none", default)]
1363 pub read_only: Option<bool>,
1364 #[serde(skip_serializing_if = "Option::is_none", default)]
1366 pub tool_names: Option<Vec<String>>,
1367}
1368
1369#[derive(Debug, Clone, Serialize, Deserialize)]
1371#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1372pub struct RequireApprovalMcpToolApprovalFilter {
1373 #[serde(skip_serializing_if = "Option::is_none", default)]
1375 pub always: Option<RequireApprovalMcpToolApprovalFilterAlways>,
1376 #[serde(skip_serializing_if = "Option::is_none", default)]
1378 pub never: Option<RequireApprovalMcpToolApprovalFilterNever>,
1379}
1380
1381#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1382#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1383#[non_exhaustive]
1384pub enum RequireApproval {
1385 Always,
1386 Never,
1387}
1388
1389#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1390#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1391#[non_exhaustive]
1392pub enum RealtimeResponseCreateMcpToolConnectorId {
1393 #[serde(rename = "connector_dropbox")]
1394 ConnectorDropbox,
1395 #[serde(rename = "connector_gmail")]
1396 ConnectorGmail,
1397 #[serde(rename = "connector_googlecalendar")]
1398 ConnectorGooglecalendar,
1399 #[serde(rename = "connector_googledrive")]
1400 ConnectorGoogledrive,
1401 #[serde(rename = "connector_microsoftteams")]
1402 ConnectorMicrosoftteams,
1403 #[serde(rename = "connector_outlookcalendar")]
1404 ConnectorOutlookcalendar,
1405 #[serde(rename = "connector_outlookemail")]
1406 ConnectorOutlookemail,
1407 #[serde(rename = "connector_sharepoint")]
1408 ConnectorSharepoint,
1409}
1410
1411#[derive(Debug, Clone, Serialize, Deserialize)]
1413#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1414pub struct RealtimeResponseCreateMcpTool {
1415 pub server_label: String,
1417 #[serde(rename = "type")]
1419 pub type_: String,
1420 #[serde(skip_serializing_if = "Option::is_none", default)]
1422 pub allowed_tools: Option<AllowedTools>,
1423 #[serde(skip_serializing_if = "Option::is_none", default)]
1425 pub authorization: Option<String>,
1426 #[serde(skip_serializing_if = "Option::is_none", default)]
1428 pub connector_id: Option<RealtimeResponseCreateMcpToolConnectorId>,
1429 #[serde(skip_serializing_if = "Option::is_none", default)]
1431 pub defer_loading: Option<bool>,
1432 #[serde(skip_serializing_if = "Option::is_none", default)]
1434 pub headers: Option<std::collections::HashMap<String, String>>,
1435 #[serde(skip_serializing_if = "Option::is_none", default)]
1437 pub require_approval: Option<RequireApproval>,
1438 #[serde(skip_serializing_if = "Option::is_none", default)]
1440 pub server_description: Option<String>,
1441 #[serde(skip_serializing_if = "Option::is_none", default)]
1443 pub server_url: Option<String>,
1444}
1445
1446pub type ToolChoice = serde_json::Value;
1447
1448pub type Tool = serde_json::Value;
1449
1450#[derive(Debug, Clone, Serialize, Deserialize)]
1452#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1453pub struct RealtimeResponseCreateParams {
1454 #[serde(skip_serializing_if = "Option::is_none", default)]
1456 pub audio: Option<RealtimeResponseCreateAudioOutput>,
1457 #[serde(skip_serializing_if = "Option::is_none", default)]
1459 pub conversation: Option<String>,
1460 #[serde(skip_serializing_if = "Option::is_none", default)]
1462 pub input: Option<Vec<ConversationItem>>,
1463 #[serde(skip_serializing_if = "Option::is_none", default)]
1465 pub instructions: Option<String>,
1466 #[serde(skip_serializing_if = "Option::is_none", default)]
1468 pub max_output_tokens: Option<String>,
1469 #[serde(skip_serializing_if = "Option::is_none", default)]
1471 pub metadata: Option<serde_json::Value>,
1472 #[serde(skip_serializing_if = "Option::is_none", default)]
1474 pub output_modalities: Option<Vec<serde_json::Value>>,
1475 #[serde(skip_serializing_if = "Option::is_none", default)]
1477 pub prompt: Option<serde_json::Value>,
1478 #[serde(skip_serializing_if = "Option::is_none", default)]
1480 pub tool_choice: Option<ToolChoice>,
1481 #[serde(skip_serializing_if = "Option::is_none", default)]
1483 pub tools: Option<Vec<RealtimeMcpTool>>,
1484}
1485
1486#[derive(Debug, Clone, Serialize, Deserialize)]
1488#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1489pub struct RealtimeResponseError {
1490 #[serde(skip_serializing_if = "Option::is_none", default)]
1492 pub code: Option<String>,
1493 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
1495 pub type_: Option<String>,
1496}
1497
1498#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1499#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1500#[non_exhaustive]
1501pub enum RealtimeResponseStatusReason {
1502 #[serde(rename = "turn_detected")]
1503 TurnDetected,
1504 #[serde(rename = "client_cancelled")]
1505 ClientCancelled,
1506 #[serde(rename = "max_output_tokens")]
1507 MaxOutputTokens,
1508 #[serde(rename = "content_filter")]
1509 ContentFilter,
1510}
1511
1512#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1513#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1514#[non_exhaustive]
1515pub enum RealtimeResponseStatusType {
1516 #[serde(rename = "completed")]
1517 Completed,
1518 #[serde(rename = "cancelled")]
1519 Cancelled,
1520 #[serde(rename = "incomplete")]
1521 Incomplete,
1522 #[serde(rename = "failed")]
1523 Failed,
1524}
1525
1526#[derive(Debug, Clone, Serialize, Deserialize)]
1528#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1529pub struct RealtimeResponseStatus {
1530 #[serde(skip_serializing_if = "Option::is_none", default)]
1532 pub error: Option<Error>,
1533 #[serde(skip_serializing_if = "Option::is_none", default)]
1535 pub reason: Option<RealtimeResponseStatusReason>,
1536 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
1538 pub type_: Option<RealtimeResponseStatusType>,
1539}
1540
1541#[derive(Debug, Clone, Serialize, Deserialize)]
1543#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1544pub struct RealtimeResponseUsage {
1545 #[serde(skip_serializing_if = "Option::is_none", default)]
1547 pub input_token_details: Option<RealtimeResponseUsageInputTokenDetails>,
1548 #[serde(skip_serializing_if = "Option::is_none", default)]
1550 pub input_tokens: Option<i64>,
1551 #[serde(skip_serializing_if = "Option::is_none", default)]
1553 pub output_token_details: Option<RealtimeResponseUsageOutputTokenDetails>,
1554 #[serde(skip_serializing_if = "Option::is_none", default)]
1556 pub output_tokens: Option<i64>,
1557 #[serde(skip_serializing_if = "Option::is_none", default)]
1559 pub total_tokens: Option<i64>,
1560}
1561
1562#[derive(Debug, Clone, Serialize, Deserialize)]
1564#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1565pub struct CachedTokensDetails {
1566 #[serde(skip_serializing_if = "Option::is_none", default)]
1568 pub audio_tokens: Option<i64>,
1569 #[serde(skip_serializing_if = "Option::is_none", default)]
1571 pub image_tokens: Option<i64>,
1572 #[serde(skip_serializing_if = "Option::is_none", default)]
1574 pub text_tokens: Option<i64>,
1575}
1576
1577#[derive(Debug, Clone, Serialize, Deserialize)]
1579#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1580pub struct RealtimeResponseUsageInputTokenDetails {
1581 #[serde(skip_serializing_if = "Option::is_none", default)]
1583 pub audio_tokens: Option<i64>,
1584 #[serde(skip_serializing_if = "Option::is_none", default)]
1586 pub cached_tokens: Option<i64>,
1587 #[serde(skip_serializing_if = "Option::is_none", default)]
1589 pub cached_tokens_details: Option<CachedTokensDetails>,
1590 #[serde(skip_serializing_if = "Option::is_none", default)]
1592 pub image_tokens: Option<i64>,
1593 #[serde(skip_serializing_if = "Option::is_none", default)]
1595 pub text_tokens: Option<i64>,
1596}
1597
1598#[derive(Debug, Clone, Serialize, Deserialize)]
1600#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1601pub struct RealtimeResponseUsageOutputTokenDetails {
1602 #[serde(skip_serializing_if = "Option::is_none", default)]
1604 pub audio_tokens: Option<i64>,
1605 #[serde(skip_serializing_if = "Option::is_none", default)]
1607 pub text_tokens: Option<i64>,
1608}
1609
1610#[derive(Debug, Clone, Serialize, Deserialize)]
1612#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1613pub struct ConversationItemRetrieved {
1614 pub event_id: String,
1616 pub item: ConversationItem,
1618 #[serde(rename = "type")]
1620 pub type_: String,
1621}
1622
1623#[derive(Debug, Clone, Serialize, Deserialize)]
1625#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1626pub struct OutputAudioBufferStarted {
1627 pub event_id: String,
1629 pub response_id: String,
1631 #[serde(rename = "type")]
1633 pub type_: String,
1634}
1635
1636#[derive(Debug, Clone, Serialize, Deserialize)]
1638#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1639pub struct OutputAudioBufferStopped {
1640 pub event_id: String,
1642 pub response_id: String,
1644 #[serde(rename = "type")]
1646 pub type_: String,
1647}
1648
1649#[derive(Debug, Clone, Serialize, Deserialize)]
1651#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1652pub struct OutputAudioBufferCleared {
1653 pub event_id: String,
1655 pub response_id: String,
1657 #[serde(rename = "type")]
1659 pub type_: String,
1660}
1661
1662pub type RealtimeServerEvent = serde_json::Value;
1663
1664#[derive(Debug, Clone, Serialize, Deserialize)]
1666#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1667pub struct RealtimeSessionClientSecret {
1668 pub expires_at: i64,
1670 pub value: String,
1672}
1673
1674#[derive(Debug, Clone, Serialize, Deserialize)]
1676#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1677pub struct RealtimeSessionCreateRequest {
1678 #[serde(rename = "type")]
1680 pub type_: String,
1681 #[serde(skip_serializing_if = "Option::is_none", default)]
1683 pub audio: Option<RealtimeAudioConfig>,
1684 #[serde(skip_serializing_if = "Option::is_none", default)]
1686 pub include: Option<Vec<String>>,
1687 #[serde(skip_serializing_if = "Option::is_none", default)]
1689 pub instructions: Option<String>,
1690 #[serde(skip_serializing_if = "Option::is_none", default)]
1692 pub max_output_tokens: Option<String>,
1693 #[serde(skip_serializing_if = "Option::is_none", default)]
1695 pub model: Option<String>,
1696 #[serde(skip_serializing_if = "Option::is_none", default)]
1698 pub output_modalities: Option<Vec<serde_json::Value>>,
1699 #[serde(skip_serializing_if = "Option::is_none", default)]
1701 pub prompt: Option<serde_json::Value>,
1702 #[serde(skip_serializing_if = "Option::is_none", default)]
1704 pub tool_choice: Option<RealtimeToolChoiceConfig>,
1705 #[serde(skip_serializing_if = "Option::is_none", default)]
1707 pub tools: Option<RealtimeToolsConfig>,
1708 #[serde(skip_serializing_if = "Option::is_none", default)]
1710 pub tracing: Option<RealtimeTracingConfig>,
1711 #[serde(skip_serializing_if = "Option::is_none", default)]
1713 pub truncation: Option<RealtimeTruncation>,
1714}
1715
1716#[derive(Debug, Clone, Serialize, Deserialize)]
1718#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1719pub struct AudioInputNoiseReduction {
1720 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
1722 pub type_: Option<NoiseReductionType>,
1723}
1724
1725#[derive(Debug, Clone, Serialize, Deserialize)]
1727#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1728pub struct AudioInputTurnDetectionServerVad {
1729 #[serde(rename = "type")]
1731 pub type_: String,
1732 #[serde(skip_serializing_if = "Option::is_none", default)]
1734 pub create_response: Option<bool>,
1735 #[serde(skip_serializing_if = "Option::is_none", default)]
1737 pub idle_timeout_ms: Option<i64>,
1738 #[serde(skip_serializing_if = "Option::is_none", default)]
1740 pub interrupt_response: Option<bool>,
1741 #[serde(skip_serializing_if = "Option::is_none", default)]
1743 pub prefix_padding_ms: Option<i64>,
1744 #[serde(skip_serializing_if = "Option::is_none", default)]
1746 pub silence_duration_ms: Option<i64>,
1747 #[serde(skip_serializing_if = "Option::is_none", default)]
1749 pub threshold: Option<f64>,
1750}
1751
1752#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1753#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1754#[non_exhaustive]
1755pub enum AudioInputTurnDetectionSemanticVadEagerness {
1756 #[serde(rename = "low")]
1757 Low,
1758 #[serde(rename = "medium")]
1759 Medium,
1760 #[serde(rename = "high")]
1761 High,
1762 #[serde(rename = "auto")]
1763 Auto,
1764}
1765
1766#[derive(Debug, Clone, Serialize, Deserialize)]
1768#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1769pub struct AudioInputTurnDetectionSemanticVad {
1770 #[serde(rename = "type")]
1772 pub type_: String,
1773 #[serde(skip_serializing_if = "Option::is_none", default)]
1775 pub create_response: Option<bool>,
1776 #[serde(skip_serializing_if = "Option::is_none", default)]
1778 pub eagerness: Option<AudioInputTurnDetectionSemanticVadEagerness>,
1779 #[serde(skip_serializing_if = "Option::is_none", default)]
1781 pub interrupt_response: Option<bool>,
1782}
1783
1784pub type AudioInputTurnDetection = serde_json::Value;
1785
1786#[derive(Debug, Clone, Serialize, Deserialize)]
1787#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1788pub struct AudioInput {
1789 #[serde(skip_serializing_if = "Option::is_none", default)]
1791 pub format: Option<RealtimeAudioFormats>,
1792 #[serde(skip_serializing_if = "Option::is_none", default)]
1794 pub noise_reduction: Option<AudioInputNoiseReduction>,
1795 #[serde(skip_serializing_if = "Option::is_none", default)]
1797 pub transcription: Option<AudioTranscription>,
1798 #[serde(skip_serializing_if = "Option::is_none", default)]
1800 pub turn_detection: Option<AudioInputTurnDetection>,
1801}
1802
1803#[derive(Debug, Clone, Serialize, Deserialize)]
1805#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1806pub struct ToolMcpToolAllowedToolsMcpToolFilter {
1807 #[serde(skip_serializing_if = "Option::is_none", default)]
1809 pub read_only: Option<bool>,
1810 #[serde(skip_serializing_if = "Option::is_none", default)]
1812 pub tool_names: Option<Vec<String>>,
1813}
1814
1815pub type ToolMcpToolAllowedTools = serde_json::Value;
1816
1817#[derive(Debug, Clone, Serialize, Deserialize)]
1819#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1820pub struct ToolMcpToolRequireApprovalMcpToolApprovalFilterAlways {
1821 #[serde(skip_serializing_if = "Option::is_none", default)]
1823 pub read_only: Option<bool>,
1824 #[serde(skip_serializing_if = "Option::is_none", default)]
1826 pub tool_names: Option<Vec<String>>,
1827}
1828
1829#[derive(Debug, Clone, Serialize, Deserialize)]
1831#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1832pub struct ToolMcpToolRequireApprovalMcpToolApprovalFilterNever {
1833 #[serde(skip_serializing_if = "Option::is_none", default)]
1835 pub read_only: Option<bool>,
1836 #[serde(skip_serializing_if = "Option::is_none", default)]
1838 pub tool_names: Option<Vec<String>>,
1839}
1840
1841#[derive(Debug, Clone, Serialize, Deserialize)]
1843#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1844pub struct ToolMcpToolRequireApprovalMcpToolApprovalFilter {
1845 #[serde(skip_serializing_if = "Option::is_none", default)]
1847 pub always: Option<ToolMcpToolRequireApprovalMcpToolApprovalFilterAlways>,
1848 #[serde(skip_serializing_if = "Option::is_none", default)]
1850 pub never: Option<ToolMcpToolRequireApprovalMcpToolApprovalFilterNever>,
1851}
1852
1853#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1854#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1855#[non_exhaustive]
1856pub enum ToolMcpToolRequireApproval {
1857 Always,
1858 Never,
1859}
1860
1861#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1862#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1863#[non_exhaustive]
1864pub enum ToolMcpToolConnectorId {
1865 #[serde(rename = "connector_dropbox")]
1866 ConnectorDropbox,
1867 #[serde(rename = "connector_gmail")]
1868 ConnectorGmail,
1869 #[serde(rename = "connector_googlecalendar")]
1870 ConnectorGooglecalendar,
1871 #[serde(rename = "connector_googledrive")]
1872 ConnectorGoogledrive,
1873 #[serde(rename = "connector_microsoftteams")]
1874 ConnectorMicrosoftteams,
1875 #[serde(rename = "connector_outlookcalendar")]
1876 ConnectorOutlookcalendar,
1877 #[serde(rename = "connector_outlookemail")]
1878 ConnectorOutlookemail,
1879 #[serde(rename = "connector_sharepoint")]
1880 ConnectorSharepoint,
1881}
1882
1883#[derive(Debug, Clone, Serialize, Deserialize)]
1885#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1886pub struct ToolMcpTool {
1887 pub server_label: String,
1889 #[serde(rename = "type")]
1891 pub type_: String,
1892 #[serde(skip_serializing_if = "Option::is_none", default)]
1894 pub allowed_tools: Option<ToolMcpToolAllowedTools>,
1895 #[serde(skip_serializing_if = "Option::is_none", default)]
1897 pub authorization: Option<String>,
1898 #[serde(skip_serializing_if = "Option::is_none", default)]
1900 pub connector_id: Option<ToolMcpToolConnectorId>,
1901 #[serde(skip_serializing_if = "Option::is_none", default)]
1903 pub defer_loading: Option<bool>,
1904 #[serde(skip_serializing_if = "Option::is_none", default)]
1906 pub headers: Option<std::collections::HashMap<String, String>>,
1907 #[serde(skip_serializing_if = "Option::is_none", default)]
1909 pub require_approval: Option<ToolMcpToolRequireApproval>,
1910 #[serde(skip_serializing_if = "Option::is_none", default)]
1912 pub server_description: Option<String>,
1913 #[serde(skip_serializing_if = "Option::is_none", default)]
1915 pub server_url: Option<String>,
1916}
1917
1918#[derive(Debug, Clone, Serialize, Deserialize)]
1920#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1921pub struct TracingTracingConfiguration {
1922 #[serde(skip_serializing_if = "Option::is_none", default)]
1924 pub group_id: Option<String>,
1925 #[serde(skip_serializing_if = "Option::is_none", default)]
1927 pub metadata: Option<serde_json::Value>,
1928 #[serde(skip_serializing_if = "Option::is_none", default)]
1930 pub workflow_name: Option<String>,
1931}
1932
1933#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
1934#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1935#[non_exhaustive]
1936pub enum Tracing {
1937 Auto,
1938}
1939
1940#[derive(Debug, Clone, Serialize, Deserialize)]
1942#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1943pub struct RealtimeSessionCreateResponse {
1944 pub client_secret: RealtimeSessionClientSecret,
1946 #[serde(rename = "type")]
1948 pub type_: String,
1949 #[serde(skip_serializing_if = "Option::is_none", default)]
1951 pub audio: Option<Audio>,
1952 #[serde(skip_serializing_if = "Option::is_none", default)]
1954 pub include: Option<Vec<String>>,
1955 #[serde(skip_serializing_if = "Option::is_none", default)]
1957 pub instructions: Option<String>,
1958 #[serde(skip_serializing_if = "Option::is_none", default)]
1960 pub max_output_tokens: Option<String>,
1961 #[serde(skip_serializing_if = "Option::is_none", default)]
1963 pub model: Option<String>,
1964 #[serde(skip_serializing_if = "Option::is_none", default)]
1966 pub output_modalities: Option<Vec<serde_json::Value>>,
1967 #[serde(skip_serializing_if = "Option::is_none", default)]
1969 pub prompt: Option<serde_json::Value>,
1970 #[serde(skip_serializing_if = "Option::is_none", default)]
1972 pub tool_choice: Option<ToolChoice>,
1973 #[serde(skip_serializing_if = "Option::is_none", default)]
1975 pub tools: Option<Vec<RealtimeMcpTool>>,
1976 #[serde(skip_serializing_if = "Option::is_none", default)]
1978 pub tracing: Option<Tracing>,
1979 #[serde(skip_serializing_if = "Option::is_none", default)]
1981 pub truncation: Option<RealtimeTruncation>,
1982}
1983
1984pub type RealtimeToolChoiceConfig = serde_json::Value;
1985
1986pub type RealtimeToolsConfig = Vec<RealtimeToolsConfigUnion>;
1987
1988#[derive(Debug, Clone, Serialize, Deserialize)]
1990#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
1991pub struct McpAllowedToolsMcpToolFilter {
1992 #[serde(skip_serializing_if = "Option::is_none", default)]
1994 pub read_only: Option<bool>,
1995 #[serde(skip_serializing_if = "Option::is_none", default)]
1997 pub tool_names: Option<Vec<String>>,
1998}
1999
2000pub type McpAllowedTools = serde_json::Value;
2001
2002#[derive(Debug, Clone, Serialize, Deserialize)]
2004#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2005pub struct McpRequireApprovalMcpToolApprovalFilterAlways {
2006 #[serde(skip_serializing_if = "Option::is_none", default)]
2008 pub read_only: Option<bool>,
2009 #[serde(skip_serializing_if = "Option::is_none", default)]
2011 pub tool_names: Option<Vec<String>>,
2012}
2013
2014#[derive(Debug, Clone, Serialize, Deserialize)]
2016#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2017pub struct McpRequireApprovalMcpToolApprovalFilterNever {
2018 #[serde(skip_serializing_if = "Option::is_none", default)]
2020 pub read_only: Option<bool>,
2021 #[serde(skip_serializing_if = "Option::is_none", default)]
2023 pub tool_names: Option<Vec<String>>,
2024}
2025
2026#[derive(Debug, Clone, Serialize, Deserialize)]
2028#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2029pub struct McpRequireApprovalMcpToolApprovalFilter {
2030 #[serde(skip_serializing_if = "Option::is_none", default)]
2032 pub always: Option<McpRequireApprovalMcpToolApprovalFilterAlways>,
2033 #[serde(skip_serializing_if = "Option::is_none", default)]
2035 pub never: Option<McpRequireApprovalMcpToolApprovalFilterNever>,
2036}
2037
2038#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2039#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2040#[non_exhaustive]
2041pub enum McpRequireApproval {
2042 Always,
2043 Never,
2044}
2045
2046#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2047#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2048#[non_exhaustive]
2049pub enum McpConnectorId {
2050 #[serde(rename = "connector_dropbox")]
2051 ConnectorDropbox,
2052 #[serde(rename = "connector_gmail")]
2053 ConnectorGmail,
2054 #[serde(rename = "connector_googlecalendar")]
2055 ConnectorGooglecalendar,
2056 #[serde(rename = "connector_googledrive")]
2057 ConnectorGoogledrive,
2058 #[serde(rename = "connector_microsoftteams")]
2059 ConnectorMicrosoftteams,
2060 #[serde(rename = "connector_outlookcalendar")]
2061 ConnectorOutlookcalendar,
2062 #[serde(rename = "connector_outlookemail")]
2063 ConnectorOutlookemail,
2064 #[serde(rename = "connector_sharepoint")]
2065 ConnectorSharepoint,
2066}
2067
2068#[derive(Debug, Clone, Serialize, Deserialize)]
2070#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2071pub struct Mcp {
2072 pub server_label: String,
2074 #[serde(rename = "type")]
2076 pub type_: String,
2077 #[serde(skip_serializing_if = "Option::is_none", default)]
2079 pub allowed_tools: Option<McpAllowedTools>,
2080 #[serde(skip_serializing_if = "Option::is_none", default)]
2082 pub authorization: Option<String>,
2083 #[serde(skip_serializing_if = "Option::is_none", default)]
2085 pub connector_id: Option<McpConnectorId>,
2086 #[serde(skip_serializing_if = "Option::is_none", default)]
2088 pub defer_loading: Option<bool>,
2089 #[serde(skip_serializing_if = "Option::is_none", default)]
2091 pub headers: Option<std::collections::HashMap<String, String>>,
2092 #[serde(skip_serializing_if = "Option::is_none", default)]
2094 pub require_approval: Option<McpRequireApproval>,
2095 #[serde(skip_serializing_if = "Option::is_none", default)]
2097 pub server_description: Option<String>,
2098 #[serde(skip_serializing_if = "Option::is_none", default)]
2100 pub server_url: Option<String>,
2101}
2102
2103pub type RealtimeToolsConfigUnion = serde_json::Value;
2104
2105#[derive(Debug, Clone, Serialize, Deserialize)]
2107#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2108pub struct TracingConfiguration {
2109 #[serde(skip_serializing_if = "Option::is_none", default)]
2111 pub group_id: Option<String>,
2112 #[serde(skip_serializing_if = "Option::is_none", default)]
2114 pub metadata: Option<serde_json::Value>,
2115 #[serde(skip_serializing_if = "Option::is_none", default)]
2117 pub workflow_name: Option<String>,
2118}
2119
2120#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2121#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2122#[non_exhaustive]
2123pub enum RealtimeTracingConfig {
2124 Auto,
2125}
2126
2127#[derive(Debug, Clone, Serialize, Deserialize)]
2129#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2130pub struct RealtimeTranscriptionSessionAudio {
2131 #[serde(skip_serializing_if = "Option::is_none", default)]
2132 pub input: Option<RealtimeTranscriptionSessionAudioInput>,
2133}
2134
2135#[derive(Debug, Clone, Serialize, Deserialize)]
2136#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2137pub struct RealtimeTranscriptionSessionAudioInput {
2138 #[serde(skip_serializing_if = "Option::is_none", default)]
2140 pub format: Option<RealtimeAudioFormats>,
2141 #[serde(skip_serializing_if = "Option::is_none", default)]
2143 pub noise_reduction: Option<NoiseReduction>,
2144 #[serde(skip_serializing_if = "Option::is_none", default)]
2146 pub transcription: Option<AudioTranscription>,
2147 #[serde(skip_serializing_if = "Option::is_none", default)]
2149 pub turn_detection: Option<RealtimeTranscriptionSessionAudioInputTurnDetection>,
2150}
2151
2152pub type RealtimeTranscriptionSessionAudioInputTurnDetection = serde_json::Value;
2153
2154#[derive(Debug, Clone, Serialize, Deserialize)]
2156#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2157pub struct RealtimeTranscriptionSessionCreateRequest {
2158 #[serde(rename = "type")]
2160 pub type_: String,
2161 #[serde(skip_serializing_if = "Option::is_none", default)]
2163 pub audio: Option<RealtimeTranscriptionSessionAudio>,
2164 #[serde(skip_serializing_if = "Option::is_none", default)]
2166 pub include: Option<Vec<String>>,
2167}
2168
2169#[derive(Debug, Clone, Serialize, Deserialize)]
2171#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2172pub struct RealtimeTranscriptionSessionCreateResponse {
2173 pub id: String,
2175 pub object: String,
2177 #[serde(rename = "type")]
2179 pub type_: String,
2180 #[serde(skip_serializing_if = "Option::is_none", default)]
2182 pub audio: Option<Audio>,
2183 #[serde(skip_serializing_if = "Option::is_none", default)]
2185 pub expires_at: Option<i64>,
2186 #[serde(skip_serializing_if = "Option::is_none", default)]
2188 pub include: Option<Vec<String>>,
2189}
2190
2191#[derive(Debug, Clone, Serialize, Deserialize)]
2193#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2194pub struct RealtimeTranscriptionSessionTurnDetection {
2195 #[serde(skip_serializing_if = "Option::is_none", default)]
2197 pub prefix_padding_ms: Option<i64>,
2198 #[serde(skip_serializing_if = "Option::is_none", default)]
2200 pub silence_duration_ms: Option<i64>,
2201 #[serde(skip_serializing_if = "Option::is_none", default)]
2203 pub threshold: Option<f64>,
2204 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
2206 pub type_: Option<String>,
2207}
2208
2209#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2210#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2211#[non_exhaustive]
2212pub enum RealtimeTruncation {
2213 Auto,
2214 Disabled,
2215}
2216
2217#[derive(Debug, Clone, Serialize, Deserialize)]
2219#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2220pub struct TokenLimits {
2221 #[serde(skip_serializing_if = "Option::is_none", default)]
2223 pub post_instructions: Option<i64>,
2224}
2225
2226#[derive(Debug, Clone, Serialize, Deserialize)]
2228#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2229pub struct RealtimeTruncationRetentionRatio {
2230 pub retention_ratio: f64,
2232 #[serde(rename = "type")]
2234 pub type_: String,
2235 #[serde(skip_serializing_if = "Option::is_none", default)]
2237 pub token_limits: Option<TokenLimits>,
2238}
2239
2240#[derive(Debug, Clone, Serialize, Deserialize)]
2242#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2243pub struct ResponseAudioDeltaEvent {
2244 pub content_index: i64,
2246 pub delta: String,
2248 pub event_id: String,
2250 pub item_id: String,
2252 pub output_index: i64,
2254 pub response_id: String,
2256 #[serde(rename = "type")]
2258 pub type_: String,
2259}
2260
2261#[derive(Debug, Clone, Serialize, Deserialize)]
2263#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2264pub struct ResponseAudioDoneEvent {
2265 pub content_index: i64,
2267 pub event_id: String,
2269 pub item_id: String,
2271 pub output_index: i64,
2273 pub response_id: String,
2275 #[serde(rename = "type")]
2277 pub type_: String,
2278}
2279
2280#[derive(Debug, Clone, Serialize, Deserialize)]
2282#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2283pub struct ResponseAudioTranscriptDeltaEvent {
2284 pub content_index: i64,
2286 pub delta: String,
2288 pub event_id: String,
2290 pub item_id: String,
2292 pub output_index: i64,
2294 pub response_id: String,
2296 #[serde(rename = "type")]
2298 pub type_: String,
2299}
2300
2301#[derive(Debug, Clone, Serialize, Deserialize)]
2303#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2304pub struct ResponseAudioTranscriptDoneEvent {
2305 pub content_index: i64,
2307 pub event_id: String,
2309 pub item_id: String,
2311 pub output_index: i64,
2313 pub response_id: String,
2315 pub transcript: String,
2317 #[serde(rename = "type")]
2319 pub type_: String,
2320}
2321
2322#[derive(Debug, Clone, Serialize, Deserialize)]
2324#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2325pub struct ResponseCancelEvent {
2326 #[serde(rename = "type")]
2328 pub type_: String,
2329 #[serde(skip_serializing_if = "Option::is_none", default)]
2331 pub event_id: Option<String>,
2332 #[serde(skip_serializing_if = "Option::is_none", default)]
2334 pub response_id: Option<String>,
2335}
2336
2337#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
2338#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2339#[non_exhaustive]
2340pub enum ContentPartPartType {
2341 #[serde(rename = "text")]
2342 Text,
2343 #[serde(rename = "audio")]
2344 Audio,
2345}
2346
2347#[derive(Debug, Clone, Serialize, Deserialize)]
2349#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2350pub struct ContentPartPart {
2351 #[serde(skip_serializing_if = "Option::is_none", default)]
2353 pub audio: Option<String>,
2354 #[serde(skip_serializing_if = "Option::is_none", default)]
2356 pub text: Option<String>,
2357 #[serde(skip_serializing_if = "Option::is_none", default)]
2359 pub transcript: Option<String>,
2360 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
2362 pub type_: Option<ContentPartPartType>,
2363}
2364
2365#[derive(Debug, Clone, Serialize, Deserialize)]
2367#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2368pub struct ResponseContentPartAddedEvent {
2369 pub content_index: i64,
2371 pub event_id: String,
2373 pub item_id: String,
2375 pub output_index: i64,
2377 pub part: ContentPartPart,
2379 pub response_id: String,
2381 #[serde(rename = "type")]
2383 pub type_: String,
2384}
2385
2386#[derive(Debug, Clone, Serialize, Deserialize)]
2388#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2389pub struct ResponseContentPartDoneEvent {
2390 pub content_index: i64,
2392 pub event_id: String,
2394 pub item_id: String,
2396 pub output_index: i64,
2398 pub part: ContentPartPart,
2400 pub response_id: String,
2402 #[serde(rename = "type")]
2404 pub type_: String,
2405}
2406
2407#[derive(Debug, Clone, Serialize, Deserialize)]
2409#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2410pub struct ResponseCreateEvent {
2411 #[serde(rename = "type")]
2413 pub type_: String,
2414 #[serde(skip_serializing_if = "Option::is_none", default)]
2416 pub event_id: Option<String>,
2417 #[serde(skip_serializing_if = "Option::is_none", default)]
2419 pub response: Option<RealtimeResponseCreateParams>,
2420}
2421
2422#[derive(Debug, Clone, Serialize, Deserialize)]
2424#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2425pub struct ResponseCreatedEvent {
2426 pub event_id: String,
2428 pub response: RealtimeResponse,
2430 #[serde(rename = "type")]
2432 pub type_: String,
2433}
2434
2435#[derive(Debug, Clone, Serialize, Deserialize)]
2437#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2438pub struct ResponseDoneEvent {
2439 pub event_id: String,
2441 pub response: RealtimeResponse,
2443 #[serde(rename = "type")]
2445 pub type_: String,
2446}
2447
2448#[derive(Debug, Clone, Serialize, Deserialize)]
2450#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2451pub struct ResponseFunctionCallArgumentsDeltaEvent {
2452 pub call_id: String,
2454 pub delta: String,
2456 pub event_id: String,
2458 pub item_id: String,
2460 pub output_index: i64,
2462 pub response_id: String,
2464 #[serde(rename = "type")]
2466 pub type_: String,
2467}
2468
2469#[derive(Debug, Clone, Serialize, Deserialize)]
2471#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2472pub struct ResponseFunctionCallArgumentsDoneEvent {
2473 pub arguments: String,
2475 pub call_id: String,
2477 pub event_id: String,
2479 pub item_id: String,
2481 pub name: String,
2483 pub output_index: i64,
2485 pub response_id: String,
2487 #[serde(rename = "type")]
2489 pub type_: String,
2490}
2491
2492#[derive(Debug, Clone, Serialize, Deserialize)]
2494#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2495pub struct ResponseMcpCallArgumentsDelta {
2496 pub delta: String,
2498 pub event_id: String,
2500 pub item_id: String,
2502 pub output_index: i64,
2504 pub response_id: String,
2506 #[serde(rename = "type")]
2508 pub type_: String,
2509 #[serde(skip_serializing_if = "Option::is_none", default)]
2511 pub obfuscation: Option<String>,
2512}
2513
2514#[derive(Debug, Clone, Serialize, Deserialize)]
2516#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2517pub struct ResponseMcpCallArgumentsDone {
2518 pub arguments: String,
2520 pub event_id: String,
2522 pub item_id: String,
2524 pub output_index: i64,
2526 pub response_id: String,
2528 #[serde(rename = "type")]
2530 pub type_: String,
2531}
2532
2533#[derive(Debug, Clone, Serialize, Deserialize)]
2535#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2536pub struct ResponseMcpCallCompleted {
2537 pub event_id: String,
2539 pub item_id: String,
2541 pub output_index: i64,
2543 #[serde(rename = "type")]
2545 pub type_: String,
2546}
2547
2548#[derive(Debug, Clone, Serialize, Deserialize)]
2550#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2551pub struct ResponseMcpCallFailed {
2552 pub event_id: String,
2554 pub item_id: String,
2556 pub output_index: i64,
2558 #[serde(rename = "type")]
2560 pub type_: String,
2561}
2562
2563#[derive(Debug, Clone, Serialize, Deserialize)]
2565#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2566pub struct ResponseMcpCallInProgress {
2567 pub event_id: String,
2569 pub item_id: String,
2571 pub output_index: i64,
2573 #[serde(rename = "type")]
2575 pub type_: String,
2576}
2577
2578#[derive(Debug, Clone, Serialize, Deserialize)]
2580#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2581pub struct ResponseOutputItemAddedEvent {
2582 pub event_id: String,
2584 pub item: ConversationItem,
2586 pub output_index: i64,
2588 pub response_id: String,
2590 #[serde(rename = "type")]
2592 pub type_: String,
2593}
2594
2595#[derive(Debug, Clone, Serialize, Deserialize)]
2597#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2598pub struct ResponseOutputItemDoneEvent {
2599 pub event_id: String,
2601 pub item: ConversationItem,
2603 pub output_index: i64,
2605 pub response_id: String,
2607 #[serde(rename = "type")]
2609 pub type_: String,
2610}
2611
2612#[derive(Debug, Clone, Serialize, Deserialize)]
2614#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2615pub struct ResponseTextDeltaEvent {
2616 pub content_index: i64,
2618 pub delta: String,
2620 pub event_id: String,
2622 pub item_id: String,
2624 pub output_index: i64,
2626 pub response_id: String,
2628 #[serde(rename = "type")]
2630 pub type_: String,
2631}
2632
2633#[derive(Debug, Clone, Serialize, Deserialize)]
2635#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2636pub struct ResponseTextDoneEvent {
2637 pub content_index: i64,
2639 pub event_id: String,
2641 pub item_id: String,
2643 pub output_index: i64,
2645 pub response_id: String,
2647 pub text: String,
2649 #[serde(rename = "type")]
2651 pub type_: String,
2652}
2653
2654#[derive(Debug, Clone, Serialize, Deserialize)]
2656#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2657pub struct SessionCreatedEvent {
2658 pub event_id: String,
2660 pub session: Session,
2662 #[serde(rename = "type")]
2664 pub type_: String,
2665}
2666
2667#[derive(Debug, Clone, Serialize, Deserialize)]
2669#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2670pub struct SessionUpdateEvent {
2671 pub session: Session,
2673 #[serde(rename = "type")]
2675 pub type_: String,
2676 #[serde(skip_serializing_if = "Option::is_none", default)]
2678 pub event_id: Option<String>,
2679}
2680
2681#[derive(Debug, Clone, Serialize, Deserialize)]
2683#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
2684pub struct SessionUpdatedEvent {
2685 pub event_id: String,
2687 pub session: Session,
2689 #[serde(rename = "type")]
2691 pub type_: String,
2692}