Skip to main content

gproxy_protocol/openai/generate_content/responses/
request.rs

1use 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}