gproxy_protocol/protocol/gemini/caching/
mod.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::common::{Content, ExtraFields, JsonMap, Tool, ToolConfig};
6
7pub type CreateCachedContentRequestBody = CachedContent;
8pub type CreateCachedContentResponseBody = CachedContent;
9pub type GetCachedContentResponseBody = CachedContent;
10pub type UpdateCachedContentRequestBody = CachedContent;
11pub type UpdateCachedContentResponseBody = CachedContent;
12pub type DeleteCachedContentResponseBody = JsonMap;
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
15#[serde(rename_all = "camelCase")]
16pub struct CachedContent {
17 #[serde(default, skip_serializing_if = "Vec::is_empty")]
18 pub contents: Vec<Content>,
19 #[serde(default, skip_serializing_if = "Vec::is_empty")]
20 pub tools: Vec<Tool>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub create_time: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub update_time: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub usage_metadata: Option<CachedContentUsageMetadata>,
27 #[serde(flatten, skip_serializing_if = "Option::is_none")]
28 pub expiration: Option<CachedContentExpiration>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub name: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub display_name: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub model: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub system_instruction: Option<Content>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub tool_config: Option<ToolConfig>,
39 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
40 pub extra: ExtraFields,
41}
42
43#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
44#[serde(untagged)]
45pub enum CachedContentExpiration {
46 ExpireTime {
47 #[serde(rename = "expireTime")]
48 expire_time: String,
49 },
50 Ttl {
51 ttl: String,
52 },
53}
54
55#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
56#[serde(rename_all = "camelCase")]
57pub struct CachedContentUsageMetadata {
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub total_token_count: Option<i32>,
60 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
61 pub extra: ExtraFields,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
65#[serde(rename_all = "camelCase")]
66pub struct ListCachedContentsRequest {
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub page_size: Option<i32>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub page_token: Option<String>,
71 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
72 pub extra: ExtraFields,
73}
74
75#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
76#[serde(rename_all = "camelCase")]
77pub struct ListCachedContentsResponseBody {
78 #[serde(default, skip_serializing_if = "Vec::is_empty")]
79 pub cached_contents: Vec<CachedContent>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub next_page_token: Option<String>,
82 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
83 pub extra: ExtraFields,
84}
85
86#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
87#[serde(rename_all = "camelCase")]
88pub struct GetCachedContentRequest {
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub name: Option<String>,
91 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
92 pub extra: ExtraFields,
93}
94
95#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
96#[serde(rename_all = "camelCase")]
97pub struct UpdateCachedContentQuery {
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub update_mask: Option<String>,
100 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
101 pub extra: ExtraFields,
102}
103
104#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
105#[serde(rename_all = "camelCase")]
106pub struct DeleteCachedContentRequest {
107 #[serde(skip_serializing_if = "Option::is_none")]
108 pub name: Option<String>,
109 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
110 pub extra: ExtraFields,
111}