Skip to main content

gproxy_protocol/gemini/
models.rs

1use serde::{Deserialize, Serialize};
2
3use super::common::SupportedGenerationMethod;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6#[serde(rename_all = "camelCase")]
7#[derive(gproxy_protocol_macros::WireBuilder)]
8#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
9pub struct ListModelsRequest {
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub page_size: Option<i32>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub page_token: Option<String>,
14    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
15    pub rest: serde_json::Map<String, serde_json::Value>,
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
19#[serde(rename_all = "camelCase")]
20#[derive(gproxy_protocol_macros::WireBuilder)]
21#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
22pub struct ListModelsResponse {
23    #[serde(default, skip_serializing_if = "Vec::is_empty")]
24    pub models: Vec<Model>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub next_page_token: Option<String>,
27    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
28    pub rest: serde_json::Map<String, serde_json::Value>,
29}
30
31#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
32#[serde(rename_all = "camelCase")]
33#[derive(gproxy_protocol_macros::WireBuilder)]
34#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
35pub struct GetModelRequest {
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub name: Option<String>,
38    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
39    pub rest: serde_json::Map<String, serde_json::Value>,
40}
41
42#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
43#[serde(rename_all = "camelCase")]
44#[derive(gproxy_protocol_macros::WireBuilder)]
45#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
46pub struct Model {
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub name: Option<String>,
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub base_model_id: Option<String>,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub version: Option<String>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub display_name: Option<String>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub description: Option<String>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub input_token_limit: Option<i32>,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub output_token_limit: Option<i32>,
61    #[serde(default, skip_serializing_if = "Vec::is_empty")]
62    pub supported_generation_methods: Vec<SupportedGenerationMethod>,
63    #[serde(default, skip_serializing_if = "Vec::is_empty")]
64    pub supported_actions: Vec<SupportedGenerationMethod>,
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub thinking: Option<bool>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub temperature: Option<f64>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub max_temperature: Option<f64>,
71    #[serde(skip_serializing_if = "Option::is_none")]
72    pub top_p: Option<f64>,
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub top_k: Option<i32>,
75    #[serde(default, skip_serializing_if = "serde_json::Map::is_empty", flatten)]
76    pub rest: serde_json::Map<String, serde_json::Value>,
77}