openai_api_rs/v1/
run.rs

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>, // 1: json!("auto"), 2: json!({"type": "json_object"})
22}
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}