Skip to main content

gproxy_protocol/wire/openai/realtime/
mcp_events.rs

1//! Native Realtime wire DTOs. Source definitions are cited on each object.
2//! Verified with Realtime.md and openai-python snapshot
3//! e12b81d3bbf644ec7045e152d69bc4b68d69cd48 (2026-09-13).
4//! https://github.com/openai/openai-python/tree/e12b81d3bbf644ec7045e152d69bc4b68d69cd48/src/openai/types/realtime
5use super::wire::present_nullable;
6use crate::Rest;
7use serde::{Deserialize, Serialize};
8
9/// Source: `openai/types/realtime/mcp_list_tools_in_progress.py`, `McpListToolsInProgress`.
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
11#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
12#[derive(gproxy_protocol_macros::DeclaredFields)]
13pub struct McpListToolsInProgress {
14    pub event_id: String,
15    pub item_id: String,
16    #[serde(rename = "type")]
17    pub type_: McpListToolsInProgressType,
18    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
19    pub rest: Rest,
20}
21
22/// Source: `openai/types/realtime/mcp_list_tools_completed.py`, `McpListToolsCompleted`.
23#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
24#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
25#[derive(gproxy_protocol_macros::DeclaredFields)]
26pub struct McpListToolsCompleted {
27    pub event_id: String,
28    pub item_id: String,
29    #[serde(rename = "type")]
30    pub type_: McpListToolsCompletedType,
31    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
32    pub rest: Rest,
33}
34
35/// Source: `openai/types/realtime/mcp_list_tools_failed.py`, `McpListToolsFailed`.
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
37#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
38#[derive(gproxy_protocol_macros::DeclaredFields)]
39pub struct McpListToolsFailed {
40    pub event_id: String,
41    pub item_id: String,
42    #[serde(rename = "type")]
43    pub type_: McpListToolsFailedType,
44    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
45    pub rest: Rest,
46}
47
48/// Source: `openai/types/realtime/response_mcp_call_arguments_delta.py`, `ResponseMcpCallArgumentsDelta`.
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
50#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
51#[derive(gproxy_protocol_macros::DeclaredFields)]
52pub struct ResponseMcpCallArgumentsDelta {
53    pub delta: String,
54    pub event_id: String,
55    pub item_id: String,
56    pub output_index: i64,
57    pub response_id: String,
58    #[serde(rename = "type")]
59    pub type_: ResponseMcpCallArgumentsDeltaType,
60    #[serde(
61        default,
62        deserialize_with = "present_nullable",
63        skip_serializing_if = "Option::is_none"
64    )]
65    pub obfuscation: Option<Option<String>>,
66    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
67    pub rest: Rest,
68}
69
70/// Source: `openai/types/realtime/response_mcp_call_arguments_done.py`, `ResponseMcpCallArgumentsDone`.
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
72#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
73#[derive(gproxy_protocol_macros::DeclaredFields)]
74pub struct ResponseMcpCallArgumentsDone {
75    pub arguments: String,
76    pub event_id: String,
77    pub item_id: String,
78    pub output_index: i64,
79    pub response_id: String,
80    #[serde(rename = "type")]
81    pub type_: ResponseMcpCallArgumentsDoneType,
82    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
83    pub rest: Rest,
84}
85
86/// Source: `openai/types/realtime/response_mcp_call_in_progress.py`, `ResponseMcpCallInProgress`.
87#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
88#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
89#[derive(gproxy_protocol_macros::DeclaredFields)]
90pub struct ResponseMcpCallInProgress {
91    pub event_id: String,
92    pub item_id: String,
93    pub output_index: i64,
94    #[serde(rename = "type")]
95    pub type_: ResponseMcpCallInProgressType,
96    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
97    pub rest: Rest,
98}
99
100/// Source: `openai/types/realtime/response_mcp_call_completed.py`, `ResponseMcpCallCompleted`.
101#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
102#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
103#[derive(gproxy_protocol_macros::DeclaredFields)]
104pub struct ResponseMcpCallCompleted {
105    pub event_id: String,
106    pub item_id: String,
107    pub output_index: i64,
108    #[serde(rename = "type")]
109    pub type_: ResponseMcpCallCompletedType,
110    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
111    pub rest: Rest,
112}
113
114/// Source: `openai/types/realtime/response_mcp_call_failed.py`, `ResponseMcpCallFailed`.
115#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
116#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
117#[derive(gproxy_protocol_macros::DeclaredFields)]
118pub struct ResponseMcpCallFailed {
119    pub event_id: String,
120    pub item_id: String,
121    pub output_index: i64,
122    #[serde(rename = "type")]
123    pub type_: ResponseMcpCallFailedType,
124    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
125    pub rest: Rest,
126}
127
128#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
129#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
130#[derive(gproxy_protocol_macros::DeclaredFields)]
131pub enum McpListToolsInProgressType {
132    #[serde(rename = "mcp_list_tools.in_progress")]
133    McpListToolsInProgress,
134}
135
136#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
137#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
138#[derive(gproxy_protocol_macros::DeclaredFields)]
139pub enum McpListToolsCompletedType {
140    #[serde(rename = "mcp_list_tools.completed")]
141    McpListToolsCompleted,
142}
143
144#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
145#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
146#[derive(gproxy_protocol_macros::DeclaredFields)]
147pub enum McpListToolsFailedType {
148    #[serde(rename = "mcp_list_tools.failed")]
149    McpListToolsFailed,
150}
151
152#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
153#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
154#[derive(gproxy_protocol_macros::DeclaredFields)]
155pub enum ResponseMcpCallArgumentsDeltaType {
156    #[serde(rename = "response.mcp_call_arguments.delta")]
157    ResponseMcpCallArgumentsDelta,
158}
159
160#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
161#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
162#[derive(gproxy_protocol_macros::DeclaredFields)]
163pub enum ResponseMcpCallArgumentsDoneType {
164    #[serde(rename = "response.mcp_call_arguments.done")]
165    ResponseMcpCallArgumentsDone,
166}
167
168#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
169#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
170#[derive(gproxy_protocol_macros::DeclaredFields)]
171pub enum ResponseMcpCallInProgressType {
172    #[serde(rename = "response.mcp_call.in_progress")]
173    ResponseMcpCallInProgress,
174}
175
176#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
177#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
178#[derive(gproxy_protocol_macros::DeclaredFields)]
179pub enum ResponseMcpCallCompletedType {
180    #[serde(rename = "response.mcp_call.completed")]
181    ResponseMcpCallCompleted,
182}
183
184#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
185#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
186#[derive(gproxy_protocol_macros::DeclaredFields)]
187pub enum ResponseMcpCallFailedType {
188    #[serde(rename = "response.mcp_call.failed")]
189    ResponseMcpCallFailed,
190}