Skip to main content

gproxy_protocol/gemini/batch_embed_contents/
response.rs

1use http::StatusCode;
2use serde::{Deserialize, Serialize};
3
4use crate::gemini::batch_embed_contents::types::GeminiContentEmbedding;
5use crate::gemini::types::{GeminiApiErrorResponse, GeminiResponseHeaders};
6
7/// Successful response body for `models.batchEmbedContents`.
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9pub struct ResponseBody {
10    /// Embeddings for each input request, preserving order.
11    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12    pub embeddings: Vec<GeminiContentEmbedding>,
13}
14
15/// Full HTTP response for Gemini `models.batchEmbedContents` endpoint.
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
17#[serde(untagged)]
18pub enum GeminiBatchEmbedContentsResponse {
19    Success {
20        /// HTTP status code returned by server (should be `200 OK`).
21        #[serde(with = "crate::gemini::types::status_code_serde")]
22        stats_code: StatusCode,
23        /// Response headers.
24        headers: GeminiResponseHeaders,
25        /// Successful body.
26        body: ResponseBody,
27    },
28    Error {
29        /// HTTP status code returned by server (typically non-2xx).
30        #[serde(with = "crate::gemini::types::status_code_serde")]
31        stats_code: StatusCode,
32        /// Response headers.
33        headers: GeminiResponseHeaders,
34        /// Error body.
35        body: GeminiApiErrorResponse,
36    },
37}