Skip to main content

gproxy_protocol/gemini/model_list/
request.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::gemini::types::HttpMethod;
6
7/// Request descriptor for Gemini `models.list` endpoint.
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct GeminiModelListRequest {
10    /// HTTP method.
11    pub method: HttpMethod,
12    /// Path parameters.
13    pub path: PathParameters,
14    /// Query parameters.
15    pub query: QueryParameters,
16    /// Request headers.
17    pub headers: RequestHeaders,
18    /// Request body (currently empty by spec).
19    pub body: RequestBody,
20}
21
22impl Default for GeminiModelListRequest {
23    fn default() -> Self {
24        Self {
25            method: HttpMethod::Get,
26            path: PathParameters::default(),
27            query: QueryParameters::default(),
28            headers: RequestHeaders::default(),
29            body: RequestBody::default(),
30        }
31    }
32}
33
34/// `models.list` does not define path params.
35#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
36pub struct PathParameters {}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
39pub struct QueryParameters {
40    /// Maximum number of models to return (default 50, max 1000).
41    #[serde(rename = "pageSize", default, skip_serializing_if = "Option::is_none")]
42    pub page_size: Option<u32>,
43    /// Token from previous page response.
44    #[serde(rename = "pageToken", default, skip_serializing_if = "Option::is_none")]
45    pub page_token: Option<String>,
46}
47
48/// Proxy-side request model does not carry auth headers.
49#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
50pub struct RequestHeaders {
51    #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
52    pub extra: BTreeMap<String, String>,
53}
54
55/// `models.list` request has no JSON body.
56#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
57pub struct RequestBody {}