async_openai/types/realtime/
item.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Clone)]
4#[serde(rename_all = "snake_case")]
5pub enum ItemType {
6 Message,
7 FunctionCall,
8 FunctionCallOutput,
9}
10
11#[derive(Debug, Serialize, Deserialize, Clone)]
12#[serde(rename_all = "snake_case")]
13pub enum ItemStatus {
14 Completed,
15 InProgress,
16 Incomplete,
17}
18
19#[derive(Debug, Serialize, Deserialize, Clone)]
20#[serde(rename_all = "lowercase")]
21pub enum ItemRole {
22 User,
23 Assistant,
24 System,
25}
26
27#[derive(Debug, Serialize, Deserialize, Clone)]
28#[serde(rename_all = "snake_case")]
29pub enum ItemContentType {
30 InputText,
31 InputAudio,
32 Text,
33 Audio,
34}
35
36#[derive(Debug, Serialize, Deserialize, Clone)]
37pub struct ItemContent {
38 pub r#type: ItemContentType,
40
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub text: Option<String>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub audio: Option<String>,
48
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub transcript: Option<String>,
52}
53
54#[derive(Debug, Serialize, Deserialize, Clone)]
55pub struct Item {
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub id: Option<String>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub r#type: Option<ItemType>,
63
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub status: Option<ItemStatus>,
67
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub role: Option<ItemRole>,
71
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub content: Option<Vec<ItemContent>>,
75
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub call_id: Option<String>,
79
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub name: Option<String>,
83
84 #[serde(skip_serializing_if = "Option::is_none")]
86 pub arguments: Option<String>,
87
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub output: Option<String>,
91}
92
93impl TryFrom<serde_json::Value> for Item {
94 type Error = serde_json::Error;
95
96 fn try_from(value: serde_json::Value) -> Result<Self, Self::Error> {
97 serde_json::from_value(value)
98 }
99}