gproxy_protocol/openai/generate_content/responses/
request.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::openai::common::*;
5
6use super::{
7 ContextManagement, MultiAgentConfig, PromptRef, ReasoningConfig, ResponseItem,
8 ResponseStreamOptions, ResponseTool, TextConfig,
9};
10
11#[derive(
12 Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
13)]
14#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
15pub struct ResponseCreateRequest {
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub background: Option<bool>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub context_management: Option<Vec<ContextManagement>>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub conversation: Option<ResponseConversationRef>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub include: Option<Vec<ResponseIncludable>>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub input: Option<ResponseInput>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub instructions: Option<String>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub max_output_tokens: Option<u32>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub max_tool_calls: Option<u32>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub metadata: Option<Metadata>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub model: Option<OpenAiModelId>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub moderation: Option<ModerationConfig>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub multi_agent: Option<MultiAgentConfig>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub parallel_tool_calls: Option<bool>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub previous_response_id: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub prompt_cache_key: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub prompt_cache_options: Option<PromptCacheOptions>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub prompt_cache_retention: Option<PromptCacheRetention>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub prompt: Option<PromptRef>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub reasoning: Option<ReasoningConfig>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub safety_identifier: Option<String>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub service_tier: Option<ServiceTier>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub store: Option<bool>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub stream: Option<bool>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub stream_options: Option<ResponseStreamOptions>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub temperature: Option<f64>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub text: Option<TextConfig>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub tool_choice: Option<ResponseToolChoice>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub tools: Option<Vec<ResponseTool>>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub top_logprobs: Option<u32>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub top_p: Option<f64>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub truncation: Option<TruncationStrategy>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub user: Option<String>,
80 #[serde(default, flatten)]
81 pub rest: Rest,
82}
83
84#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
85#[serde(untagged)]
86pub enum ResponseConversationRef {
87 Id(String),
88 Object(ResponseConversationParam),
89 Unknown(Value),
90}
91
92#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
93#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
94pub struct ResponseConversationParam {
95 pub id: String,
96 #[serde(default, flatten)]
97 pub rest: Rest,
98}
99
100#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
101#[serde(untagged)]
102pub enum ResponseInput {
103 Text(String),
104 Items(Vec<ResponseItem>),
105 Unknown(Value),
106}