From fe0e0cf6724fe951181d4936bfc50bda7520cf1d Mon Sep 17 00:00:00 2001 From: Andre Cipriani Bandarra Date: Mon, 1 Dec 2025 21:43:58 +0000 Subject: [PATCH] Add missing properties for FunctionResponsePart --- .gitignore | 1 + src/types/generate_content.rs | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4c49bd7..b7f7b51 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .env +target/ diff --git a/src/types/generate_content.rs b/src/types/generate_content.rs index 46911f7..6c53407 100644 --- a/src/types/generate_content.rs +++ b/src/types/generate_content.rs @@ -337,7 +337,34 @@ pub struct FunctionResponse { pub id: Option, pub name: String, pub response: Value, - // TODO: Add missing properties from docs. + pub parts: Option>, // TODO: Add missing properties from docs. + pub will_continue: Option, + pub scheduling: Option, +} + +/// See https://ai.google.dev/api/caching#FunctionResponsePart +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum FunctionResponsePart { + InlineData(FunctionResponseBlob), +} + +/// See https://ai.google.dev/api/caching#FunctionResponseBlob +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct FunctionResponseBlob { + pub mime_type: String, + pub data: String, +} + +/// See https://ai.google.dev/api/caching#Scheduling +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum Scheduling { + SchedulingUnspecified, + Silent, + WhenIdle, + Interrupt, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -466,7 +493,7 @@ mod tests { }, "modelVersion": "gemini-3-pro-preview", "responseId": "2uUdaYPkG73WvdIP2aPs2Ak" - } + } "#; let _ = serde_json::from_str::(input).unwrap(); }