use crate::{Rest, WireRequest, WireResponse};
use serde::{Deserialize, Serialize};
pub type CreateVoiceRequest = WireRequest<CreateVoiceRequestBody>;
pub type CreateVoiceResponse = WireResponse<Voice>;
pub type ListVoicesRequest = WireRequest<()>;
pub type ListVoicesResponse = WireResponse<ListVoicesResponseBody>;
pub type GetVoiceRequest = WireRequest<()>;
pub type GetVoiceResponse = WireResponse<Voice>;
pub type DeleteVoiceRequest = WireRequest<()>;
pub type DeleteVoiceResponse = WireResponse<DeleteVoiceResponseBody>;
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct CreateVoiceRequestBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub store: Option<bool>,
pub voice: Voice,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct ListVoicesResponseBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub voices: Option<Vec<Voice>>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct DeleteVoiceResponseBody {
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct Voice {
#[serde(skip_serializing_if = "Option::is_none")]
pub accent: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expire_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub persona: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pitch: Option<Pitch>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompted: Option<PromptedVoice>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub replicated: Option<ReplicatedVoice>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sample_audio: Option<AudioData>,
#[serde(rename = "type")]
pub type_: VoiceType,
#[serde(skip_serializing_if = "Option::is_none")]
pub usage: Option<Usage>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
Serialize,
Deserialize,
gproxy_protocol_macros::DeclaredFields,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum Pitch {
Low,
Medium,
High,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct PromptedVoice {
pub input: String,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct ReplicatedVoice {
pub consent_audio: AudioData,
pub source_audio: AudioData,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct AudioData {
pub data: String,
pub mime_type: String,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
Serialize,
Deserialize,
gproxy_protocol_macros::DeclaredFields,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum VoiceType {
Replicated,
Prompted,
Prebuilt,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct Usage {
#[serde(skip_serializing_if = "Option::is_none")]
pub cached_tokens_by_modality: Option<Vec<ModalityTokens>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub grounding_tool_count: Option<Vec<GroundingToolCount>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_tokens_by_modality: Option<Vec<ModalityTokens>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_tokens_by_modality: Option<Vec<ModalityTokens>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_use_tokens_by_modality: Option<Vec<ModalityTokens>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_cached_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_input_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_output_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_thought_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_tool_use_tokens: Option<i64>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct ModalityTokens {
#[serde(skip_serializing_if = "Option::is_none")]
pub modality: Option<ResponseModality>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tokens: Option<i64>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct GroundingToolCount {
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "type")]
pub type_: Option<GroundingToolType>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
Serialize,
Deserialize,
gproxy_protocol_macros::DeclaredFields,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum ResponseModality {
Text,
Image,
Audio,
Video,
Document,
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
Serialize,
Deserialize,
gproxy_protocol_macros::DeclaredFields,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum GroundingToolType {
GoogleSearch,
GoogleMaps,
Retrieval,
}
#[derive(
Debug,
Clone,
PartialEq,
Serialize,
Deserialize,
gproxy_protocol_macros::WireBuilder,
gproxy_protocol_macros::DeclaredFields,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct ListVoicesQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub accent: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub persona: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pitch: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region_code: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "type")]
pub type_: Option<Vec<String>>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: Rest,
}