1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::content::Content;
6use crate::enums::JobState;
7use crate::http::{HttpOptions, HttpResponse};
8use crate::models::{EmbedContentConfig, GenerateContentConfig};
9use crate::response::GenerateContentResponse;
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
13#[serde(rename_all = "camelCase")]
14pub struct InlinedRequest {
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub model: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub contents: Option<Vec<Content>>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub metadata: Option<HashMap<String, String>>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub config: Option<GenerateContentConfig>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, Default)]
27#[serde(rename_all = "camelCase")]
28pub struct BatchJobSource {
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub format: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub gcs_uri: Option<Vec<String>>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub bigquery_uri: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub file_name: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub inlined_requests: Option<Vec<InlinedRequest>>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, Default)]
43#[serde(rename_all = "camelCase")]
44pub struct JobError {
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub details: Option<Vec<String>>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub code: Option<i32>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub message: Option<String>,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize, Default)]
55#[serde(rename_all = "camelCase")]
56pub struct InlinedResponse {
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub response: Option<GenerateContentResponse>,
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub metadata: Option<HashMap<String, String>>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub error: Option<JobError>,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, Default)]
68#[serde(rename_all = "camelCase")]
69pub struct SingleEmbedContentResponse {
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub embedding: Option<crate::models::ContentEmbedding>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub token_count: Option<String>,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize, Default)]
78#[serde(rename_all = "camelCase")]
79pub struct InlinedEmbedContentResponse {
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub response: Option<SingleEmbedContentResponse>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub error: Option<JobError>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize, Default)]
88#[serde(rename_all = "camelCase")]
89pub struct BatchJobDestination {
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub format: Option<String>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub gcs_uri: Option<String>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub bigquery_uri: Option<String>,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub file_name: Option<String>,
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub inlined_responses: Option<Vec<InlinedResponse>>,
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub inlined_embed_content_responses: Option<Vec<InlinedEmbedContentResponse>>,
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize, Default)]
106#[serde(rename_all = "camelCase")]
107pub struct CompletionStats {
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub failed_count: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub incomplete_count: Option<String>,
112 #[serde(skip_serializing_if = "Option::is_none")]
113 pub successful_count: Option<String>,
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub successful_forecast_point_count: Option<String>,
116}
117
118#[derive(Debug, Clone, Serialize, Deserialize, Default)]
120#[serde(rename_all = "camelCase")]
121pub struct BatchJob {
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub name: Option<String>,
124 #[serde(skip_serializing_if = "Option::is_none")]
125 pub display_name: Option<String>,
126 #[serde(skip_serializing_if = "Option::is_none")]
127 pub state: Option<JobState>,
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub error: Option<JobError>,
130 #[serde(skip_serializing_if = "Option::is_none")]
131 pub create_time: Option<String>,
132 #[serde(skip_serializing_if = "Option::is_none")]
133 pub start_time: Option<String>,
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub end_time: Option<String>,
136 #[serde(skip_serializing_if = "Option::is_none")]
137 pub update_time: Option<String>,
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub model: Option<String>,
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub src: Option<BatchJobSource>,
142 #[serde(skip_serializing_if = "Option::is_none")]
143 pub dest: Option<BatchJobDestination>,
144 #[serde(skip_serializing_if = "Option::is_none")]
145 pub completion_stats: Option<CompletionStats>,
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize, Default)]
150#[serde(rename_all = "camelCase")]
151pub struct CreateBatchJobConfig {
152 #[serde(skip_serializing, skip_deserializing)]
153 pub http_options: Option<HttpOptions>,
154 #[serde(skip_serializing_if = "Option::is_none")]
155 pub display_name: Option<String>,
156 #[serde(skip_serializing_if = "Option::is_none")]
157 pub dest: Option<BatchJobDestination>,
158}
159
160#[derive(Debug, Clone, Serialize, Deserialize, Default)]
162#[serde(rename_all = "camelCase")]
163pub struct EmbedContentBatch {
164 #[serde(skip_serializing_if = "Option::is_none")]
165 pub contents: Option<Vec<Content>>,
166 #[serde(skip_serializing_if = "Option::is_none")]
167 pub config: Option<EmbedContentConfig>,
168}
169
170#[derive(Debug, Clone, Serialize, Deserialize, Default)]
172#[serde(rename_all = "camelCase")]
173pub struct EmbeddingsBatchJobSource {
174 #[serde(skip_serializing_if = "Option::is_none")]
175 pub file_name: Option<String>,
176 #[serde(skip_serializing_if = "Option::is_none")]
177 pub inlined_requests: Option<EmbedContentBatch>,
178}
179
180#[derive(Debug, Clone, Serialize, Deserialize, Default)]
182#[serde(rename_all = "camelCase")]
183pub struct GetBatchJobConfig {
184 #[serde(skip_serializing, skip_deserializing)]
185 pub http_options: Option<HttpOptions>,
186}
187
188#[derive(Debug, Clone, Serialize, Deserialize, Default)]
190#[serde(rename_all = "camelCase")]
191pub struct CancelBatchJobConfig {
192 #[serde(skip_serializing, skip_deserializing)]
193 pub http_options: Option<HttpOptions>,
194}
195
196#[derive(Debug, Clone, Serialize, Deserialize, Default)]
198#[serde(rename_all = "camelCase")]
199pub struct DeleteBatchJobConfig {
200 #[serde(skip_serializing, skip_deserializing)]
201 pub http_options: Option<HttpOptions>,
202}
203
204#[derive(Debug, Clone, Serialize, Deserialize, Default)]
206#[serde(rename_all = "camelCase")]
207pub struct DeleteResourceJob {
208 #[serde(skip_serializing_if = "Option::is_none")]
210 pub sdk_http_response: Option<HttpResponse>,
211 #[serde(skip_serializing_if = "Option::is_none")]
212 pub name: Option<String>,
213 #[serde(skip_serializing_if = "Option::is_none")]
214 pub done: Option<bool>,
215 #[serde(skip_serializing_if = "Option::is_none")]
216 pub error: Option<JobError>,
217}
218
219#[derive(Debug, Clone, Serialize, Deserialize, Default)]
221#[serde(rename_all = "camelCase")]
222pub struct ListBatchJobsConfig {
223 #[serde(skip_serializing, skip_deserializing)]
224 pub http_options: Option<HttpOptions>,
225 #[serde(skip_serializing_if = "Option::is_none")]
226 pub page_size: Option<i32>,
227 #[serde(skip_serializing_if = "Option::is_none")]
228 pub page_token: Option<String>,
229 #[serde(skip_serializing_if = "Option::is_none")]
230 pub filter: Option<String>,
231}
232
233#[derive(Debug, Clone, Serialize, Deserialize, Default)]
235#[serde(rename_all = "camelCase")]
236pub struct ListBatchJobsResponse {
237 #[serde(skip_serializing_if = "Option::is_none")]
239 pub sdk_http_response: Option<HttpResponse>,
240 #[serde(skip_serializing_if = "Option::is_none")]
241 pub batch_jobs: Option<Vec<BatchJob>>,
242 #[serde(skip_serializing_if = "Option::is_none")]
243 pub next_page_token: Option<String>,
244}