1mod private
11{
12 use crate::components;
14 use crate::components::common::{ ResponseError, ResponseUsage, Metadata, Reasoning, TextResponseFormatConfigurationOptions, Includable };
16 use crate::components::input::{ InputItem, ListedInputItem };
17 use crate::components::output::{ OutputItem, OutputContentPart, Annotation };
18 use crate::components::tools::{ Tool, ToolChoice };
19
20 use serde::{ Serialize, Deserialize };
22 use former::Former;
23
24 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ] #[ serde( untagged ) ] #[ non_exhaustive ]
34 pub enum ResponseInput
35 {
36 Items( Vec< InputItem > ),
38 String( String ),
40 }
41
42 #[ derive( Debug, Serialize, Clone, PartialEq, Former ) ] #[ non_exhaustive ]
50 pub struct CreateResponseRequest
51 {
52 pub input : ResponseInput,
54 #[ serde( skip_serializing_if = "Option::is_none" ) ]
56 pub include : Option< Vec< Includable > >,
57 #[ serde( skip_serializing_if = "Option::is_none" ) ]
59 pub instructions : Option< String >,
60 #[ serde( skip_serializing_if = "Option::is_none" ) ]
62 pub max_output_tokens : Option< i32 >,
63 #[ serde( skip_serializing_if = "Option::is_none" ) ]
65 pub metadata : Option< Metadata >,
66 pub model : components::common::ModelIdsResponses,
69 #[ serde( default = "default_parallel_tool_calls" ) ] pub parallel_tool_calls : bool,
72 #[ serde( skip_serializing_if = "Option::is_none" ) ]
74 pub previous_response_id : Option< String >,
75 #[ serde( skip_serializing_if = "Option::is_none" ) ]
77 pub reasoning : Option< Reasoning >,
78 #[ serde( skip_serializing_if = "Option::is_none" ) ]
80 pub store : Option< bool >,
81 #[ serde( skip_serializing_if = "Option::is_none" ) ]
83 pub stream : Option< bool >,
84 #[ serde( skip_serializing_if = "Option::is_none" ) ]
86 pub temperature : Option< f32 >,
87 #[ serde( skip_serializing_if = "Option::is_none" ) ]
89 pub text : Option< TextResponseFormatConfigurationOptions >,
90 #[ serde( skip_serializing_if = "Option::is_none" ) ]
92 pub tool_choice : Option< ToolChoice >,
93 #[ serde( skip_serializing_if = "Option::is_none" ) ]
95 pub tools : Option< Vec< Tool > >,
96 #[ serde( skip_serializing_if = "Option::is_none" ) ]
98 pub top_p : Option< f32 >,
99 #[ serde( skip_serializing_if = "Option::is_none" ) ]
101 pub truncation : Option< String >,
102 #[ serde( skip_serializing_if = "Option::is_none" ) ]
104 pub user : Option< String >,
105 }
106
107 fn default_parallel_tool_calls() -> bool { true }
109
110 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ] #[ non_exhaustive ]
119 pub struct OutputMessage
120 {
121 pub content : Vec< OutputContentPart >, pub id : String,
125 pub role : String,
127 pub status : String,
129 }
130
131
132 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq, Former ) ] #[ non_exhaustive ]
145 pub struct ResponseObject {
147 pub created_at : i64, #[ serde( skip_serializing_if = "Option::is_none" ) ]
151 pub error : Option< ResponseError >, pub id : String,
154 #[ serde( skip_serializing_if = "Option::is_none" ) ]
156 pub incomplete_details : Option< ResponseIncompleteDetails >, #[ serde( skip_serializing_if = "Option::is_none" ) ]
159 pub instructions : Option< String >,
160 #[ serde( skip_serializing_if = "Option::is_none" ) ]
162 pub max_output_tokens : Option< i32 >,
163 #[ serde( skip_serializing_if = "Option::is_none" ) ]
165 pub metadata : Option< Metadata >, pub model : String,
168 pub object : String,
170 pub output : Vec< OutputItem >, #[ serde( default = "default_parallel_tool_calls" ) ] pub parallel_tool_calls : bool,
175 #[ serde( skip_serializing_if = "Option::is_none" ) ]
177 pub previous_response_id : Option< String >,
178 #[ serde( skip_serializing_if = "Option::is_none" ) ]
180 pub reasoning : Option< Reasoning >, pub status : String,
183 #[ serde( skip_serializing_if = "Option::is_none" ) ]
185 pub stream : Option< bool >,
186 #[ serde( skip_serializing_if = "Option::is_none" ) ]
188 pub temperature : Option< f32 >,
189 #[ serde( skip_serializing_if = "Option::is_none" ) ]
191 pub text : Option< TextResponseFormatConfigurationOptions >, #[ serde( skip_serializing_if = "Option::is_none" ) ]
194 pub tool_choice : Option< ToolChoice >, #[ serde( skip_serializing_if = "Option::is_none" ) ]
197 pub tools : Option< Vec< Tool > >, #[ serde( skip_serializing_if = "Option::is_none" ) ]
200 pub top_p : Option< f32 >,
201 #[ serde( skip_serializing_if = "Option::is_none" ) ]
203 pub truncation : Option< String >, #[ serde( skip_serializing_if = "Option::is_none" ) ]
206 pub usage : Option< ResponseUsage >, #[ serde( skip_serializing_if = "Option::is_none" ) ]
209 pub user : Option< String >,
210 }
211
212 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq, Former ) ] #[ non_exhaustive ]
219 pub struct ResponseIncompleteDetails
220 {
221 pub reason : String,
223 }
224
225 #[ derive( Debug, Deserialize, Clone, PartialEq ) ] #[ non_exhaustive ]
232 pub struct ResponseItemList
233 {
234 pub data : Vec< ListedInputItem >, pub first_id : Option< String >,
238 pub has_more : bool,
240 pub last_id : Option< String >,
242 pub object : String,
244 }
245
246 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
248 #[ non_exhaustive ]
249 pub struct ResponseContentPartAddedEvent
250 {
251 pub content_index : u32,
253 pub item_id : String,
255 pub output_index : u32,
257 pub part : OutputContentPart,
259 }
260
261 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
263 #[ non_exhaustive ]
264 pub struct ResponseContentPartDoneEvent
265 {
266 pub content_index : u32,
268 pub item_id : String,
270 pub output_index : u32,
272 pub part : OutputContentPart,
274 }
275
276 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
278 #[ non_exhaustive ]
279 pub struct ResponseCreatedEvent
280 {
281 pub response : ResponseObject, }
284
285 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
287 #[ non_exhaustive ]
288 pub struct ResponseErrorEvent
289 {
290 #[ serde( skip_serializing_if = "Option::is_none" ) ]
292 pub code : Option< String >,
293 pub message : String,
295 #[ serde( skip_serializing_if = "Option::is_none" ) ]
297 pub param : Option< String >,
298 }
299
300 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
302 #[ non_exhaustive ]
303 pub struct ResponseFailedEvent
304 {
305 pub response : ResponseObject, }
308
309 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
311 #[ non_exhaustive ]
312 pub struct ResponseFileSearchCallCompletedEvent
313 {
314 pub item_id : String,
316 pub output_index : u32,
318 }
319
320 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
322 #[ non_exhaustive ]
323 pub struct ResponseFileSearchCallInProgressEvent
324 {
325 pub item_id : String,
327 pub output_index : u32,
329 }
330
331 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
333 #[ non_exhaustive ]
334 pub struct ResponseFileSearchCallSearchingEvent
335 {
336 pub item_id : String,
338 pub output_index : u32,
340 }
341
342 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
344 #[ non_exhaustive ]
345 pub struct ResponseFunctionCallArgumentsDeltaEvent
346 {
347 pub delta : String,
349 pub item_id : String,
351 pub output_index : u32,
353 pub call_id : String,
355 }
356
357 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
359 #[ non_exhaustive ]
360 pub struct ResponseFunctionCallArgumentsDoneEvent
361 {
362 pub arguments : String,
364 pub call_id : String,
366 pub item_id : String,
368 pub output_index : u32,
370 }
371
372 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
374 #[ non_exhaustive ]
375 pub struct ResponseIncompleteEvent
376 {
377 pub response : ResponseObject, }
380
381 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
383 #[ non_exhaustive ]
384 pub struct ResponseInProgressEvent
385 {
386 pub response : ResponseObject, }
389
390 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
392 #[ non_exhaustive ]
393 pub struct ResponseOutputItemAddedEvent
394 {
395 pub item : OutputItem,
397 pub output_index : u32,
399 }
400
401 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
403 #[ non_exhaustive ]
404 pub struct ResponseOutputItemDoneEvent
405 {
406 pub item : OutputItem,
408 pub output_index : u32,
410 }
411
412 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
414 #[ non_exhaustive ]
415 pub struct ResponseRefusalDeltaEvent
416 {
417 pub content_index : u32,
419 pub delta : String,
421 pub item_id : String,
423 pub output_index : u32,
425 }
426
427 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
429 #[ non_exhaustive ]
430 pub struct ResponseRefusalDoneEvent
431 {
432 pub content_index : u32,
434 pub item_id : String,
436 pub output_index : u32,
438 pub refusal : String,
440 }
441
442 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
444 #[ non_exhaustive ]
445 pub struct ResponseTextAnnotationDeltaEvent
446 {
447 pub annotation : Annotation,
449 pub annotation_index : u32,
451 pub content_index : u32,
453 pub item_id : String,
455 pub output_index : u32,
457 }
458
459 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
461 #[ non_exhaustive ]
462 pub struct ResponseTextDeltaEvent
463 {
464 pub content_index : u32,
466 pub delta : String,
468 pub item_id : String,
470 pub output_index : u32,
472 }
473
474 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
476 #[ non_exhaustive ]
477 pub struct ResponseTextDoneEvent
478 {
479 pub content_index : u32,
481 pub item_id : String,
483 pub output_index : u32,
485 pub text : String,
487 }
488
489 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
491 #[ non_exhaustive ]
492 pub struct ResponseWebSearchCallCompletedEvent
493 {
494 pub item_id : String,
496 pub output_index : u32,
498 }
499
500 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
502 #[ non_exhaustive ]
503 pub struct ResponseWebSearchCallInProgressEvent
504 {
505 pub item_id : String,
507 pub output_index : u32,
509 }
510
511 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
513 #[ non_exhaustive ]
514 pub struct ResponseWebSearchCallSearchingEvent
515 {
516 pub item_id : String,
518 pub output_index : u32,
520 }
521
522 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
524 #[ non_exhaustive ]
525 pub struct ResponseCompletedEvent
526 {
527 pub response : ResponseObject,
529 #[ serde( skip_serializing_if = "Option::is_none" ) ]
531 pub sequence_number : Option< u32 >,
532 }
533
534 #[ derive( Debug, Serialize, Deserialize, Clone, PartialEq ) ]
540 #[ serde( tag = "type" ) ]
541 #[ non_exhaustive ]
542 pub enum ResponseStreamEvent
543 {
544 #[ serde( rename = "response.content_part.added" ) ]
546 ResponseContentPartAdded( ResponseContentPartAddedEvent ),
547 #[ serde( rename = "response.content_part.done" ) ]
549 ResponseContentPartDone( ResponseContentPartDoneEvent ),
550 #[ serde( rename = "response.created" ) ]
552 ResponseCreated( ResponseCreatedEvent ),
553 #[ serde( rename = "error" ) ]
555 ResponseErrorEvent( ResponseErrorEvent ),
556 #[ serde( rename = "response.failed" ) ]
558 ResponseFailed( ResponseFailedEvent ),
559 #[ serde( rename = "response.file_search_call.completed" ) ]
561 ResponseFileSearchCallCompleted( ResponseFileSearchCallCompletedEvent ),
562 #[ serde( rename = "response.file_search_call.in_progress" ) ]
564 ResponseFileSearchCallInProgress( ResponseFileSearchCallInProgressEvent ),
565 #[ serde( rename = "response.file_search_call.searching" ) ]
567 ResponseFileSearchCallSearching( ResponseFileSearchCallSearchingEvent ),
568 #[ serde( rename = "response.function_call_arguments.done" ) ]
570 ResponseFunctionCallArgumentsDone( ResponseFunctionCallArgumentsDoneEvent ),
571 #[ serde( rename = "response.function_call_arguments.delta" ) ]
573 ResponseFunctionCallArgumentsDelta( ResponseFunctionCallArgumentsDeltaEvent ),
574 #[ serde( rename = "response.incomplete" ) ]
576 ResponseIncomplete( ResponseIncompleteEvent ),
577 #[ serde( rename = "response.in_analysis" ) ]
579 ResponseInAnalysis( ResponseInProgressEvent ),
580 #[ serde( rename = "response.in_progress" ) ]
582 ResponseInProgress( ResponseInProgressEvent ),
583 #[ serde( rename = "response.output_item.added" ) ]
585 ResponseOutputItemAdded( ResponseOutputItemAddedEvent ),
586 #[ serde( rename = "response.output_item.done" ) ]
588 ResponseOutputItemDone( ResponseOutputItemDoneEvent ),
589 #[ serde( rename = "response.refusal.done" ) ]
591 ResponseRefusalDone( ResponseRefusalDoneEvent ),
592 #[ serde( rename = "response.refusal.delta" ) ]
594 ResponseRefusalDelta( ResponseRefusalDeltaEvent ),
595 #[ serde( rename = "response.output_text.annotation.added" ) ]
597 ResponseTextAnnotationDelta( ResponseTextAnnotationDeltaEvent ),
598 #[ serde( rename = "response.output_text.delta" ) ]
600 ResponseTextDelta( ResponseTextDeltaEvent ),
601 #[ serde( rename = "response.output_text.done" ) ]
603 ResponseTextDone( ResponseTextDoneEvent ),
604 #[ serde( rename = "response.web_search_call.completed" ) ]
606 ResponseWebSearchCallCompleted( ResponseWebSearchCallCompletedEvent ),
607 #[ serde( rename = "response.web_search_call.in_progress" ) ]
609 ResponseWebSearchCallInProgress( ResponseWebSearchCallInProgressEvent ),
610 #[ serde( rename = "response.web_search_call.searching" ) ]
612 ResponseWebSearchCallSearching( ResponseWebSearchCallSearchingEvent ),
613 #[ serde( rename = "response.completed" ) ]
615 ResponseCompleted( ResponseCompletedEvent ),
616 }
617} crate ::mod_interface!
620{
621 exposed use
623 {
624 ResponseInput,
625 CreateResponseRequest,
626 ResponseObject,
627 ResponseIncompleteDetails,
628 ResponseItemList,
629 OutputMessage,
630 ResponseStreamEvent,
631 ResponseCreatedEvent,
632 ResponseInProgressEvent,
633 ResponseFailedEvent,
634 ResponseIncompleteEvent,
635 ResponseOutputItemAddedEvent,
636 ResponseOutputItemDoneEvent,
637 ResponseContentPartAddedEvent,
638 ResponseContentPartDoneEvent,
639 ResponseTextDeltaEvent,
640 ResponseTextAnnotationDeltaEvent,
641 ResponseTextDoneEvent,
642 ResponseRefusalDeltaEvent,
643 ResponseRefusalDoneEvent,
644 ResponseFunctionCallArgumentsDeltaEvent,
645 ResponseFunctionCallArgumentsDoneEvent,
646 ResponseFileSearchCallInProgressEvent,
647 ResponseFileSearchCallSearchingEvent,
648 ResponseFileSearchCallCompletedEvent,
649 ResponseWebSearchCallInProgressEvent,
650 ResponseWebSearchCallSearchingEvent,
651 ResponseWebSearchCallCompletedEvent,
652 ResponseCompletedEvent,
653 ResponseErrorEvent,
654 };
655 own use crate::components::
657 {
658 common ::
659 {
660 ResponseError,
661 ResponseUsage,
662 Metadata,
663 Reasoning,
664 TextResponseFormatConfigurationOptions,
665 Includable,
666 ListQuery, },
668 input ::{ InputItem, ListedInputItem },
669 output ::{ OutputItem, OutputContentPart, Annotation, FileSearchResultItem, ComputerScreenshotImage },
670 tools ::{ Tool, ToolChoice },
671 };
672}