This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch CAMEL-23238
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d35f48c61f8893f227d160103d09c7448ef24bf7
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Mar 24 10:00:04 2026 +0100

    CAMEL-23238 - Camel-Google-VertexAI: Implement streaming, image generation, 
embeddings, multimodal, and streamRawPredict operations
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../camel/catalog/components/google-vertexai.json  |  16 ++-
 .../dsl/GoogleVertexAIEndpointBuilderFactory.java  | 110 ++++++++++++++++++++-
 2 files changed, 120 insertions(+), 6 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
index a4dd00562e06..518c6cf329e6 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json
@@ -64,10 +64,18 @@
     "CamelGoogleVertexAITotalTokenCount": { "index": 17, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The total token count (prompt 
response)", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#TOTAL_TOKEN_COUNT"
 },
     "CamelGoogleVertexAISafetyRatings": { "index": 18, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "java.util.List<com.google.cloud.aiplatform.v1.SafetyRating>", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The safety ratings from the response", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#SAFETY_RATINGS"
 },
     "CamelGoogleVertexAIContentBlocked": { "index": 19, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether the content was blocked by 
safety filters", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#CONTENT_BLOCKED"
 },
-    "CamelGoogleVertexAIChunkCount": { "index": 20, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The number of chunks received in 
streaming response", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#STREAMING_CHUNK_COUNT"
 },
-    "CamelGoogleVertexAIPublisher": { "index": 21, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Publisher name for partner models 
(e.g., anthropic, meta, mistralai)", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#PUBLISHER" 
},
-    "CamelGoogleVertexAIRawResponse": { "index": 22, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The raw JSON response from rawPredict 
operation", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#RAW_RESPONSE"
 },
-    "CamelGoogleVertexAIAnthropicVersion": { "index": 23, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Anthropic API version for Claude 
models", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#ANTHROPIC_VERSION"
 }
+    "CamelGoogleVertexAIChunkCount": { "index": 21, "kind": "header", 
"displayName": "", "group": "producer generateChatStreaming", "label": 
"producer generateChatStreaming", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The number of streaming chunks received", 
"constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#CHUNK_COUNT"
 },
+    "CamelGoogleVertexAIImageNumberOfImages": { "index": 22, "kind": "header", 
"displayName": "", "group": "producer generateImage", "label": "producer 
generateImage", "required": false, "javaType": "Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
number of images to generate", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#IMAGE_NUMBER_OF_IMAGES"
 },
+    "CamelGoogleVertexAIImageAspectRatio": { "index": 23, "kind": "header", 
"displayName": "", "group": "producer generateImage", "label": "producer 
generateImage", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
aspect ratio for generated images (e.g., 1:1, 16:9, 9:16, 3:4, 4:3)", 
"constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#IMAGE_ASPECT_RATIO"
 },
+    "CamelGoogleVertexAIGeneratedImages": { "index": 24, "kind": "header", 
"displayName": "", "group": "generateImage", "label": "generateImage", 
"required": false, "javaType": "java.util.List<com.google.genai.types.Image>", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The generated images from an image generation 
operation", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#GENERATED_IMAGES"
 },
+    "CamelGoogleVertexAIEmbeddingTaskType": { "index": 25, "kind": "header", 
"displayName": "", "group": "producer generateEmbeddings", "label": "producer 
generateEmbeddings", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The task type for embeddings (e.g., RETRIEVAL_QUERY, 
RETRIEVAL_DOCUMENT, SEMANTIC_SIMILARITY, CLASSIFICATION, CLUSTERING, 
QUESTION_ANSWERING, FACT_VERIFICATION)", "constantName": [...]
+    "CamelGoogleVertexAIEmbeddingOutputDimensionality": { "index": 26, "kind": 
"header", "displayName": "", "group": "producer generateEmbeddings", "label": 
"producer generateEmbeddings", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The desired output dimensionality for embeddings", 
"constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#EMBEDDING_OUTPUT_DIMENSIONALITY"
 },
+    "CamelGoogleVertexAIMediaData": { "index": 27, "kind": "header", 
"displayName": "", "group": "producer generateMultimodal", "label": "producer 
generateMultimodal", "required": false, "javaType": "byte[]", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The media data bytes for multimodal input", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#MEDIA_DATA" 
},
+    "CamelGoogleVertexAIMediaMimeType": { "index": 28, "kind": "header", 
"displayName": "", "group": "producer generateMultimodal", "label": "producer 
generateMultimodal", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The MIME type of the media data (e.g., image\/png, image\/jpeg, 
video\/mp4, audio\/mp3)", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#MEDIA_MI 
[...]
+    "CamelGoogleVertexAIMediaGcsUri": { "index": 29, "kind": "header", 
"displayName": "", "group": "producer generateMultimodal", "label": "producer 
generateMultimodal", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The GCS URI of the media file for multimodal input (e.g., 
gs:\/\/bucket\/image.png)", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#MEDIA_GCS_URI"
 },
+    "CamelGoogleVertexAIPublisher": { "index": 30, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Publisher name for partner models 
(e.g., anthropic, meta, mistralai)", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#PUBLISHER" 
},
+    "CamelGoogleVertexAIRawResponse": { "index": 31, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The raw JSON response from rawPredict 
operation", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#RAW_RESPONSE"
 },
+    "CamelGoogleVertexAIAnthropicVersion": { "index": 32, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Anthropic API version for Claude 
models", "constantName": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#ANTHROPIC_VERSION"
 }
   },
   "properties": {
     "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", 
"group": "common", "label": "common", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.vertexai.GoogleVertexAIConfiguration", 
"configurationField": "configuration", "description": "Google Cloud Project ID" 
},
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
index 6fed36795c30..554375c999aa 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleVertexAIEndpointBuilderFactory.java
@@ -771,17 +771,123 @@ public interface GoogleVertexAIEndpointBuilderFactory {
             return "CamelGoogleVertexAIContentBlocked";
         }
         /**
-         * The number of chunks received in streaming response.
+         * The number of streaming chunks received.
          * 
          * The option is a: {@code Integer} type.
          * 
-         * Group: producer
+         * Group: producer generateChatStreaming
          * 
          * @return the name of the header {@code GoogleVertexAIChunkCount}.
          */
         public String googleVertexAIChunkCount() {
             return "CamelGoogleVertexAIChunkCount";
         }
+        /**
+         * The number of images to generate.
+         * 
+         * The option is a: {@code Integer} type.
+         * 
+         * Group: producer generateImage
+         * 
+         * @return the name of the header {@code
+         * GoogleVertexAIImageNumberOfImages}.
+         */
+        public String googleVertexAIImageNumberOfImages() {
+            return "CamelGoogleVertexAIImageNumberOfImages";
+        }
+        /**
+         * The aspect ratio for generated images (e.g., 1:1, 16:9, 9:16, 3:4,
+         * 4:3).
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer generateImage
+         * 
+         * @return the name of the header {@code
+         * GoogleVertexAIImageAspectRatio}.
+         */
+        public String googleVertexAIImageAspectRatio() {
+            return "CamelGoogleVertexAIImageAspectRatio";
+        }
+        /**
+         * The generated images from an image generation operation.
+         * 
+         * The option is a: {@code 
java.util.List<com.google.genai.types.Image>}
+         * type.
+         * 
+         * Group: generateImage
+         * 
+         * @return the name of the header {@code 
GoogleVertexAIGeneratedImages}.
+         */
+        public String googleVertexAIGeneratedImages() {
+            return "CamelGoogleVertexAIGeneratedImages";
+        }
+        /**
+         * The task type for embeddings (e.g., RETRIEVAL_QUERY,
+         * RETRIEVAL_DOCUMENT, SEMANTIC_SIMILARITY, CLASSIFICATION, CLUSTERING,
+         * QUESTION_ANSWERING, FACT_VERIFICATION).
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer generateEmbeddings
+         * 
+         * @return the name of the header {@code
+         * GoogleVertexAIEmbeddingTaskType}.
+         */
+        public String googleVertexAIEmbeddingTaskType() {
+            return "CamelGoogleVertexAIEmbeddingTaskType";
+        }
+        /**
+         * The desired output dimensionality for embeddings.
+         * 
+         * The option is a: {@code Integer} type.
+         * 
+         * Group: producer generateEmbeddings
+         * 
+         * @return the name of the header {@code
+         * GoogleVertexAIEmbeddingOutputDimensionality}.
+         */
+        public String googleVertexAIEmbeddingOutputDimensionality() {
+            return "CamelGoogleVertexAIEmbeddingOutputDimensionality";
+        }
+        /**
+         * The media data bytes for multimodal input.
+         * 
+         * The option is a: {@code byte[]} type.
+         * 
+         * Group: producer generateMultimodal
+         * 
+         * @return the name of the header {@code GoogleVertexAIMediaData}.
+         */
+        public String googleVertexAIMediaData() {
+            return "CamelGoogleVertexAIMediaData";
+        }
+        /**
+         * The MIME type of the media data (e.g., image/png, image/jpeg,
+         * video/mp4, audio/mp3).
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer generateMultimodal
+         * 
+         * @return the name of the header {@code GoogleVertexAIMediaMimeType}.
+         */
+        public String googleVertexAIMediaMimeType() {
+            return "CamelGoogleVertexAIMediaMimeType";
+        }
+        /**
+         * The GCS URI of the media file for multimodal input (e.g.,
+         * gs://bucket/image.png).
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer generateMultimodal
+         * 
+         * @return the name of the header {@code GoogleVertexAIMediaGcsUri}.
+         */
+        public String googleVertexAIMediaGcsUri() {
+            return "CamelGoogleVertexAIMediaGcsUri";
+        }
         /**
          * Publisher name for partner models (e.g., anthropic, meta, 
mistralai).
          * 

Reply via email to