gproxy_protocol/wire/gemini/
models.rs1use serde::{Deserialize, Serialize};
2
3use crate::{Rest, WireRequest, WireResponse};
4
5#[derive(
9 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
10)]
11#[serde(rename_all = "camelCase")]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13#[derive(gproxy_protocol_macros::DeclaredFields)]
14pub struct ListModelsQuery {
15 #[serde(skip_serializing_if = "Option::is_none")]
16 #[serde(alias = "page_size")]
17 pub page_size: Option<i64>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 #[serde(alias = "page_token")]
20 pub page_token: Option<String>,
21 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
22 pub rest: Rest,
23}
24
25pub type ListModelsRequest = WireRequest<()>;
26pub type GetModelRequest = WireRequest<()>;
27
28#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
29#[serde(rename_all = "camelCase")]
30#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
31#[derive(gproxy_protocol_macros::DeclaredFields)]
32pub struct ListModelsResponseBody {
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub models: Option<Vec<Model>>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 #[serde(alias = "next_page_token")]
37 pub next_page_token: Option<String>,
38 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
39 pub rest: Rest,
40}
41
42pub type ListModelsResponse = WireResponse<ListModelsResponseBody>;
43pub type GetModelResponse = WireResponse<Model>;
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
46#[serde(rename_all = "camelCase")]
47#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
48#[derive(gproxy_protocol_macros::DeclaredFields)]
49pub struct Model {
50 pub name: String,
51 #[serde(alias = "base_model_id")]
52 pub base_model_id: String,
53 #[serde(default, skip_serializing_if = "String::is_empty")]
54 pub version: String,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 #[serde(alias = "display_name")]
57 pub display_name: Option<String>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub description: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 #[serde(alias = "input_token_limit")]
62 pub input_token_limit: Option<i64>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 #[serde(alias = "output_token_limit")]
65 pub output_token_limit: Option<i64>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 #[serde(alias = "supported_generation_methods")]
68 pub supported_generation_methods: Option<Vec<String>>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub thinking: Option<bool>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub temperature: Option<f64>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 #[serde(alias = "max_temperature")]
75 pub max_temperature: Option<f64>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 #[serde(alias = "top_p")]
78 pub top_p: Option<f64>,
79 #[serde(skip_serializing_if = "Option::is_none")]
80 #[serde(alias = "top_k")]
81 pub top_k: Option<i64>,
82 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
83 pub rest: Rest,
84}