openresponses_rust/types/
requests.rs1use super::{enums::*, items::*, tools::*};
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6#[serde(untagged)]
7pub enum Input {
8 Single(String),
9 Items(Vec<Item>),
10}
11
12impl Default for Input {
13 fn default() -> Self {
14 Input::Items(Vec::new())
15 }
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
19pub struct CreateResponseBody {
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub model: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub input: Option<Input>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub previous_response_id: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub include: Option<Vec<IncludeOption>>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub tools: Option<Vec<Tool>>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub tool_choice: Option<ToolChoiceParam>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub metadata: Option<HashMap<String, String>>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub text: Option<TextParam>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub temperature: Option<f64>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub top_p: Option<f64>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub presence_penalty: Option<f64>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub frequency_penalty: Option<f64>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub parallel_tool_calls: Option<bool>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub stream: Option<bool>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub stream_options: Option<StreamOptions>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub background: Option<bool>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub max_output_tokens: Option<i32>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub max_tool_calls: Option<i32>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub reasoning: Option<ReasoningConfig>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub safety_identifier: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub prompt_cache_key: Option<String>,
62 #[serde(default)]
63 pub truncation: Truncation,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub instructions: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub store: Option<bool>,
68 #[serde(default)]
69 pub service_tier: ServiceTier,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub top_logprobs: Option<i32>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
75pub struct TextParam {
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub format: Option<TextFormat>,
78 #[serde(default)]
79 pub verbosity: Verbosity,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
83#[serde(tag = "type")]
84pub enum TextFormat {
85 #[serde(rename = "text")]
86 Text,
87 #[serde(rename = "json_object")]
88 JsonObject,
89 #[serde(rename = "json_schema")]
90 JsonSchema {
91 name: String,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 description: Option<String>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 schema: Option<serde_json::Value>,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 strict: Option<bool>,
98 },
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
102pub struct StreamOptions {
103 #[serde(rename = "include_obfuscation")]
104 pub include_obfuscation: Option<bool>,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
108pub struct ReasoningConfig {
109 #[serde(skip_serializing_if = "Option::is_none")]
110 pub effort: Option<ReasoningEffort>,
111 #[serde(skip_serializing_if = "Option::is_none")]
112 pub summary: Option<ReasoningSummary>,
113}