openrouter_rs/types/
mod.rs

1pub mod completion;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, Debug)]
6pub struct ApiResponse<T> {
7    pub data: T,
8}
9
10#[derive(Serialize, Deserialize, Debug, Clone)]
11#[serde(rename_all = "lowercase")]
12pub enum Role {
13    System,
14    Developer,
15    User,
16    Assistant,
17    Tool,
18}
19
20impl ToString for Role {
21    fn to_string(&self) -> String {
22        match self {
23            Role::System => "system".to_string(),
24            Role::Developer => "developer".to_string(),
25            Role::User => "user".to_string(),
26            Role::Assistant => "assistant".to_string(),
27            Role::Tool => "tool".to_string(),
28        }
29    }
30}
31
32#[derive(Serialize, Deserialize, Debug, Clone)]
33#[serde(rename_all = "lowercase")]
34pub enum Effort {
35    High,
36    Medium,
37    Low,
38}
39
40impl ToString for Effort {
41    fn to_string(&self) -> String {
42        match self {
43            Effort::High => "high".to_string(),
44            Effort::Medium => "medium".to_string(),
45            Effort::Low => "low".to_string(),
46        }
47    }
48}
49
50#[derive(Serialize, Deserialize, Debug, Clone)]
51pub struct ProviderPreferences {
52    sort: Option<String>,
53}
54
55#[derive(Serialize, Deserialize, Debug, Clone)]
56pub struct ReasoningConfig {
57    effort: Option<Effort>,
58    max_tokens: Option<u32>,
59    exclude: Option<bool>,
60}