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

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


The following commit(s) were added to refs/heads/main by this push:
     new edc8bc441 Create a Google Vertex AI Sink Kamelet (#2722)
edc8bc441 is described below

commit edc8bc441630c8c5a4278d027d348a212d25c517
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Feb 17 10:53:26 2026 +0100

    Create a Google Vertex AI Sink Kamelet (#2722)
    
    * Create a Google Vertex AI Sink Kamelet
    
    Signed-off-by: Andrea Cosentino <[email protected]>
    
    * Create a Google Vertex AI Sink Kamelet
    
    Signed-off-by: Andrea Cosentino <[email protected]>
    
    ---------
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 docs/modules/ROOT/nav.adoc                         |  1 +
 .../partials/google-vertexai-sink-description.adoc | 26 ++++++
 kamelets/aws-redshift-sink.kamelet.yaml            |  2 +-
 kamelets/aws-redshift-source.kamelet.yaml          |  2 +-
 kamelets/google-vertexai-sink.kamelet.yaml         | 96 ++++++++++++++++++++++
 kamelets/postgresql-sink.kamelet.yaml              |  2 +-
 kamelets/postgresql-source.kamelet.yaml            |  2 +-
 .../kamelets/catalog/KameletsCatalogTest.java      |  2 +-
 .../kamelets/aws-redshift-sink.kamelet.yaml        |  2 +-
 .../kamelets/aws-redshift-source.kamelet.yaml      |  2 +-
 .../kamelets/google-vertexai-sink.kamelet.yaml     | 96 ++++++++++++++++++++++
 .../kamelets/postgresql-sink.kamelet.yaml          |  2 +-
 .../kamelets/postgresql-source.kamelet.yaml        |  2 +-
 13 files changed, 228 insertions(+), 9 deletions(-)

diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 7e7bea1de..62b60c6e1 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -101,6 +101,7 @@
 * xref:google-storage-event-based-source.adoc[]
 * xref:google-storage-sink.adoc[]
 * xref:google-storage-source.adoc[]
+* xref:google-vertexai-sink.adoc[]
 * xref:graphql-sink.adoc[]
 * xref:has-header-filter-action.adoc[]
 * xref:header-matches-filter-action.adoc[]
diff --git a/docs/modules/ROOT/partials/google-vertexai-sink-description.adoc 
b/docs/modules/ROOT/partials/google-vertexai-sink-description.adoc
new file mode 100644
index 000000000..942bcb28e
--- /dev/null
+++ b/docs/modules/ROOT/partials/google-vertexai-sink-description.adoc
@@ -0,0 +1,26 @@
+== Google Vertex AI Sink Kamelet Description
+
+=== Authentication
+
+This Kamelet uses Google Cloud service account authentication. The service 
account key is optional - if not provided, the Kamelet will use Application 
Default Credentials (ADC).
+
+If you provide a service account key, it must be base64-encoded. Ensure that 
the service account has the `aiplatform.endpoints.predict` permission 
(typically granted through the `Vertex AI User` role).
+
+=== Required Configuration
+
+- **Project ID**: The Google Cloud Project ID
+- **Location**: The Google Cloud region where Vertex AI models are available 
(e.g., `us-central1`)
+- **Model ID**: The model identifier to use for predictions (e.g., 
`gemini-2.5-pro`)
+
+=== Optional Configuration
+
+- **Service Account Key**: Base64-encoded service account credentials
+- **Operation**: The operation to perform (default: `generateText`). Supported 
operations are `generateText`, `generateChat`, `generateImage`, 
`generateEmbeddings`, `generateCode`, `generateMultimodal`, and `rawPredict`
+- **Temperature**: Controls randomness in generation (0.0 to 1.0)
+- **Max Output Tokens**: Maximum number of tokens to generate in the response
+- **Top P**: Nucleus sampling parameter (0.0 to 1.0)
+- **Top K**: Only sample from the top K options for each subsequent token
+
+=== Content Generation
+
+The Kamelet sends the message body as a prompt to the specified Google Vertex 
AI model and returns the generated content. It supports Google native models 
(Gemini, Imagen) as well as partner models (Claude, Llama, Mistral) through the 
`rawPredict` operation.
diff --git a/kamelets/aws-redshift-sink.kamelet.yaml 
b/kamelets/aws-redshift-sink.kamelet.yaml
index d2af0fca3..06aea8b01 100644
--- a/kamelets/aws-redshift-sink.kamelet.yaml
+++ b/kamelets/aws-redshift-sink.kamelet.yaml
@@ -78,7 +78,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.3"
+  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.4"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git a/kamelets/aws-redshift-source.kamelet.yaml 
b/kamelets/aws-redshift-source.kamelet.yaml
index d00f769b4..ef4f32490 100644
--- a/kamelets/aws-redshift-source.kamelet.yaml
+++ b/kamelets/aws-redshift-source.kamelet.yaml
@@ -88,7 +88,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.3"
+  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.4"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git a/kamelets/google-vertexai-sink.kamelet.yaml 
b/kamelets/google-vertexai-sink.kamelet.yaml
new file mode 100644
index 000000000..daa19b5ab
--- /dev/null
+++ b/kamelets/google-vertexai-sink.kamelet.yaml
@@ -0,0 +1,96 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-vertexai-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "4.18.0-SNAPSHOT"
+    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjMxcHgiIHZpZXdCb3g9IjAgMCAyNTYgMjMxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0yNTIuOTI1ODU0LDEwMy4yMzcwNzcgTDIwMC4zMjczNDQsMTEuNzU5NjY3IEMxOTYuMzAyNTc5LDQuNjIyMjU3MDMgMTg4LjgwMD
 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Vertex AI"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Google Vertex AI Sink"
+    description: Send data to Google Vertex AI for generating content with 
generative AI models.
+    required:
+      - projectId
+      - location
+      - modelId
+    type: object
+    properties:
+      projectId:
+        title: Google Cloud Project Id
+        description: The Google Cloud Project ID.
+        type: string
+      location:
+        title: Google Cloud Location
+        description: The Google Cloud region (e.g., us-central1).
+        type: string
+      modelId:
+        title: Model Id
+        description: The Model ID to use for predictions (e.g., 
gemini-2.5-pro).
+        type: string
+      serviceAccountKey:
+        title: Service Account Key
+        description: The service account key to use as credentials for the 
Vertex AI client. You must encode this value in base64.
+        type: binary
+        x-descriptors:
+        - urn:camel:group:credentials
+      operation:
+        title: Operation
+        description: The operation to perform.
+        type: string
+        default: generateText
+        enum: ["generateText", "generateChat", "generateImage", 
"generateEmbeddings", "generateCode", "generateMultimodal", "rawPredict"]
+      temperature:
+        title: Temperature
+        description: Controls randomness in generation. Lower values make 
output more deterministic. Range 0.0 to 1.0.
+        type: string
+      maxOutputTokens:
+        title: Max Output Tokens
+        description: Maximum number of tokens to generate in the response.
+        type: string
+      topP:
+        title: Top P
+        description: Nucleus sampling parameter. Considers tokens with top_p 
probability mass. Range 0.0 to 1.0.
+        type: string
+      topK:
+        title: Top K
+        description: Only sample from the top K options for each subsequent 
token.
+        type: string
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+    - "camel:google-vertexai"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "google-vertexai:{{projectId}}:{{location}}:{{modelId}}"
+          parameters:
+            serviceAccountKey: "{{?serviceAccountKey}}"
+            operation: "{{operation}}"
+            temperature: "{{?temperature}}"
+            maxOutputTokens: "{{?maxOutputTokens}}"
+            topP: "{{?topP}}"
+            topK: "{{?topK}}"
diff --git a/kamelets/postgresql-sink.kamelet.yaml 
b/kamelets/postgresql-sink.kamelet.yaml
index ca310abd0..f7251469a 100644
--- a/kamelets/postgresql-sink.kamelet.yaml
+++ b/kamelets/postgresql-sink.kamelet.yaml
@@ -78,7 +78,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:org.postgresql:postgresql:42.7.9"
+  - "mvn:org.postgresql:postgresql:42.7.10"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git a/kamelets/postgresql-source.kamelet.yaml 
b/kamelets/postgresql-source.kamelet.yaml
index 789d0d082..7cdf7f1c8 100644
--- a/kamelets/postgresql-source.kamelet.yaml
+++ b/kamelets/postgresql-source.kamelet.yaml
@@ -88,7 +88,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:org.postgresql:postgresql:42.7.9"
+  - "mvn:org.postgresql:postgresql:42.7.10"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git 
a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
 
b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
index 5c2afd295..fe79189a2 100644
--- 
a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
+++ 
b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
@@ -193,7 +193,7 @@ public class KameletsCatalogTest {
         verifyHeaders("google-functions-sink", 5);
         verifyHeaders("google-mail-source", 6);
         verifyHeaders("google-pubsub-sink", 3);
-        verifyHeaders("google-pubsub-source", 5);
+        verifyHeaders("google-pubsub-source", 6);
         verifyHeaders("google-sheets-source", 6);
         verifyHeaders("google-storage-source", 21);
         verifyHeaders("google-storage-sink", 15);
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
index be24935ad..06aea8b01 100644
--- 
a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml
@@ -78,7 +78,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.2"
+  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.4"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
index 51271e204..ef4f32490 100644
--- 
a/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-source.kamelet.yaml
@@ -88,7 +88,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.2"
+  - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.4"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/google-vertexai-sink.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/google-vertexai-sink.kamelet.yaml
new file mode 100644
index 000000000..daa19b5ab
--- /dev/null
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/google-vertexai-sink.kamelet.yaml
@@ -0,0 +1,96 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-vertexai-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "4.18.0-SNAPSHOT"
+    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjMxcHgiIHZpZXdCb3g9IjAgMCAyNTYgMjMxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0yNTIuOTI1ODU0LDEwMy4yMzcwNzcgTDIwMC4zMjczNDQsMTEuNzU5NjY3IEMxOTYuMzAyNTc5LDQuNjIyMjU3MDMgMTg4LjgwMD
 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Vertex AI"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Google Vertex AI Sink"
+    description: Send data to Google Vertex AI for generating content with 
generative AI models.
+    required:
+      - projectId
+      - location
+      - modelId
+    type: object
+    properties:
+      projectId:
+        title: Google Cloud Project Id
+        description: The Google Cloud Project ID.
+        type: string
+      location:
+        title: Google Cloud Location
+        description: The Google Cloud region (e.g., us-central1).
+        type: string
+      modelId:
+        title: Model Id
+        description: The Model ID to use for predictions (e.g., 
gemini-2.5-pro).
+        type: string
+      serviceAccountKey:
+        title: Service Account Key
+        description: The service account key to use as credentials for the 
Vertex AI client. You must encode this value in base64.
+        type: binary
+        x-descriptors:
+        - urn:camel:group:credentials
+      operation:
+        title: Operation
+        description: The operation to perform.
+        type: string
+        default: generateText
+        enum: ["generateText", "generateChat", "generateImage", 
"generateEmbeddings", "generateCode", "generateMultimodal", "rawPredict"]
+      temperature:
+        title: Temperature
+        description: Controls randomness in generation. Lower values make 
output more deterministic. Range 0.0 to 1.0.
+        type: string
+      maxOutputTokens:
+        title: Max Output Tokens
+        description: Maximum number of tokens to generate in the response.
+        type: string
+      topP:
+        title: Top P
+        description: Nucleus sampling parameter. Considers tokens with top_p 
probability mass. Range 0.0 to 1.0.
+        type: string
+      topK:
+        title: Top K
+        description: Only sample from the top K options for each subsequent 
token.
+        type: string
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+    - "camel:google-vertexai"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "google-vertexai:{{projectId}}:{{location}}:{{modelId}}"
+          parameters:
+            serviceAccountKey: "{{?serviceAccountKey}}"
+            operation: "{{operation}}"
+            temperature: "{{?temperature}}"
+            maxOutputTokens: "{{?maxOutputTokens}}"
+            topP: "{{?topP}}"
+            topK: "{{?topK}}"
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml
index ca310abd0..f7251469a 100644
--- 
a/library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml
@@ -78,7 +78,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:org.postgresql:postgresql:42.7.9"
+  - "mvn:org.postgresql:postgresql:42.7.10"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:
diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/postgresql-source.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/postgresql-source.kamelet.yaml
index 789d0d082..7cdf7f1c8 100644
--- 
a/library/camel-kamelets/src/main/resources/kamelets/postgresql-source.kamelet.yaml
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/postgresql-source.kamelet.yaml
@@ -88,7 +88,7 @@ spec:
   - "camel:jackson"
   - "camel:kamelet"
   - "camel:sql"
-  - "mvn:org.postgresql:postgresql:42.7.9"
+  - "mvn:org.postgresql:postgresql:42.7.10"
   - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
   template:
     beans:

Reply via email to