openresponses_rust/types/
events.rs1use super::{content::*, items::*, responses::*};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5#[serde(tag = "type")]
6pub enum StreamingEvent {
7 #[serde(rename = "response.created")]
8 ResponseCreated {
9 sequence_number: i32,
10 response: ResponseResource,
11 },
12 #[serde(rename = "response.queued")]
13 ResponseQueued {
14 sequence_number: i32,
15 response: ResponseResource,
16 },
17 #[serde(rename = "response.in_progress")]
18 ResponseInProgress {
19 sequence_number: i32,
20 response: ResponseResource,
21 },
22 #[serde(rename = "response.completed")]
23 ResponseCompleted {
24 sequence_number: i32,
25 response: ResponseResource,
26 },
27 #[serde(rename = "response.failed")]
28 ResponseFailed {
29 sequence_number: i32,
30 response: ResponseResource,
31 },
32 #[serde(rename = "response.incomplete")]
33 ResponseIncomplete {
34 sequence_number: i32,
35 response: ResponseResource,
36 },
37 #[serde(rename = "response.output_item.added")]
38 OutputItemAdded {
39 sequence_number: i32,
40 output_index: i32,
41 item: Item,
42 },
43 #[serde(rename = "response.output_item.done")]
44 OutputItemDone {
45 sequence_number: i32,
46 output_index: i32,
47 item: Item,
48 },
49 #[serde(rename = "response.content_part.added")]
50 ContentPartAdded {
51 sequence_number: i32,
52 item_id: String,
53 output_index: i32,
54 content_index: i32,
55 part: OutputContent,
56 },
57 #[serde(rename = "response.content_part.done")]
58 ContentPartDone {
59 sequence_number: i32,
60 item_id: String,
61 output_index: i32,
62 content_index: i32,
63 part: OutputContent,
64 },
65 #[serde(rename = "response.output_text.delta")]
66 OutputTextDelta {
67 sequence_number: i32,
68 item_id: String,
69 output_index: i32,
70 content_index: i32,
71 delta: String,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 logprobs: Option<Vec<LogProb>>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 obfuscation: Option<String>,
76 },
77 #[serde(rename = "response.output_text.done")]
78 OutputTextDone {
79 sequence_number: i32,
80 item_id: String,
81 output_index: i32,
82 content_index: i32,
83 text: String,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 logprobs: Option<Vec<LogProb>>,
86 },
87 #[serde(rename = "response.refusal.delta")]
88 RefusalDelta {
89 sequence_number: i32,
90 item_id: String,
91 output_index: i32,
92 content_index: i32,
93 delta: String,
94 },
95 #[serde(rename = "response.refusal.done")]
96 RefusalDone {
97 sequence_number: i32,
98 item_id: String,
99 output_index: i32,
100 content_index: i32,
101 refusal: String,
102 },
103 #[serde(rename = "response.reasoning.delta")]
104 ReasoningDelta {
105 sequence_number: i32,
106 item_id: String,
107 output_index: i32,
108 content_index: i32,
109 delta: String,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 obfuscation: Option<String>,
112 },
113 #[serde(rename = "response.reasoning.done")]
114 ReasoningDone {
115 sequence_number: i32,
116 item_id: String,
117 output_index: i32,
118 content_index: i32,
119 text: String,
120 },
121 #[serde(rename = "response.reasoning_summary_text.delta")]
122 ReasoningSummaryDelta {
123 sequence_number: i32,
124 item_id: String,
125 output_index: i32,
126 summary_index: i32,
127 delta: String,
128 #[serde(skip_serializing_if = "Option::is_none")]
129 obfuscation: Option<String>,
130 },
131 #[serde(rename = "response.reasoning_summary_text.done")]
132 ReasoningSummaryDone {
133 sequence_number: i32,
134 item_id: String,
135 output_index: i32,
136 summary_index: i32,
137 text: String,
138 },
139 #[serde(rename = "response.reasoning_summary_part.added")]
140 ReasoningSummaryPartAdded {
141 sequence_number: i32,
142 item_id: String,
143 output_index: i32,
144 summary_index: i32,
145 part: OutputContent,
146 },
147 #[serde(rename = "response.reasoning_summary_part.done")]
148 ReasoningSummaryPartDone {
149 sequence_number: i32,
150 item_id: String,
151 output_index: i32,
152 summary_index: i32,
153 part: OutputContent,
154 },
155 #[serde(rename = "response.output_text.annotation.added")]
156 OutputTextAnnotationAdded {
157 sequence_number: i32,
158 item_id: String,
159 output_index: i32,
160 content_index: i32,
161 annotation_index: i32,
162 annotation: Annotation,
163 },
164 #[serde(rename = "response.function_call_arguments.delta")]
165 FunctionCallArgumentsDelta {
166 sequence_number: i32,
167 item_id: String,
168 output_index: i32,
169 delta: String,
170 #[serde(skip_serializing_if = "Option::is_none")]
171 obfuscation: Option<String>,
172 },
173 #[serde(rename = "response.function_call_arguments.done")]
174 FunctionCallArgumentsDone {
175 sequence_number: i32,
176 item_id: String,
177 output_index: i32,
178 arguments: String,
179 },
180 #[serde(rename = "error")]
181 Error {
182 sequence_number: i32,
183 error: ErrorPayload,
184 },
185 #[serde(rename = "[DONE]")]
186 Done,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
190pub struct ErrorPayload {
191 #[serde(rename = "type")]
192 pub error_type: String,
193 pub code: Option<String>,
194 pub message: String,
195 pub param: Option<String>,
196 #[serde(skip_serializing_if = "Option::is_none")]
197 pub headers: Option<HashMap<String, String>>,
198}
199
200use std::collections::HashMap;