Skip to main content

gproxy_protocol/wire/openai/realtime/
transcription_response.rs

1//! Native Realtime wire DTOs. Source definitions are cited on each object.
2//! Verified with Realtime.md and openai-python snapshot
3//! e12b81d3bbf644ec7045e152d69bc4b68d69cd48 (2026-09-13).
4//! https://github.com/openai/openai-python/tree/e12b81d3bbf644ec7045e152d69bc4b68d69cd48/src/openai/types/realtime
5use super::wire::present_nullable;
6use super::{AudioTranscription, NoiseReductionType, RealtimeAudioFormats};
7use crate::Rest;
8use serde::{Deserialize, Serialize};
9
10/// Source: `openai/types/realtime/realtime_transcription_session_create_response.py`, `RealtimeTranscriptionSessionCreateResponse`.
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13#[derive(gproxy_protocol_macros::DeclaredFields)]
14pub struct RealtimeTranscriptionSessionCreateResponse {
15    pub id: String,
16    pub object: String,
17    #[serde(rename = "type")]
18    pub type_: RealtimeTranscriptionSessionCreateResponseType,
19    #[serde(
20        default,
21        deserialize_with = "present_nullable",
22        skip_serializing_if = "Option::is_none"
23    )]
24    pub audio: Option<Option<RealtimeTranscriptionSessionCreateResponseAudio>>,
25    #[serde(
26        default,
27        deserialize_with = "present_nullable",
28        skip_serializing_if = "Option::is_none"
29    )]
30    pub expires_at: Option<Option<i64>>,
31    #[serde(
32        default,
33        deserialize_with = "present_nullable",
34        skip_serializing_if = "Option::is_none"
35    )]
36    pub include: Option<Option<Vec<RealtimeTranscriptionSessionCreateResponseIncludeItem>>>,
37    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
38    pub rest: Rest,
39}
40
41/// Source: `openai/types/realtime/realtime_transcription_session_create_response.py`, `Audio`.
42#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
43#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
44#[derive(gproxy_protocol_macros::DeclaredFields)]
45pub struct RealtimeTranscriptionSessionCreateResponseAudio {
46    #[serde(
47        default,
48        deserialize_with = "present_nullable",
49        skip_serializing_if = "Option::is_none"
50    )]
51    pub input: Option<Option<RealtimeTranscriptionSessionCreateResponseAudioInput>>,
52    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
53    pub rest: Rest,
54}
55
56/// Source: `openai/types/realtime/realtime_transcription_session_create_response.py`, `AudioInput`.
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
58#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
59#[derive(gproxy_protocol_macros::DeclaredFields)]
60pub struct RealtimeTranscriptionSessionCreateResponseAudioInput {
61    #[serde(
62        default,
63        deserialize_with = "present_nullable",
64        skip_serializing_if = "Option::is_none"
65    )]
66    pub format: Option<Option<RealtimeAudioFormats>>,
67    #[serde(
68        default,
69        deserialize_with = "present_nullable",
70        skip_serializing_if = "Option::is_none"
71    )]
72    pub noise_reduction:
73        Option<Option<RealtimeTranscriptionSessionCreateResponseAudioInputNoiseReduction>>,
74    #[serde(
75        default,
76        deserialize_with = "present_nullable",
77        skip_serializing_if = "Option::is_none"
78    )]
79    pub transcription: Option<Option<AudioTranscription>>,
80    #[serde(
81        default,
82        deserialize_with = "present_nullable",
83        skip_serializing_if = "Option::is_none"
84    )]
85    pub turn_detection: Option<Option<RealtimeTranscriptionSessionTurnDetection>>,
86    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
87    pub rest: Rest,
88}
89
90/// Source: `openai/types/realtime/realtime_transcription_session_create_response.py`, `AudioInputNoiseReduction`.
91#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
92#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
93#[derive(gproxy_protocol_macros::DeclaredFields)]
94pub struct RealtimeTranscriptionSessionCreateResponseAudioInputNoiseReduction {
95    #[serde(rename = "type")]
96    #[serde(
97        default,
98        deserialize_with = "present_nullable",
99        skip_serializing_if = "Option::is_none"
100    )]
101    pub type_: Option<Option<NoiseReductionType>>,
102    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
103    pub rest: Rest,
104}
105
106/// Source: `openai/types/realtime/realtime_transcription_session_turn_detection.py`, `RealtimeTranscriptionSessionTurnDetection`.
107#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
108#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
109#[derive(gproxy_protocol_macros::DeclaredFields)]
110pub struct RealtimeTranscriptionSessionTurnDetection {
111    #[serde(
112        default,
113        deserialize_with = "present_nullable",
114        skip_serializing_if = "Option::is_none"
115    )]
116    pub prefix_padding_ms: Option<Option<i64>>,
117    #[serde(
118        default,
119        deserialize_with = "present_nullable",
120        skip_serializing_if = "Option::is_none"
121    )]
122    pub silence_duration_ms: Option<Option<i64>>,
123    #[serde(
124        default,
125        deserialize_with = "present_nullable",
126        skip_serializing_if = "Option::is_none"
127    )]
128    pub threshold: Option<Option<serde_json::Number>>,
129    #[serde(rename = "type")]
130    #[serde(
131        default,
132        deserialize_with = "present_nullable",
133        skip_serializing_if = "Option::is_none"
134    )]
135    pub type_: Option<Option<String>>,
136    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
137    pub rest: Rest,
138}
139
140#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
141#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
142#[derive(gproxy_protocol_macros::DeclaredFields)]
143pub enum RealtimeTranscriptionSessionCreateResponseType {
144    #[serde(rename = "transcription")]
145    Transcription,
146}
147
148#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
149#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
150#[derive(gproxy_protocol_macros::DeclaredFields)]
151pub enum RealtimeTranscriptionSessionCreateResponseIncludeItem {
152    #[serde(rename = "item.input_audio_transcription.logprobs")]
153    ItemInputAudioTranscriptionLogprobs,
154}