use std::collections::HashMap;
use crate::base64_serde;
use crate::config::{GenerationConfig, ModelArmorConfig, SafetySetting};
use crate::content::Content;
use crate::enums::{
ControlReferenceType, EditMode, ImagePromptLanguage, MaskReferenceMode, PersonGeneration,
ReferenceImageType, SafetyFilterLevel, SegmentMode, SubjectReferenceType,
VideoCompressionQuality, VideoGenerationMaskMode, VideoGenerationReferenceType,
};
use crate::http::{HttpOptions, HttpResponse};
use crate::operations::OperationError;
use crate::tool::{Tool, ToolConfig};
use crate::webhooks::WebhookConfig;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateContentConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub system_instruction: Option<Content>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generation_config: Option<GenerationConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_settings: Option<Vec<SafetySetting>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model_armor_config: Option<ModelArmorConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<Tool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_config: Option<ToolConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub automatic_function_calling: Option<AutomaticFunctionCallingConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cached_content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(skip_serializing, skip_deserializing)]
pub should_return_http_response: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GenerateContentRequest {
pub contents: Vec<Content>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_instruction: Option<Content>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generation_config: Option<GenerationConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_settings: Option<Vec<SafetySetting>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model_armor_config: Option<ModelArmorConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<Tool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_config: Option<ToolConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cached_content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AutomaticFunctionCallingConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub disable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maximum_remote_calls: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_call_history: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CountTokensConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub system_instruction: Option<Content>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<Tool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generation_config: Option<GenerationConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CountTokensRequest {
pub contents: Vec<Content>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_instruction: Option<Content>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<Tool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generation_config: Option<GenerationConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CountTokensResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_tokens: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cached_content_token_count: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ComputeTokensConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ComputeTokensRequest {
pub contents: Vec<Content>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct TokensInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_ids: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tokens: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ComputeTokensResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tokens_info: Option<Vec<TokensInfo>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct EmbedContentConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub task_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_dimensionality: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_truncate: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContentEmbeddingStatistics {
#[serde(skip_serializing_if = "Option::is_none")]
pub truncated: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_count: Option<f32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContentEmbedding {
#[serde(skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<f32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statistics: Option<ContentEmbeddingStatistics>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EmbedContentMetadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub billable_character_count: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EmbedContentResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub embeddings: Option<Vec<ContentEmbedding>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<EmbedContentMetadata>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Model {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_token_limit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_token_limit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub supported_actions: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ListModelsConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query_base: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListModelsResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub models: Option<Vec<Model>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UpdateModelConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_checkpoint_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DeleteModelConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DeleteModelResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateImagesConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_gcs_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub negative_prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number_of_images: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aspect_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub guidance_scale: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seed: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_filter_level: Option<SafetyFilterLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person_generation: Option<PersonGeneration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_safety_attributes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_rai_reason: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<ImagePromptLanguage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_mime_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_compression_quality: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub add_watermark: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enhance_prompt: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Image {
#[serde(skip_serializing_if = "Option::is_none")]
pub gcs_uri: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "bytesBase64Encoded",
with = "base64_serde::option"
)]
pub image_bytes: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SafetyAttributes {
#[serde(skip_serializing_if = "Option::is_none")]
pub categories: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scores: Option<Vec<f32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GeneratedImage {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rai_filtered_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_attributes: Option<SafetyAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enhanced_prompt: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateImagesResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(default)]
pub generated_images: Vec<GeneratedImage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub positive_prompt_safety_attributes: Option<SafetyAttributes>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct MaskReferenceConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_mode: Option<MaskReferenceMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub segmentation_classes: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_dilation: Option<f32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ControlReferenceConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub control_type: Option<ControlReferenceType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_control_image_computation: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct StyleReferenceConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub style_description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SubjectReferenceConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub subject_type: Option<SubjectReferenceType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject_description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ReferenceImage {
#[serde(skip_serializing_if = "Option::is_none")]
pub reference_image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reference_id: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reference_type: Option<ReferenceImageType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_image_config: Option<MaskReferenceConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub control_image_config: Option<ControlReferenceConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub style_image_config: Option<StyleReferenceConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject_image_config: Option<SubjectReferenceConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct EditImageConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_gcs_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub negative_prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number_of_images: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aspect_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub guidance_scale: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seed: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_filter_level: Option<SafetyFilterLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person_generation: Option<PersonGeneration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_safety_attributes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_rai_reason: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<ImagePromptLanguage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_mime_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_compression_quality: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub add_watermark: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub edit_mode: Option<EditMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base_steps: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct EditImageResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(default)]
pub generated_images: Vec<GeneratedImage>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UpscaleImageConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_gcs_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_filter_level: Option<SafetyFilterLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person_generation: Option<PersonGeneration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_rai_reason: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_mime_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_compression_quality: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enhance_input_image: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_preservation_factor: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number_of_images: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UpscaleImageResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sdk_http_response: Option<HttpResponse>,
#[serde(default)]
pub generated_images: Vec<GeneratedImage>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ProductImage {
#[serde(skip_serializing_if = "Option::is_none")]
pub product_image: Option<Image>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RecontextImageSource {
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person_image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub product_images: Option<Vec<ProductImage>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RecontextImageConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number_of_images: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base_steps: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_gcs_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seed: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_filter_level: Option<SafetyFilterLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person_generation: Option<PersonGeneration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub add_watermark: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_mime_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_compression_quality: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enhance_prompt: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RecontextImageResponse {
#[serde(default)]
pub generated_images: Vec<GeneratedImage>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ScribbleImage {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Image>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SegmentImageSource {
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scribble_image: Option<ScribbleImage>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SegmentImageConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<SegmentMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_predictions: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub confidence_threshold: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_dilation: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binary_color_threshold: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct EntityLabel {
#[serde(skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub score: Option<f32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GeneratedImageMask {
#[serde(skip_serializing_if = "Option::is_none")]
pub mask: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<Vec<EntityLabel>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SegmentImageResponse {
#[serde(default)]
pub generated_masks: Vec<GeneratedImageMask>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Video {
#[serde(skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "bytesBase64Encoded",
with = "base64_serde::option"
)]
pub video_bytes: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateVideosSource {
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub video: Option<Video>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct VideoGenerationReferenceImage {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reference_type: Option<VideoGenerationReferenceType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct VideoGenerationMask {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask_mode: Option<VideoGenerationMaskMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateVideosConfig {
#[serde(skip_serializing, skip_deserializing)]
pub http_options: Option<HttpOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number_of_videos: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_gcs_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fps: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub duration_seconds: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seed: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aspect_ratio: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resolution: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub person_generation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pubsub_topic: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub negative_prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enhance_prompt: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generate_audio: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_frame: Option<Image>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reference_images: Option<Vec<VideoGenerationReferenceImage>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask: Option<VideoGenerationMask>,
#[serde(skip_serializing_if = "Option::is_none")]
pub compression_quality: Option<VideoCompressionQuality>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_config: Option<WebhookConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GeneratedVideo {
#[serde(skip_serializing_if = "Option::is_none")]
pub video: Option<Video>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateVideosResponse {
#[serde(default)]
pub generated_videos: Vec<GeneratedVideo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rai_media_filtered_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rai_media_filtered_reasons: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GenerateVideosOperation {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub done: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<OperationError>,
#[serde(skip_serializing_if = "Option::is_none")]
pub response: Option<GenerateVideosResponse>,
}