Skip to main content

openresponses_rust/types/
events.rs

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