gproxy_protocol/wire/openai/realtime/
transcription_response.rs1use super::wire::present_nullable;
6use super::{AudioTranscription, NoiseReductionType, RealtimeAudioFormats};
7use crate::Rest;
8use serde::{Deserialize, Serialize};
9
10#[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#[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#[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#[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#[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}