use crate::openrouter_http::ApiError;
use serde::{Deserialize, Serialize};
#[derive(Serialize)]
pub(super) struct EmbeddingRequest<'a> {
pub(super) model: &'a str,
pub(super) input: EmbeddingInput<'a>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(super) dimensions: Option<usize>,
pub(super) encoding_format: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub(super) input_type: Option<&'a str>,
}
#[derive(Serialize)]
#[serde(untagged)]
pub(super) enum EmbeddingInput<'a> {
Single(&'a str),
Batch(Vec<&'a str>),
}
#[derive(Deserialize)]
pub(super) struct EmbeddingResponse {
pub(super) data: Vec<EmbeddingData>,
}
#[derive(Deserialize)]
pub(super) struct EmbeddingData {
pub(super) embedding: Vec<f32>,
pub(super) index: usize,
}
#[derive(Deserialize)]
pub(super) struct EmbeddingEnvelope {
#[serde(default)]
pub(super) data: Option<Vec<EmbeddingData>>,
#[serde(default)]
pub(super) error: Option<ApiError>,
}