1use super::thread::CreateThreadRequest;
14use serde::{Deserialize, Serialize};
15use std::collections::HashMap;
16
17use crate::impl_builder_methods;
18
19#[derive(Debug, Serialize, Clone)]
21pub struct CreateRunRequest {
22 assistant_id: String,
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub model: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub instructions: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub tools: Option<Vec<HashMap<String, String>>>,
33 #[serde(skip_serializing_if = "Option::is_none")]
35 pub metadata: Option<HashMap<String, String>>,
36}
37
38impl CreateRunRequest {
39 pub fn new(assistant_id: String) -> Self {
41 Self {
42 assistant_id,
43 model: None,
44 instructions: None,
45 tools: None,
46 metadata: None,
47 }
48 }
49}
50
51impl_builder_methods!(
52 CreateRunRequest,
53 model: String,
54 instructions: String,
55 tools: Vec<HashMap<String, String>>,
56 metadata: HashMap<String, String>
57);
58
59#[derive(Debug, Serialize, Clone)]
61pub struct ModifyRunRequest {
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub metadata: Option<HashMap<String, String>>,
65}
66
67impl ModifyRunRequest {
68 pub fn new() -> Self {
70 Self { metadata: None }
71 }
72}
73
74impl Default for ModifyRunRequest {
75 fn default() -> Self {
77 Self::new()
78 }
79}
80
81impl_builder_methods!(
82 ModifyRunRequest,
83 metadata: HashMap<String, String>
84);
85
86#[derive(Debug, Deserialize, Serialize)]
88pub struct RunObject {
89 pub id: String,
91 pub object: String,
93 pub created_at: i64,
95 pub thread_id: String,
97 pub assistant_id: String,
99 pub status: String,
101 #[serde(skip_serializing_if = "Option::is_none")]
103 pub required_action: Option<HashMap<String, String>>,
104 #[serde(skip_serializing_if = "Option::is_none")]
106 pub last_error: Option<String>,
107 #[serde(skip_serializing_if = "Option::is_none")]
109 pub expires_at: Option<i64>,
110 #[serde(skip_serializing_if = "Option::is_none")]
112 pub started_at: Option<i64>,
113 #[serde(skip_serializing_if = "Option::is_none")]
115 pub cancelled_at: Option<i64>,
116 #[serde(skip_serializing_if = "Option::is_none")]
118 pub failed_at: Option<i64>,
119 #[serde(skip_serializing_if = "Option::is_none")]
121 pub completed_at: Option<i64>,
122 pub model: String,
124 pub instructions: Option<String>,
126 pub tools: Vec<HashMap<String, String>>,
128 pub file_ids: Vec<String>,
130 pub metadata: HashMap<String, String>,
132 pub headers: Option<HashMap<String, String>>,
134}
135
136#[derive(Debug, Deserialize, Serialize)]
138pub struct ListRun {
139 pub object: String,
141 pub data: Vec<RunObject>,
143 pub first_id: String,
145 pub last_id: String,
147 pub has_more: bool,
149 pub headers: Option<HashMap<String, String>>,
151}
152
153#[derive(Debug, Serialize, Clone)]
155pub struct CreateThreadAndRunRequest {
156 pub assistant_id: String,
158 #[serde(skip_serializing_if = "Option::is_none")]
160 pub thread: Option<CreateThreadRequest>,
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub model: Option<String>,
164 #[serde(skip_serializing_if = "Option::is_none")]
166 pub instructions: Option<String>,
167 #[serde(skip_serializing_if = "Option::is_none")]
169 pub tools: Option<Vec<HashMap<String, String>>>,
170 #[serde(skip_serializing_if = "Option::is_none")]
172 pub metadata: Option<HashMap<String, String>>,
173}
174
175#[derive(Debug, Deserialize, Serialize, Clone)]
177pub struct RunStepObject {
178 pub id: String,
180 pub object: String,
182 pub created_at: i64,
184 pub assistant_id: String,
186 pub thread_id: String,
188 pub run_id: String,
190 #[serde(rename = "type")]
192 pub run_step_type: String,
193 pub status: String,
195 pub step_details: HashMap<String, String>,
197 #[serde(skip_serializing_if = "Option::is_none")]
199 pub last_error: Option<String>,
200 #[serde(skip_serializing_if = "Option::is_none")]
202 pub expires_at: Option<i64>,
203 #[serde(skip_serializing_if = "Option::is_none")]
205 pub started_at: Option<i64>,
206 #[serde(skip_serializing_if = "Option::is_none")]
208 pub cancelled_at: Option<i64>,
209 #[serde(skip_serializing_if = "Option::is_none")]
211 pub failed_at: Option<i64>,
212 #[serde(skip_serializing_if = "Option::is_none")]
214 pub completed_at: Option<i64>,
215 pub metadata: HashMap<String, String>,
217 pub headers: Option<HashMap<String, String>>,
219}
220
221#[derive(Debug, Deserialize, Serialize, Clone)]
223pub struct ListRunStep {
224 pub object: String,
226 pub data: Vec<RunStepObject>,
228 pub first_id: String,
230 pub last_id: String,
232 pub has_more: bool,
234 pub headers: Option<HashMap<String, String>>,
236}