Skip to main content

gproxy_protocol/gemini/batch/
generation.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::{GenerateContentRequest, GenerateContentResponse, JsonMap, Status};
4use super::{BatchOperation, BatchResourceFields};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7#[serde(rename_all = "camelCase")]
8#[derive(gproxy_protocol_macros::WireBuilder)]
9#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
10pub struct BatchGenerateContentRequest {
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub batch: Option<GenerateContentBatch>,
13    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
14    pub rest: JsonMap,
15}
16
17pub type BatchGenerateContentResponse = BatchOperation;
18
19#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
20#[serde(rename_all = "camelCase")]
21#[derive(gproxy_protocol_macros::WireBuilder)]
22#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
23pub struct UpdateGenerateContentBatchQuery {
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub update_mask: Option<String>,
26    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
27    pub rest: JsonMap,
28}
29
30#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
31#[serde(rename_all = "camelCase")]
32#[derive(gproxy_protocol_macros::WireBuilder)]
33#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
34pub struct GenerateContentBatch {
35    #[serde(flatten)]
36    pub resource: BatchResourceFields,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub input_config: Option<GenerateContentInputConfig>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub output: Option<GenerateContentBatchOutput>,
41    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
42    pub rest: JsonMap,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
46#[serde(rename_all = "camelCase")]
47#[derive(gproxy_protocol_macros::WireBuilder)]
48#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
49pub struct GenerateContentInputConfig {
50    #[serde(flatten, skip_serializing_if = "Option::is_none")]
51    pub source: Option<GenerateContentInputSource>,
52    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
53    pub rest: JsonMap,
54}
55
56#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
57#[serde(untagged)]
58#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
59pub enum GenerateContentInputSource {
60    File {
61        #[serde(rename = "fileName")]
62        file_name: String,
63    },
64    Requests {
65        requests: InlinedGenerateRequests,
66    },
67}
68
69#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
70#[serde(rename_all = "camelCase")]
71#[derive(gproxy_protocol_macros::WireBuilder)]
72#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
73pub struct InlinedGenerateRequests {
74    #[serde(default, skip_serializing_if = "Vec::is_empty")]
75    pub requests: Vec<InlinedGenerateRequest>,
76    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
77    pub rest: JsonMap,
78}
79
80#[derive(
81    Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
82)]
83#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
84pub struct InlinedGenerateRequest {
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub request: Option<GenerateContentRequest>,
87    #[serde(skip_serializing_if = "Option::is_none")]
88    pub metadata: Option<JsonMap>,
89    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
90    pub rest: JsonMap,
91}
92
93#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
94#[serde(rename_all = "camelCase")]
95#[derive(gproxy_protocol_macros::WireBuilder)]
96#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
97pub struct GenerateContentBatchOutput {
98    #[serde(flatten, skip_serializing_if = "Option::is_none")]
99    pub output: Option<GenerateContentBatchOutputData>,
100    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
101    pub rest: JsonMap,
102}
103
104#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
105#[serde(untagged)]
106#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
107pub enum GenerateContentBatchOutputData {
108    ResponsesFile {
109        #[serde(rename = "responsesFile")]
110        responses_file: String,
111    },
112    InlinedResponses {
113        #[serde(rename = "inlinedResponses")]
114        inlined_responses: InlinedGenerateResponses,
115    },
116}
117
118#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
119#[serde(rename_all = "camelCase")]
120#[derive(gproxy_protocol_macros::WireBuilder)]
121#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
122pub struct InlinedGenerateResponses {
123    #[serde(default, skip_serializing_if = "Vec::is_empty")]
124    pub inlined_responses: Vec<InlinedGenerateResponse>,
125    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
126    pub rest: JsonMap,
127}
128
129#[derive(
130    Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
131)]
132#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
133pub struct InlinedGenerateResponse {
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub metadata: Option<JsonMap>,
136    #[serde(flatten, skip_serializing_if = "Option::is_none")]
137    pub output: Option<InlinedGenerateResponseOutput>,
138    #[serde(default, flatten, skip_serializing_if = "JsonMap::is_empty")]
139    pub rest: JsonMap,
140}
141
142#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
143#[serde(untagged)]
144#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
145pub enum InlinedGenerateResponseOutput {
146    Error {
147        error: Status,
148    },
149    Response {
150        response: Box<GenerateContentResponse>,
151    },
152}
153
154pub type BatchGenerateContentRequestBody = BatchGenerateContentRequest;
155pub type BatchGenerateContentResponseBody = BatchGenerateContentResponse;
156pub type UpdateGenerateContentBatchRequestBody = GenerateContentBatch;
157pub type UpdateGenerateContentBatchResponseBody = GenerateContentBatch;
158pub type InputConfig = GenerateContentInputConfig;
159pub type InputConfigSource = GenerateContentInputSource;
160pub type InlinedRequests = InlinedGenerateRequests;
161pub type InlinedRequest = InlinedGenerateRequest;
162pub type InlinedResponses = InlinedGenerateResponses;
163pub type InlinedResponse = InlinedGenerateResponse;
164pub type InlinedResponseOutput = InlinedGenerateResponseOutput;