gproxy_protocol/wire/openai/
models.rs1use serde::{Deserialize, Serialize};
2
3use crate::Rest;
4
5pub type ListModelsRequest = crate::WireRequest<()>;
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
10#[serde(rename_all = "snake_case")]
11#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
12#[derive(gproxy_protocol_macros::DeclaredFields)]
13pub enum ListObject {
14 List,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
20#[derive(gproxy_protocol_macros::DeclaredFields)]
21pub enum ModelObject {
22 Model,
23}
24
25pub type GetModelRequest = crate::WireRequest<()>;
26
27#[derive(
28 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
29)]
30#[serde(rename_all = "snake_case")]
31#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
32#[derive(gproxy_protocol_macros::DeclaredFields)]
33pub struct ListModelsResponseBody {
34 pub data: Vec<Model>,
35 pub object: ListObject,
36 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
37 pub rest: Rest,
38}
39
40pub type ListModelsResponse = crate::WireResponse<ListModelsResponseBody>;
41pub type GetModelResponse = crate::WireResponse<Model>;
42
43#[derive(
44 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
45)]
46#[serde(rename_all = "snake_case")]
47#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
48#[derive(gproxy_protocol_macros::DeclaredFields)]
49pub struct Model {
50 pub id: String,
51 #[wire(required)]
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub created: Option<i64>,
55 pub object: ModelObject,
56 #[wire(required)]
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub owned_by: Option<String>,
59
60 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub display_name: Option<String>,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub description: Option<String>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub instructions: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub context_window: Option<u64>,
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub max_context_window: Option<u64>,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
72 pub max_output_tokens: Option<u64>,
73 #[serde(default, skip_serializing_if = "Option::is_none")]
74 pub thinking_supported: Option<bool>,
75 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub input_modalities: Option<Vec<String>>,
77 #[serde(default, skip_serializing_if = "Option::is_none")]
78 pub output_modalities: Option<Vec<String>>,
79 #[serde(default, skip_serializing_if = "Option::is_none")]
80 pub supported_parameters: Option<Vec<String>>,
81 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub supported_reasoning_levels: Option<Vec<ModelReasoningLevel>>,
83 #[serde(default, skip_serializing_if = "Option::is_none")]
84 pub default_reasoning_level: Option<String>,
85 #[serde(default, skip_serializing_if = "Option::is_none")]
86 pub service_tiers: Option<Vec<ModelServiceTier>>,
87 #[serde(default, skip_serializing_if = "Option::is_none")]
88 pub default_service_tier: Option<String>,
89 #[serde(default, skip_serializing_if = "Option::is_none")]
90 pub generation_methods: Option<Vec<String>>,
91 #[serde(default, skip_serializing_if = "Option::is_none")]
92 pub supported_actions: Option<Vec<String>>,
93 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
94 pub rest: Rest,
95}
96
97#[derive(
98 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::DeclaredFields,
99)]
100pub struct ModelReasoningLevel {
101 pub effort: String,
102 pub description: String,
103}
104#[derive(
105 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::DeclaredFields,
106)]
107pub struct ModelServiceTier {
108 pub id: String,
109 pub name: String,
110 pub description: String,
111}