1use crate::v1::types::Tools;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use std::collections::BTreeMap;
5
6#[derive(Debug, Serialize, Deserialize, Clone)]
7pub struct CreateResponseRequest {
8 #[serde(skip_serializing_if = "Option::is_none")]
10 pub background: Option<bool>,
11
12 #[serde(skip_serializing_if = "Option::is_none")]
14 pub conversation: Option<Value>,
15
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub include: Option<Vec<String>>,
19
20 #[serde(skip_serializing_if = "Option::is_none")]
22 pub input: Option<Value>,
23
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub instructions: Option<String>,
27
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub max_output_tokens: Option<u32>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub max_tool_calls: Option<u32>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub metadata: Option<BTreeMap<String, String>>,
39
40 #[serde(skip_serializing_if = "Option::is_none")]
42 pub model: Option<String>,
43
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub parallel_tool_calls: Option<bool>,
47
48 #[serde(skip_serializing_if = "Option::is_none")]
50 pub previous_response_id: Option<String>,
51
52 #[serde(skip_serializing_if = "Option::is_none")]
54 pub prompt: Option<Value>,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub prompt_cache_key: Option<String>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub reasoning: Option<Value>,
63
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub safety_identifier: Option<String>,
67
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub service_tier: Option<String>,
71
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub store: Option<bool>,
75
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub stream: Option<bool>,
79
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub stream_options: Option<Value>,
83
84 #[serde(skip_serializing_if = "Option::is_none")]
86 pub temperature: Option<f32>,
87
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub text: Option<Value>,
91
92 #[serde(skip_serializing_if = "Option::is_none")]
94 pub tool_choice: Option<Value>,
95
96 #[serde(skip_serializing_if = "Option::is_none")]
98 pub tools: Option<Vec<Tools>>,
99
100 #[serde(skip_serializing_if = "Option::is_none")]
102 pub top_logprobs: Option<u32>,
103
104 #[serde(skip_serializing_if = "Option::is_none")]
106 pub top_p: Option<f32>,
107
108 #[serde(skip_serializing_if = "Option::is_none")]
110 pub truncation: Option<String>,
111
112 #[serde(skip_serializing_if = "Option::is_none")]
114 pub user: Option<String>,
115
116 #[serde(flatten)]
118 pub extra: BTreeMap<String, Value>,
119}
120
121impl CreateResponseRequest {
122 pub fn new() -> Self {
123 Self {
124 background: None,
125 conversation: None,
126 include: None,
127 input: None,
128 instructions: None,
129 max_output_tokens: None,
130 max_tool_calls: None,
131 metadata: None,
132 model: None,
133 parallel_tool_calls: None,
134 previous_response_id: None,
135 prompt: None,
136 prompt_cache_key: None,
137 reasoning: None,
138 safety_identifier: None,
139 service_tier: None,
140 store: None,
141 stream: None,
142 stream_options: None,
143 temperature: None,
144 text: None,
145 tool_choice: None,
146 tools: None,
147 top_logprobs: None,
148 top_p: None,
149 truncation: None,
150 user: None,
151 extra: BTreeMap::new(),
152 }
153 }
154}
155
156impl Default for CreateResponseRequest {
157 fn default() -> Self {
158 Self::new()
159 }
160}
161
162#[derive(Debug, Serialize, Deserialize, Clone)]
163pub struct ResponseObject {
164 pub id: String,
165 pub object: String,
166
167 #[serde(skip_serializing_if = "Option::is_none")]
169 pub created_at: Option<u64>,
170 #[serde(skip_serializing_if = "Option::is_none")]
171 pub model: Option<String>,
172 #[serde(skip_serializing_if = "Option::is_none")]
173 pub status: Option<String>,
174
175 #[serde(skip_serializing_if = "Option::is_none")]
177 pub output: Option<Value>,
178 #[serde(skip_serializing_if = "Option::is_none")]
179 pub output_text: Option<String>,
180 #[serde(skip_serializing_if = "Option::is_none")]
181 pub output_audio: Option<Value>,
182
183 #[serde(skip_serializing_if = "Option::is_none")]
185 pub stop_reason: Option<String>,
186 #[serde(skip_serializing_if = "Option::is_none")]
187 pub refusal: Option<String>,
188
189 #[serde(skip_serializing_if = "Option::is_none")]
191 pub tool_calls: Option<Value>,
192
193 #[serde(skip_serializing_if = "Option::is_none")]
195 pub metadata: Option<Value>,
196 #[serde(skip_serializing_if = "Option::is_none")]
197 pub usage: Option<Value>,
198 #[serde(skip_serializing_if = "Option::is_none")]
199 pub system_fingerprint: Option<String>,
200 #[serde(skip_serializing_if = "Option::is_none")]
201 pub service_tier: Option<String>,
202
203 #[serde(skip_serializing_if = "Option::is_none")]
205 pub status_details: Option<Value>,
206 #[serde(skip_serializing_if = "Option::is_none")]
207 pub incomplete_details: Option<Value>,
208 #[serde(skip_serializing_if = "Option::is_none")]
209 pub error: Option<Value>,
210
211 #[serde(flatten)]
213 pub extra: BTreeMap<String, Value>,
214}
215
216#[derive(Debug, Serialize, Deserialize, Clone)]
217pub struct ListResponses {
218 pub object: String,
219 pub data: Vec<ResponseObject>,
220 #[serde(skip_serializing_if = "Option::is_none")]
221 pub first_id: Option<String>,
222 #[serde(skip_serializing_if = "Option::is_none")]
223 pub last_id: Option<String>,
224 pub has_more: bool,
225}
226
227#[derive(Debug, Serialize, Deserialize, Clone)]
229pub struct CountTokensRequest {
230 #[serde(skip_serializing_if = "Option::is_none")]
232 pub conversation: Option<Value>,
233
234 #[serde(skip_serializing_if = "Option::is_none")]
236 pub input: Option<Value>,
237
238 #[serde(skip_serializing_if = "Option::is_none")]
240 pub instructions: Option<String>,
241
242 #[serde(skip_serializing_if = "Option::is_none")]
244 pub model: Option<String>,
245
246 #[serde(skip_serializing_if = "Option::is_none")]
248 pub parallel_tool_calls: Option<bool>,
249
250 #[serde(skip_serializing_if = "Option::is_none")]
252 pub previous_response_id: Option<String>,
253
254 #[serde(skip_serializing_if = "Option::is_none")]
256 pub reasoning: Option<Value>,
257
258 #[serde(skip_serializing_if = "Option::is_none")]
260 pub text: Option<Value>,
261
262 #[serde(skip_serializing_if = "Option::is_none")]
264 pub tool_choice: Option<Value>,
265
266 #[serde(skip_serializing_if = "Option::is_none")]
268 pub tools: Option<Vec<Tools>>,
269
270 #[serde(skip_serializing_if = "Option::is_none")]
272 pub truncation: Option<String>,
273
274 #[serde(flatten)]
276 pub extra: BTreeMap<String, Value>,
277}
278
279impl CountTokensRequest {
280 pub fn new() -> Self {
281 Self {
282 conversation: None,
283 input: None,
284 instructions: None,
285 model: None,
286 parallel_tool_calls: None,
287 previous_response_id: None,
288 reasoning: None,
289 text: None,
290 tool_choice: None,
291 tools: None,
292 truncation: None,
293 extra: BTreeMap::new(),
294 }
295 }
296}
297
298impl Default for CountTokensRequest {
299 fn default() -> Self {
300 Self::new()
301 }
302}
303
304#[derive(Debug, Serialize, Deserialize, Clone)]
305pub struct CountTokensResponse {
306 #[serde(skip_serializing_if = "Option::is_none")]
307 pub object: Option<String>,
308 #[serde(skip_serializing_if = "Option::is_none")]
309 pub input_tokens: Option<u32>,
310 #[serde(flatten)]
311 pub extra: BTreeMap<String, Value>,
312}