use super::thread::CreateThreadRequest; use serde::{Deserialize, Serialize}; use serde_json::Value; use std::collections::HashMap; use super::types; use crate::impl_builder_methods; #[derive(Debug, Serialize, Clone)] pub struct CreateRunRequest { assistant_id: String, #[serde(skip_serializing_if = "Option::is_none")] pub model: Option, #[serde(skip_serializing_if = "Option::is_none")] pub instructions: Option, #[serde(skip_serializing_if = "Option::is_none")] pub tools: Option>>, #[serde(skip_serializing_if = "Option::is_none")] pub metadata: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub response_format: Option, // 1: json!("auto"), 2: json!({"type": "json_object"}) } impl CreateRunRequest { pub fn new(assistant_id: String) -> Self { Self { assistant_id, model: None, instructions: None, tools: None, metadata: None, response_format: None, } } } impl_builder_methods!( CreateRunRequest, model: String, instructions: String, tools: Vec>, metadata: HashMap, response_format: Value ); #[derive(Debug, Serialize, Clone)] pub struct ModifyRunRequest { #[serde(skip_serializing_if = "Option::is_none")] pub metadata: Option>, } impl ModifyRunRequest { pub fn new() -> Self { Self { metadata: None } } } impl Default for ModifyRunRequest { fn default() -> Self { Self::new() } } impl_builder_methods!( ModifyRunRequest, metadata: HashMap ); #[derive(Debug, Deserialize, Serialize, Clone)] pub struct LastError { pub code: String, pub message: String, } #[derive(Debug, Deserialize, Serialize)] pub struct RunObject { pub id: String, pub object: String, pub created_at: i64, pub thread_id: String, pub assistant_id: String, pub status: String, #[serde(skip_serializing_if = "Option::is_none")] pub required_action: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub last_error: Option, #[serde(skip_serializing_if = "Option::is_none")] pub expires_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub started_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub cancelled_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub failed_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub completed_at: Option, pub model: String, pub instructions: Option, pub tools: Vec, pub metadata: HashMap, } #[derive(Debug, Deserialize, Serialize)] pub struct ListRun { pub object: String, pub data: Vec, pub first_id: String, pub last_id: String, pub has_more: bool, } #[derive(Debug, Serialize, Clone)] pub struct CreateThreadAndRunRequest { pub assistant_id: String, #[serde(skip_serializing_if = "Option::is_none")] pub thread: Option, #[serde(skip_serializing_if = "Option::is_none")] pub model: Option, #[serde(skip_serializing_if = "Option::is_none")] pub instructions: Option, #[serde(skip_serializing_if = "Option::is_none")] pub tools: Option>>, #[serde(skip_serializing_if = "Option::is_none")] pub metadata: Option>, } #[derive(Debug, Deserialize, Serialize, Clone)] pub struct RunStepObject { pub id: String, pub object: String, pub created_at: i64, pub assistant_id: String, pub thread_id: String, pub run_id: String, #[serde(rename = "type")] pub run_step_type: String, pub status: String, pub step_details: HashMap, #[serde(skip_serializing_if = "Option::is_none")] pub last_error: Option, #[serde(skip_serializing_if = "Option::is_none")] pub expires_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub started_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub cancelled_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub failed_at: Option, #[serde(skip_serializing_if = "Option::is_none")] pub completed_at: Option, pub metadata: HashMap, } #[derive(Debug, Deserialize, Serialize, Clone)] pub struct ListRunStep { pub object: String, pub data: Vec, pub first_id: String, pub last_id: String, pub has_more: bool, }