openai_api_rs/v1/responses/
responses.rs1use crate::v1::types::Tools;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use std::collections::BTreeMap;
5
6#[derive(Debug, Serialize, Deserialize, Clone)]
9pub struct CreateResponseRequest {
10 #[serde(skip_serializing_if = "Option::is_none")]
12 pub background: Option<bool>,
13
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub conversation: Option<Value>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub include: Option<Vec<String>>,
21
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub input: Option<Value>,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub instructions: Option<String>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub max_output_tokens: Option<u32>,
33
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub max_tool_calls: Option<u32>,
37
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub metadata: Option<BTreeMap<String, String>>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub model: Option<String>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub parallel_tool_calls: Option<bool>,
49
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub previous_response_id: Option<String>,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub prompt: Option<Value>,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub prompt_cache_key: Option<String>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub reasoning: Option<Value>,
65
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub safety_identifier: Option<String>,
69
70 #[serde(skip_serializing_if = "Option::is_none")]
72 pub service_tier: Option<String>,
73
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub store: Option<bool>,
77
78 #[serde(skip_serializing_if = "Option::is_none")]
80 pub stream: Option<bool>,
81
82 #[serde(skip_serializing_if = "Option::is_none")]
84 pub stream_options: Option<Value>,
85
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub temperature: Option<f32>,
89
90 #[serde(skip_serializing_if = "Option::is_none")]
92 pub text: Option<Value>,
93
94 #[serde(skip_serializing_if = "Option::is_none")]
96 pub tool_choice: Option<Value>,
97
98 #[serde(skip_serializing_if = "Option::is_none")]
100 pub tools: Option<Vec<Tools>>,
101
102 #[serde(skip_serializing_if = "Option::is_none")]
104 pub top_logprobs: Option<u32>,
105
106 #[serde(skip_serializing_if = "Option::is_none")]
108 pub top_p: Option<f32>,
109
110 #[serde(skip_serializing_if = "Option::is_none")]
112 pub truncation: Option<String>,
113
114 #[serde(skip_serializing_if = "Option::is_none")]
116 pub user: Option<String>,
117
118 #[serde(flatten)]
120 pub extra: BTreeMap<String, Value>,
121}
122
123impl CreateResponseRequest {
124 pub fn new() -> Self {
125 Self {
126 background: None,
127 conversation: None,
128 include: None,
129 input: None,
130 instructions: None,
131 max_output_tokens: None,
132 max_tool_calls: None,
133 metadata: None,
134 model: None,
135 parallel_tool_calls: None,
136 previous_response_id: None,
137 prompt: None,
138 prompt_cache_key: None,
139 reasoning: None,
140 safety_identifier: None,
141 service_tier: None,
142 store: None,
143 stream: None,
144 stream_options: None,
145 temperature: None,
146 text: None,
147 tool_choice: None,
148 tools: None,
149 top_logprobs: None,
150 top_p: None,
151 truncation: None,
152 user: None,
153 extra: BTreeMap::new(),
154 }
155 }
156}
157
158impl Default for CreateResponseRequest {
159 fn default() -> Self {
160 Self::new()
161 }
162}
163
164#[derive(Debug, Serialize, Deserialize, Clone)]
165pub struct ResponseObject {
166 pub id: String,
167 pub object: String,
168
169 #[serde(skip_serializing_if = "Option::is_none")]
171 pub created_at: Option<u64>,
172 #[serde(skip_serializing_if = "Option::is_none")]
173 pub model: Option<String>,
174 #[serde(skip_serializing_if = "Option::is_none")]
175 pub status: Option<String>,
176
177 #[serde(skip_serializing_if = "Option::is_none")]
179 pub output: Option<Value>,
180 #[serde(skip_serializing_if = "Option::is_none")]
181 pub output_text: Option<String>,
182 #[serde(skip_serializing_if = "Option::is_none")]
183 pub output_audio: Option<Value>,
184
185 #[serde(skip_serializing_if = "Option::is_none")]
187 pub stop_reason: Option<String>,
188 #[serde(skip_serializing_if = "Option::is_none")]
189 pub refusal: Option<String>,
190
191 #[serde(skip_serializing_if = "Option::is_none")]
193 pub tool_calls: Option<Value>,
194
195 #[serde(skip_serializing_if = "Option::is_none")]
197 pub metadata: Option<Value>,
198 #[serde(skip_serializing_if = "Option::is_none")]
199 pub usage: Option<Value>,
200 #[serde(skip_serializing_if = "Option::is_none")]
201 pub system_fingerprint: Option<String>,
202 #[serde(skip_serializing_if = "Option::is_none")]
203 pub service_tier: Option<String>,
204
205 #[serde(skip_serializing_if = "Option::is_none")]
207 pub status_details: Option<Value>,
208 #[serde(skip_serializing_if = "Option::is_none")]
209 pub incomplete_details: Option<Value>,
210 #[serde(skip_serializing_if = "Option::is_none")]
211 pub error: Option<Value>,
212
213 #[serde(flatten)]
215 pub extra: BTreeMap<String, Value>,
216}
217
218#[derive(Debug, Serialize, Deserialize, Clone)]
219pub struct ListResponses {
220 pub object: String,
221 pub data: Vec<ResponseObject>,
222 #[serde(skip_serializing_if = "Option::is_none")]
223 pub first_id: Option<String>,
224 #[serde(skip_serializing_if = "Option::is_none")]
225 pub last_id: Option<String>,
226 pub has_more: bool,
227}
228
229#[derive(Debug, Serialize, Deserialize, Clone)]
231pub struct CountTokensRequest {
232 #[serde(skip_serializing_if = "Option::is_none")]
234 pub conversation: Option<Value>,
235
236 #[serde(skip_serializing_if = "Option::is_none")]
238 pub input: Option<Value>,
239
240 #[serde(skip_serializing_if = "Option::is_none")]
242 pub instructions: Option<String>,
243
244 #[serde(skip_serializing_if = "Option::is_none")]
246 pub model: Option<String>,
247
248 #[serde(skip_serializing_if = "Option::is_none")]
250 pub parallel_tool_calls: Option<bool>,
251
252 #[serde(skip_serializing_if = "Option::is_none")]
254 pub previous_response_id: Option<String>,
255
256 #[serde(skip_serializing_if = "Option::is_none")]
258 pub reasoning: Option<Value>,
259
260 #[serde(skip_serializing_if = "Option::is_none")]
262 pub text: Option<Value>,
263
264 #[serde(skip_serializing_if = "Option::is_none")]
266 pub tool_choice: Option<Value>,
267
268 #[serde(skip_serializing_if = "Option::is_none")]
270 pub tools: Option<Vec<Tools>>,
271
272 #[serde(skip_serializing_if = "Option::is_none")]
274 pub truncation: Option<String>,
275
276 #[serde(flatten)]
278 pub extra: BTreeMap<String, Value>,
279}
280
281impl CountTokensRequest {
282 pub fn new() -> Self {
283 Self {
284 conversation: None,
285 input: None,
286 instructions: None,
287 model: None,
288 parallel_tool_calls: None,
289 previous_response_id: None,
290 reasoning: None,
291 text: None,
292 tool_choice: None,
293 tools: None,
294 truncation: None,
295 extra: BTreeMap::new(),
296 }
297 }
298}
299
300impl Default for CountTokensRequest {
301 fn default() -> Self {
302 Self::new()
303 }
304}
305
306#[derive(Debug, Serialize, Deserialize, Clone)]
307pub struct CountTokensResponse {
308 #[serde(skip_serializing_if = "Option::is_none")]
309 pub object: Option<String>,
310 #[serde(skip_serializing_if = "Option::is_none")]
311 pub input_tokens: Option<u32>,
312 #[serde(flatten)]
313 pub extra: BTreeMap<String, Value>,
314}