1use super::thread::CreateThreadRequest;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use std::collections::HashMap;
5
6use super::types;
7use crate::impl_builder_methods;
8
9#[derive(Debug, Serialize, Clone)]
10pub struct CreateRunRequest {
11 assistant_id: String,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub model: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub instructions: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub tools: Option<Vec<HashMap<String, String>>>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub metadata: Option<HashMap<String, String>>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub response_format: Option<Value>, }
23
24impl CreateRunRequest {
25 pub fn new(assistant_id: String) -> Self {
26 Self {
27 assistant_id,
28 model: None,
29 instructions: None,
30 tools: None,
31 metadata: None,
32 response_format: None,
33 }
34 }
35}
36
37impl_builder_methods!(
38 CreateRunRequest,
39 model: String,
40 instructions: String,
41 tools: Vec<HashMap<String, String>>,
42 metadata: HashMap<String, String>,
43 response_format: Value
44);
45
46#[derive(Debug, Serialize, Clone)]
47pub struct ModifyRunRequest {
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub metadata: Option<HashMap<String, String>>,
50}
51
52impl ModifyRunRequest {
53 pub fn new() -> Self {
54 Self { metadata: None }
55 }
56}
57
58impl Default for ModifyRunRequest {
59 fn default() -> Self {
60 Self::new()
61 }
62}
63
64impl_builder_methods!(
65 ModifyRunRequest,
66 metadata: HashMap<String, String>
67);
68
69#[derive(Debug, Deserialize, Serialize, Clone)]
70pub struct LastError {
71 pub code: String,
72 pub message: String,
73}
74
75#[derive(Debug, Deserialize, Serialize)]
76pub struct RunObject {
77 pub id: String,
78 pub object: String,
79 pub created_at: i64,
80 pub thread_id: String,
81 pub assistant_id: String,
82 pub status: String,
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub required_action: Option<HashMap<String, String>>,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 pub last_error: Option<LastError>,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub expires_at: Option<i64>,
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub started_at: Option<i64>,
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub cancelled_at: Option<i64>,
93 #[serde(skip_serializing_if = "Option::is_none")]
94 pub failed_at: Option<i64>,
95 #[serde(skip_serializing_if = "Option::is_none")]
96 pub completed_at: Option<i64>,
97 pub model: String,
98 pub instructions: Option<String>,
99 pub tools: Vec<types::Tools>,
100 pub metadata: HashMap<String, String>,
101}
102
103#[derive(Debug, Deserialize, Serialize)]
104pub struct ListRun {
105 pub object: String,
106 pub data: Vec<RunObject>,
107 pub first_id: String,
108 pub last_id: String,
109 pub has_more: bool,
110}
111
112#[derive(Debug, Serialize, Clone)]
113pub struct CreateThreadAndRunRequest {
114 pub assistant_id: String,
115 #[serde(skip_serializing_if = "Option::is_none")]
116 pub thread: Option<CreateThreadRequest>,
117 #[serde(skip_serializing_if = "Option::is_none")]
118 pub model: Option<String>,
119 #[serde(skip_serializing_if = "Option::is_none")]
120 pub instructions: Option<String>,
121 #[serde(skip_serializing_if = "Option::is_none")]
122 pub tools: Option<Vec<HashMap<String, String>>>,
123 #[serde(skip_serializing_if = "Option::is_none")]
124 pub metadata: Option<HashMap<String, String>>,
125}
126
127#[derive(Debug, Deserialize, Serialize, Clone)]
128pub struct RunStepObject {
129 pub id: String,
130 pub object: String,
131 pub created_at: i64,
132 pub assistant_id: String,
133 pub thread_id: String,
134 pub run_id: String,
135 #[serde(rename = "type")]
136 pub run_step_type: String,
137 pub status: String,
138 pub step_details: HashMap<String, String>,
139 #[serde(skip_serializing_if = "Option::is_none")]
140 pub last_error: Option<LastError>,
141 #[serde(skip_serializing_if = "Option::is_none")]
142 pub expires_at: Option<i64>,
143 #[serde(skip_serializing_if = "Option::is_none")]
144 pub started_at: Option<i64>,
145 #[serde(skip_serializing_if = "Option::is_none")]
146 pub cancelled_at: Option<i64>,
147 #[serde(skip_serializing_if = "Option::is_none")]
148 pub failed_at: Option<i64>,
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub completed_at: Option<i64>,
151 pub metadata: HashMap<String, String>,
152}
153
154#[derive(Debug, Deserialize, Serialize, Clone)]
155pub struct ListRunStep {
156 pub object: String,
157 pub data: Vec<RunStepObject>,
158 pub first_id: String,
159 pub last_id: String,
160 pub has_more: bool,
161}