1use super::wire::present_nullable;
6use super::{RealtimeFunctionTool, ToolChoiceFunction, ToolChoiceMcp, ToolChoiceOptions};
7use crate::Rest;
8use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13#[serde(untagged)]
14#[derive(gproxy_protocol_macros::DeclaredFields)]
15#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
16pub enum RealtimeSessionCreateResponseToolChoice {
17 ToolChoiceOptions(ToolChoiceOptions),
18 ToolChoiceFunction(ToolChoiceFunction),
19 ToolChoiceMcp(ToolChoiceMcp),
20}
21
22#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
24#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
25#[serde(untagged)]
26#[allow(clippy::large_enum_variant)]
27#[derive(gproxy_protocol_macros::DeclaredFields)]
28#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
29pub enum RealtimeSessionCreateResponseTool {
30 RealtimeFunctionTool(RealtimeFunctionTool),
31 RealtimeSessionCreateResponseToolMcpTool(RealtimeSessionCreateResponseToolMcpTool),
32}
33
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37#[derive(gproxy_protocol_macros::DeclaredFields)]
38#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
39pub struct RealtimeSessionCreateResponseToolMcpTool {
40 pub server_label: String,
41 #[serde(rename = "type")]
42 pub type_: RealtimeSessionCreateResponseToolMcpToolType,
43 #[serde(
44 default,
45 deserialize_with = "present_nullable",
46 skip_serializing_if = "Option::is_none"
47 )]
48 pub allowed_callers:
49 Option<Option<Vec<RealtimeSessionCreateResponseToolMcpToolAllowedCallersItem>>>,
50 #[serde(
51 default,
52 deserialize_with = "present_nullable",
53 skip_serializing_if = "Option::is_none"
54 )]
55 pub allowed_tools: Option<Option<RealtimeSessionCreateResponseToolMcpToolAllowedTools>>,
56 #[serde(
57 default,
58 deserialize_with = "present_nullable",
59 skip_serializing_if = "Option::is_none"
60 )]
61 pub authorization: Option<Option<String>>,
62 #[serde(
63 default,
64 deserialize_with = "present_nullable",
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub connector_id: Option<Option<RealtimeSessionCreateResponseToolMcpToolConnectorId>>,
68 #[serde(
69 default,
70 deserialize_with = "present_nullable",
71 skip_serializing_if = "Option::is_none"
72 )]
73 pub defer_loading: Option<Option<bool>>,
74 #[serde(
75 default,
76 deserialize_with = "present_nullable",
77 skip_serializing_if = "Option::is_none"
78 )]
79 pub headers: Option<Option<std::collections::BTreeMap<String, String>>>,
80 #[serde(
81 default,
82 deserialize_with = "present_nullable",
83 skip_serializing_if = "Option::is_none"
84 )]
85 pub require_approval: Option<Option<RealtimeSessionCreateResponseToolMcpToolRequireApproval>>,
86 #[serde(
87 default,
88 deserialize_with = "present_nullable",
89 skip_serializing_if = "Option::is_none"
90 )]
91 pub server_description: Option<Option<String>>,
92 #[serde(
93 default,
94 deserialize_with = "present_nullable",
95 skip_serializing_if = "Option::is_none"
96 )]
97 pub server_url: Option<Option<String>>,
98 #[serde(
99 default,
100 deserialize_with = "present_nullable",
101 skip_serializing_if = "Option::is_none"
102 )]
103 pub tunnel_id: Option<Option<String>>,
104 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
105 pub rest: Rest,
106}
107
108#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
110#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
111#[serde(untagged)]
112#[derive(gproxy_protocol_macros::DeclaredFields)]
113#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
114pub enum RealtimeSessionCreateResponseToolMcpToolAllowedTools {
115 Items(Vec<String>),
116 RealtimeSessionCreateResponseToolMcpToolAllowedToolsMcpToolFilter(
117 RealtimeSessionCreateResponseToolMcpToolAllowedToolsMcpToolFilter,
118 ),
119 Variant3(()),
120}
121
122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
124#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
125#[serde(untagged)]
126#[derive(gproxy_protocol_macros::DeclaredFields)]
127#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
128pub enum RealtimeSessionCreateResponseToolMcpToolRequireApproval {
129 RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilter(
130 RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilter,
131 ),
132 Literal(RealtimeSessionCreateResponseToolMcpToolRequireApprovalVariant2),
133 Variant3(()),
134}
135
136#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
138#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
139#[derive(gproxy_protocol_macros::DeclaredFields)]
140#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
141pub struct RealtimeSessionCreateResponseToolMcpToolAllowedToolsMcpToolFilter {
142 #[serde(
143 default,
144 deserialize_with = "present_nullable",
145 skip_serializing_if = "Option::is_none"
146 )]
147 pub read_only: Option<Option<bool>>,
148 #[serde(
149 default,
150 deserialize_with = "present_nullable",
151 skip_serializing_if = "Option::is_none"
152 )]
153 pub tool_names: Option<Option<Vec<String>>>,
154 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
155 pub rest: Rest,
156}
157
158#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
160#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
161#[derive(gproxy_protocol_macros::DeclaredFields)]
162#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
163pub struct RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilter {
164 #[serde(
165 default,
166 deserialize_with = "present_nullable",
167 skip_serializing_if = "Option::is_none"
168 )]
169 pub always: Option<
170 Option<RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilterAlways>,
171 >,
172 #[serde(
173 default,
174 deserialize_with = "present_nullable",
175 skip_serializing_if = "Option::is_none"
176 )]
177 pub never: Option<
178 Option<RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilterNever>,
179 >,
180 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
181 pub rest: Rest,
182}
183
184#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
186#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
187#[derive(gproxy_protocol_macros::DeclaredFields)]
188#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
189pub struct RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilterAlways {
190 #[serde(
191 default,
192 deserialize_with = "present_nullable",
193 skip_serializing_if = "Option::is_none"
194 )]
195 pub read_only: Option<Option<bool>>,
196 #[serde(
197 default,
198 deserialize_with = "present_nullable",
199 skip_serializing_if = "Option::is_none"
200 )]
201 pub tool_names: Option<Option<Vec<String>>>,
202 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
203 pub rest: Rest,
204}
205
206#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
208#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
209#[derive(gproxy_protocol_macros::DeclaredFields)]
210#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
211pub struct RealtimeSessionCreateResponseToolMcpToolRequireApprovalMcpToolApprovalFilterNever {
212 #[serde(
213 default,
214 deserialize_with = "present_nullable",
215 skip_serializing_if = "Option::is_none"
216 )]
217 pub read_only: Option<Option<bool>>,
218 #[serde(
219 default,
220 deserialize_with = "present_nullable",
221 skip_serializing_if = "Option::is_none"
222 )]
223 pub tool_names: Option<Option<Vec<String>>>,
224 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
225 pub rest: Rest,
226}
227
228#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
229#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
230#[derive(gproxy_protocol_macros::DeclaredFields)]
231#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
232pub enum RealtimeSessionCreateResponseToolMcpToolType {
233 #[serde(rename = "mcp")]
234 Mcp,
235}
236
237#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
238#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
239#[derive(gproxy_protocol_macros::DeclaredFields)]
240#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
241pub enum RealtimeSessionCreateResponseToolMcpToolAllowedCallersItem {
242 #[serde(rename = "direct")]
243 Direct,
244 #[serde(rename = "programmatic")]
245 Programmatic,
246}
247
248#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
249#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
250#[derive(gproxy_protocol_macros::DeclaredFields)]
251#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
252pub enum RealtimeSessionCreateResponseToolMcpToolConnectorId {
253 #[serde(rename = "connector_dropbox")]
254 ConnectorDropbox,
255 #[serde(rename = "connector_gmail")]
256 ConnectorGmail,
257 #[serde(rename = "connector_googlecalendar")]
258 ConnectorGooglecalendar,
259 #[serde(rename = "connector_googledrive")]
260 ConnectorGoogledrive,
261 #[serde(rename = "connector_microsoftteams")]
262 ConnectorMicrosoftteams,
263 #[serde(rename = "connector_outlookcalendar")]
264 ConnectorOutlookcalendar,
265 #[serde(rename = "connector_outlookemail")]
266 ConnectorOutlookemail,
267 #[serde(rename = "connector_sharepoint")]
268 ConnectorSharepoint,
269}
270
271#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
272#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
273#[derive(gproxy_protocol_macros::DeclaredFields)]
274#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
275pub enum RealtimeSessionCreateResponseToolMcpToolRequireApprovalVariant2 {
276 #[serde(rename = "always")]
277 Always,
278 #[serde(rename = "never")]
279 Never,
280}