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