1use super::wire::present_nullable;
6use super::{LogProbProperties, TranscriptionLanguage};
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)]
14#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15pub struct ConversationItemInputAudioTranscriptionCompletedEvent {
16 pub content_index: i64,
17 pub event_id: String,
18 pub item_id: String,
19 pub transcript: String,
20 #[serde(rename = "type")]
21 pub type_: ConversationItemInputAudioTranscriptionCompletedEventType,
22 pub usage: ConversationItemInputAudioTranscriptionCompletedEventUsage,
23 #[serde(
24 default,
25 deserialize_with = "present_nullable",
26 skip_serializing_if = "Option::is_none"
27 )]
28 pub languages: Option<Option<Vec<TranscriptionLanguage>>>,
29 #[serde(
30 default,
31 deserialize_with = "present_nullable",
32 skip_serializing_if = "Option::is_none"
33 )]
34 pub logprobs: Option<Option<Vec<LogProbProperties>>>,
35 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
36 pub rest: Rest,
37}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
41#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
42#[derive(gproxy_protocol_macros::DeclaredFields)]
43#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
44pub struct ConversationItemInputAudioTranscriptionDeltaEvent {
45 pub event_id: String,
46 pub item_id: String,
47 #[serde(rename = "type")]
48 pub type_: ConversationItemInputAudioTranscriptionDeltaEventType,
49 #[serde(
50 default,
51 deserialize_with = "present_nullable",
52 skip_serializing_if = "Option::is_none"
53 )]
54 pub content_index: Option<Option<i64>>,
55 #[serde(
56 default,
57 deserialize_with = "present_nullable",
58 skip_serializing_if = "Option::is_none"
59 )]
60 pub delta: Option<Option<String>>,
61 #[serde(
62 default,
63 deserialize_with = "present_nullable",
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub logprobs: Option<Option<Vec<LogProbProperties>>>,
67 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
68 pub rest: Rest,
69}
70
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
73#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
74#[derive(gproxy_protocol_macros::DeclaredFields)]
75#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
76pub struct ConversationItemInputAudioTranscriptionFailedEvent {
77 pub content_index: i64,
78 pub error: ConversationItemInputAudioTranscriptionFailedEventError,
79 pub event_id: String,
80 pub item_id: String,
81 #[serde(rename = "type")]
82 pub type_: ConversationItemInputAudioTranscriptionFailedEventType,
83 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
84 pub rest: Rest,
85}
86
87#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
89#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
90#[derive(gproxy_protocol_macros::DeclaredFields)]
91#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
92pub struct ConversationItemInputAudioTranscriptionSegment {
93 pub id: String,
94 pub content_index: i64,
95 pub end: serde_json::Number,
96 pub event_id: String,
97 pub item_id: String,
98 pub speaker: String,
99 pub start: serde_json::Number,
100 pub text: String,
101 #[serde(rename = "type")]
102 pub type_: ConversationItemInputAudioTranscriptionSegmentType,
103 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
104 pub rest: Rest,
105}
106
107#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
109#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
110#[serde(untagged)]
111#[derive(gproxy_protocol_macros::DeclaredFields)]
112#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
113pub enum ConversationItemInputAudioTranscriptionCompletedEventUsage {
114 ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokens(
115 ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokens,
116 ),
117 ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageDuration(
118 ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageDuration,
119 ),
120}
121
122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
124#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
125#[derive(gproxy_protocol_macros::DeclaredFields)]
126#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
127pub struct ConversationItemInputAudioTranscriptionFailedEventError {
128 #[serde(
129 default,
130 deserialize_with = "present_nullable",
131 skip_serializing_if = "Option::is_none"
132 )]
133 pub code: Option<Option<String>>,
134 #[serde(
135 default,
136 deserialize_with = "present_nullable",
137 skip_serializing_if = "Option::is_none"
138 )]
139 pub message: Option<Option<String>>,
140 #[serde(
141 default,
142 deserialize_with = "present_nullable",
143 skip_serializing_if = "Option::is_none"
144 )]
145 pub param: Option<Option<String>>,
146 #[serde(rename = "type")]
147 #[serde(
148 default,
149 deserialize_with = "present_nullable",
150 skip_serializing_if = "Option::is_none"
151 )]
152 pub type_: Option<Option<String>>,
153 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
154 pub rest: Rest,
155}
156
157#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
159#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
160#[derive(gproxy_protocol_macros::DeclaredFields)]
161#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
162pub struct ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokens {
163 pub input_tokens: i64,
164 pub output_tokens: i64,
165 pub total_tokens: i64,
166 #[serde(rename = "type")]
167 pub type_: ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokensType,
168 #[serde(default, deserialize_with = "present_nullable", skip_serializing_if = "Option::is_none")]
169 pub input_token_details: Option<Option<ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokensInputTokenDetails>>,
170 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
171 pub rest: Rest,
172}
173
174#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
176#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
177#[derive(gproxy_protocol_macros::DeclaredFields)]
178#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
179pub struct ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageDuration {
180 pub seconds: serde_json::Number,
181 #[serde(rename = "type")]
182 pub type_:
183 ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageDurationType,
184 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
185 pub rest: Rest,
186}
187
188#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
190#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
191#[derive(gproxy_protocol_macros::DeclaredFields)]
192#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
193pub struct ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokensInputTokenDetails
194{
195 #[serde(
196 default,
197 deserialize_with = "present_nullable",
198 skip_serializing_if = "Option::is_none"
199 )]
200 pub audio_tokens: Option<Option<i64>>,
201 #[serde(
202 default,
203 deserialize_with = "present_nullable",
204 skip_serializing_if = "Option::is_none"
205 )]
206 pub text_tokens: Option<Option<i64>>,
207 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
208 pub rest: Rest,
209}
210
211#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
212#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
213#[derive(gproxy_protocol_macros::DeclaredFields)]
214#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
215pub enum ConversationItemInputAudioTranscriptionCompletedEventType {
216 #[serde(rename = "conversation.item.input_audio_transcription.completed")]
217 ConversationItemInputAudioTranscriptionCompleted,
218}
219
220#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
221#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
222#[derive(gproxy_protocol_macros::DeclaredFields)]
223#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
224pub enum ConversationItemInputAudioTranscriptionDeltaEventType {
225 #[serde(rename = "conversation.item.input_audio_transcription.delta")]
226 ConversationItemInputAudioTranscriptionDelta,
227}
228
229#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
230#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
231#[derive(gproxy_protocol_macros::DeclaredFields)]
232#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
233pub enum ConversationItemInputAudioTranscriptionFailedEventType {
234 #[serde(rename = "conversation.item.input_audio_transcription.failed")]
235 ConversationItemInputAudioTranscriptionFailed,
236}
237
238#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
239#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
240#[derive(gproxy_protocol_macros::DeclaredFields)]
241#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
242pub enum ConversationItemInputAudioTranscriptionSegmentType {
243 #[serde(rename = "conversation.item.input_audio_transcription.segment")]
244 ConversationItemInputAudioTranscriptionSegment,
245}
246
247#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
248#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
249#[derive(gproxy_protocol_macros::DeclaredFields)]
250#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
251pub enum ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageTokensType {
252 #[serde(rename = "tokens")]
253 Tokens,
254}
255
256#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
257#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
258#[derive(gproxy_protocol_macros::DeclaredFields)]
259#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
260pub enum ConversationItemInputAudioTranscriptionCompletedEventUsageTranscriptTextUsageDurationType {
261 #[serde(rename = "duration")]
262 Duration,
263}