gproxy_protocol/gemini/
models.rs1use 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}