Skip to main content

gproxy_protocol/openai/realtime/server_events/payloads/
conversation.rs

1use serde::{Deserialize, Serialize};
2
3use crate::openai::common::Rest;
4
5use super::super::super::RealtimeItem;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
8#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
9pub struct RealtimeConversationItemEvent {
10    pub item: RealtimeItem,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub previous_item_id: Option<String>,
13    #[serde(default, flatten)]
14    pub rest: Rest,
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
18#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
19pub struct RealtimeConversationItemRetrievedEvent {
20    pub item: RealtimeItem,
21    #[serde(default, flatten)]
22    pub rest: Rest,
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
26#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
27pub struct RealtimeConversationItemTruncatedEvent {
28    pub item_id: String,
29    pub content_index: u32,
30    pub audio_end_ms: u64,
31    #[serde(default, flatten)]
32    pub rest: Rest,
33}
34
35#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37pub struct RealtimeConversationItemDeletedEvent {
38    pub item_id: String,
39    #[serde(default, flatten)]
40    pub rest: Rest,
41}
42
43/// `conversation.created` carries only the resource it announces.
44#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
45#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
46pub struct RealtimeConversationCreatedEvent {
47    pub conversation: RealtimeConversationRef,
48    #[serde(default, flatten)]
49    pub rest: Rest,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
53#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
54pub struct RealtimeConversationRef {
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub id: Option<String>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub object: Option<String>,
59    #[serde(default, flatten)]
60    pub rest: Rest,
61}