Skip to main content

gproxy_protocol/gemini/embeddings/
response.rs

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