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

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


The following commit(s) were added to refs/heads/main by this push:
     new 9aac05f269fd Add camel-openai to catalog
9aac05f269fd is described below

commit 9aac05f269fd98dad997d00c49f7e53aef7c97d1
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jan 12 07:32:06 2026 +0100

    Add camel-openai to catalog
---
 .../org/apache/camel/catalog/components.properties |   1 +
 .../apache/camel/catalog/components/openai.json    |  53 +++
 .../org/apache/camel/main/components.properties    |   1 +
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 +
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 +
 .../builder/endpoint/StaticEndpointBuilders.java   |  40 ++
 .../endpoint/dsl/OpenAIEndpointBuilderFactory.java | 512 +++++++++++++++++++++
 .../camel-component-known-dependencies.properties  |   1 +
 .../apache/camel/maven/packaging/MojoHelper.java   |   2 +-
 9 files changed, 611 insertions(+), 1 deletion(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index f3c3d61cf8ce..20a7c2ca32d1 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -265,6 +265,7 @@ oaipmh
 olingo2
 olingo4
 once
+openai
 opensearch
 openshift-build-configs
 openshift-builds
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openai.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openai.json
new file mode 100644
index 000000000000..a091fe5a9b02
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openai.json
@@ -0,0 +1,53 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "openai",
+    "title": "OpenAI",
+    "description": "OpenAI endpoint for chat completion.",
+    "deprecated": false,
+    "firstVersion": "4.17.0",
+    "label": "ai",
+    "javaType": "org.apache.camel.component.openai.OpenAIComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-openai",
+    "version": "4.17.0-SNAPSHOT",
+    "scheme": "openai",
+    "extendsScheme": "",
+    "syntax": "openai:operation",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false,
+    "browsable": false,
+    "remote": true
+  },
+  "componentProperties": {
+    "apiKey": { "index": 0, "kind": "property", "displayName": "Api Key", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Default API key for all endpoints" },
+    "baseUrl": { "index": 1, "kind": "property", "displayName": "Base Url", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Default base URL for all endpoints" },
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "model": { "index": 3, "kind": "property", "displayName": "Model", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Default model for all endpoints" },
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+  },
+  "properties": {
+    "operation": { "index": 0, "kind": "path", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The operation to perform 
(currently only chat-completion is supported)" },
+    "additionalBodyProperty": { "index": 1, "kind": "parameter", 
"displayName": "Additional Body Property", "group": "producer", "label": "", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": 
"additionalBodyProperty.", "multiValue": true, "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configur [...]
+    "apiKey": { "index": 2, "kind": "parameter", "displayName": "Api Key", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "OpenAI API key. Can also be set via 
OPENAI_API_KEY environment variable." },
+    "baseUrl": { "index": 3, "kind": "parameter", "displayName": "Base Url", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "Base URL for OpenAI API. Defaults to OpenAI's 
official endpoint. Can be used for local or third-p [...]
+    "conversationHistoryProperty": { "index": 4, "kind": "parameter", 
"displayName": "Conversation History Property", "group": "producer", "label": 
"", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "defaultValue": "CamelOpenAIConversationHistory", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "Exchan [...]
+    "conversationMemory": { "index": 5, "kind": "parameter", "displayName": 
"Conversation Memory", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
false, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "Enable conversation memory per Exchange" },
+    "developerMessage": { "index": 6, "kind": "parameter", "displayName": 
"Developer Message", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "Developer message to 
prepend before user messages" },
+    "jsonSchema": { "index": 7, "kind": "parameter", "displayName": "Json 
Schema", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "supportFileReference": true, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "JSON schema for 
structured output validation" },
+    "maxTokens": { "index": 8, "kind": "parameter", "displayName": "Max 
Tokens", "group": "producer", "label": "", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "Maximum number of tokens 
to generate" },
+    "model": { "index": 9, "kind": "parameter", "displayName": "Model", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The model to use for chat completion" },
+    "outputClass": { "index": 10, "kind": "parameter", "displayName": "Output 
Class", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "Fully qualified class name for structured 
output using response format" },
+    "storeFullResponse": { "index": 11, "kind": "parameter", "displayName": 
"Store Full Response", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
false, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "Store the full response in the exchange 
property 'CamelOpenA [...]
+    "streaming": { "index": 12, "kind": "parameter", "displayName": 
"Streaming", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "Enable streaming 
responses" },
+    "systemMessage": { "index": 13, "kind": "parameter", "displayName": 
"System Message", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "System message to 
prepend. When set and conversationMemory is enabled, the conversat [...]
+    "temperature": { "index": 14, "kind": "parameter", "displayName": 
"Temperature", "group": "producer", "label": "", "required": false, "type": 
"number", "javaType": "java.lang.Double", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "Temperature for response 
generation (0.0 to 2.0)" },
+    "topP": { "index": 15, "kind": "parameter", "displayName": "Top P", 
"group": "producer", "label": "", "required": false, "type": "number", 
"javaType": "java.lang.Double", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "Top P for response generation (0.0 to 1.0)" },
+    "userMessage": { "index": 16, "kind": "parameter", "displayName": "User 
Message", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "Default user message 
text to use when no prompt is provided" },
+    "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
+  }
+}
diff --git 
a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
 
b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index f3c3d61cf8ce..20a7c2ca32d1 100644
--- 
a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ 
b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -265,6 +265,7 @@ oaipmh
 olingo2
 olingo4
 once
+openai
 opensearch
 openshift-build-configs
 openshift-builds
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 14e58b9299f6..9925b65aa6b4 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -275,6 +275,7 @@ public interface EndpointBuilderFactory
             
org.apache.camel.builder.endpoint.dsl.Olingo2EndpointBuilderFactory.Olingo2Builders,
             
org.apache.camel.builder.endpoint.dsl.Olingo4EndpointBuilderFactory.Olingo4Builders,
             
org.apache.camel.builder.endpoint.dsl.OnceEndpointBuilderFactory.OnceBuilders,
+            
org.apache.camel.builder.endpoint.dsl.OpenAIEndpointBuilderFactory.OpenAIBuilders,
             
org.apache.camel.builder.endpoint.dsl.OpenTelemetryEndpointBuilderFactory.OpenTelemetryBuilders,
             
org.apache.camel.builder.endpoint.dsl.OpensearchEndpointBuilderFactory.OpensearchBuilders,
             
org.apache.camel.builder.endpoint.dsl.OpenshiftBuildConfigsEndpointBuilderFactory.OpenshiftBuildConfigsBuilders,
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index a7e25370d80a..770ff9b320c4 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -272,6 +272,7 @@ public interface EndpointBuilders
             
org.apache.camel.builder.endpoint.dsl.Olingo2EndpointBuilderFactory,
             
org.apache.camel.builder.endpoint.dsl.Olingo4EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.OnceEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.OpenAIEndpointBuilderFactory,
             
org.apache.camel.builder.endpoint.dsl.OpenTelemetryEndpointBuilderFactory,
             
org.apache.camel.builder.endpoint.dsl.OpensearchEndpointBuilderFactory,
             
org.apache.camel.builder.endpoint.dsl.OpenshiftBuildConfigsEndpointBuilderFactory,
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 85b35ea67839..2f216a521aa0 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -11966,6 +11966,46 @@ public class StaticEndpointBuilders {
     public static OnceEndpointBuilderFactory.OnceEndpointBuilder once(String 
componentName, String path) {
         return OnceEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * OpenAI (camel-openai)
+     * OpenAI endpoint for chat completion.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * Syntax: <code>openai:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * The operation to perform (currently only chat-completion is supported)
+     * 
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder 
openai(String path) {
+        return openai("openai", path);
+    }
+    /**
+     * OpenAI (camel-openai)
+     * OpenAI endpoint for chat completion.
+     * 
+     * Category: ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-openai
+     * 
+     * Syntax: <code>openai:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * The operation to perform (currently only chat-completion is supported)
+     * 
+     * @param componentName to use a custom component name for the endpoint
+     * instead of the default name
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static OpenAIEndpointBuilderFactory.OpenAIEndpointBuilder 
openai(String componentName, String path) {
+        return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, 
path);
+    }
     /**
      * OpenSearch (camel-opensearch)
      * Send requests to OpenSearch via Java Client API.
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java
new file mode 100644
index 000000000000..4b3f5c9ae3d5
--- /dev/null
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpenAIEndpointBuilderFactory.java
@@ -0,0 +1,512 @@
+/* Generated by camel build tools - do NOT edit this file! */
+/*
+ * 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.
+ */
+package org.apache.camel.builder.endpoint.dsl;
+
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
+import javax.annotation.processing.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * OpenAI endpoint for chat completion.
+ * 
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface OpenAIEndpointBuilderFactory {
+
+    /**
+     * Builder for endpoint for the OpenAI component.
+     */
+    public interface OpenAIEndpointBuilder
+            extends
+                EndpointProducerBuilder {
+        default AdvancedOpenAIEndpointBuilder advanced() {
+            return (AdvancedOpenAIEndpointBuilder) this;
+        }
+
+        /**
+         * Additional JSON properties to include in the request body (e.g.
+         * additionalBodyProperty.traceId=123). This is a multi-value option
+         * with prefix: additionalBodyProperty.
+         * 
+         * The option is a: <code>java.util.Map&lt;java.lang.String,
+         * java.lang.Object&gt;</code> type.
+         * The option is multivalued, and you can use the
+         * additionalBodyProperty(String, Object) method to add a value (call
+         * the method multiple times to set more values).
+         * 
+         * Group: producer
+         * 
+         * @param key the option key
+         * @param value the option value
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder additionalBodyProperty(String key, 
Object value) {
+            doSetMultiValueProperty("additionalBodyProperty", 
"additionalBodyProperty." + key, value);
+            return this;
+        }
+        /**
+         * Additional JSON properties to include in the request body (e.g.
+         * additionalBodyProperty.traceId=123). This is a multi-value option
+         * with prefix: additionalBodyProperty.
+         * 
+         * The option is a: <code>java.util.Map&lt;java.lang.String,
+         * java.lang.Object&gt;</code> type.
+         * The option is multivalued, and you can use the
+         * additionalBodyProperty(String, Object) method to add a value (call
+         * the method multiple times to set more values).
+         * 
+         * Group: producer
+         * 
+         * @param values the values
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder additionalBodyProperty(Map values) {
+            doSetMultiValueProperties("additionalBodyProperty", 
"additionalBodyProperty.", values);
+            return this;
+        }
+        /**
+         * OpenAI API key. Can also be set via OPENAI_API_KEY environment
+         * variable.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param apiKey the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder apiKey(String apiKey) {
+            doSetProperty("apiKey", apiKey);
+            return this;
+        }
+        /**
+         * Base URL for OpenAI API. Defaults to OpenAI's official endpoint. Can
+         * be used for local or third-party providers.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param baseUrl the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder baseUrl(String baseUrl) {
+            doSetProperty("baseUrl", baseUrl);
+            return this;
+        }
+        /**
+         * Exchange property name for storing conversation history.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: CamelOpenAIConversationHistory
+         * Group: producer
+         * 
+         * @param conversationHistoryProperty the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder conversationHistoryProperty(String 
conversationHistoryProperty) {
+            doSetProperty("conversationHistoryProperty", 
conversationHistoryProperty);
+            return this;
+        }
+        /**
+         * Enable conversation memory per Exchange.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param conversationMemory the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder conversationMemory(boolean 
conversationMemory) {
+            doSetProperty("conversationMemory", conversationMemory);
+            return this;
+        }
+        /**
+         * Enable conversation memory per Exchange.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param conversationMemory the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder conversationMemory(String 
conversationMemory) {
+            doSetProperty("conversationMemory", conversationMemory);
+            return this;
+        }
+        /**
+         * Developer message to prepend before user messages.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param developerMessage the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder developerMessage(String 
developerMessage) {
+            doSetProperty("developerMessage", developerMessage);
+            return this;
+        }
+        /**
+         * JSON schema for structured output validation.
+         * 
+         * This option can also be loaded from an existing file, by prefixing
+         * with file: or classpath: followed by the location of the file.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param jsonSchema the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder jsonSchema(String jsonSchema) {
+            doSetProperty("jsonSchema", jsonSchema);
+            return this;
+        }
+        /**
+         * Maximum number of tokens to generate.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param maxTokens the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder maxTokens(Integer maxTokens) {
+            doSetProperty("maxTokens", maxTokens);
+            return this;
+        }
+        /**
+         * Maximum number of tokens to generate.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: producer
+         * 
+         * @param maxTokens the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder maxTokens(String maxTokens) {
+            doSetProperty("maxTokens", maxTokens);
+            return this;
+        }
+        /**
+         * The model to use for chat completion.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param model the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder model(String model) {
+            doSetProperty("model", model);
+            return this;
+        }
+        /**
+         * Fully qualified class name for structured output using response
+         * format.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param outputClass the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder outputClass(String outputClass) {
+            doSetProperty("outputClass", outputClass);
+            return this;
+        }
+        /**
+         * Store the full response in the exchange property
+         * 'CamelOpenAIResponse' in non-streaming mode.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param storeFullResponse the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder storeFullResponse(boolean 
storeFullResponse) {
+            doSetProperty("storeFullResponse", storeFullResponse);
+            return this;
+        }
+        /**
+         * Store the full response in the exchange property
+         * 'CamelOpenAIResponse' in non-streaming mode.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param storeFullResponse the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder storeFullResponse(String 
storeFullResponse) {
+            doSetProperty("storeFullResponse", storeFullResponse);
+            return this;
+        }
+        /**
+         * Enable streaming responses.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param streaming the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder streaming(boolean streaming) {
+            doSetProperty("streaming", streaming);
+            return this;
+        }
+        /**
+         * Enable streaming responses.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param streaming the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder streaming(String streaming) {
+            doSetProperty("streaming", streaming);
+            return this;
+        }
+        /**
+         * System message to prepend. When set and conversationMemory is
+         * enabled, the conversation history is reset.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param systemMessage the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder systemMessage(String systemMessage) {
+            doSetProperty("systemMessage", systemMessage);
+            return this;
+        }
+        /**
+         * Temperature for response generation (0.0 to 2.0).
+         * 
+         * The option is a: <code>java.lang.Double</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param temperature the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder temperature(Double temperature) {
+            doSetProperty("temperature", temperature);
+            return this;
+        }
+        /**
+         * Temperature for response generation (0.0 to 2.0).
+         * 
+         * The option will be converted to a <code>java.lang.Double</code> 
type.
+         * 
+         * Group: producer
+         * 
+         * @param temperature the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder temperature(String temperature) {
+            doSetProperty("temperature", temperature);
+            return this;
+        }
+        /**
+         * Top P for response generation (0.0 to 1.0).
+         * 
+         * The option is a: <code>java.lang.Double</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param topP the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder topP(Double topP) {
+            doSetProperty("topP", topP);
+            return this;
+        }
+        /**
+         * Top P for response generation (0.0 to 1.0).
+         * 
+         * The option will be converted to a <code>java.lang.Double</code> 
type.
+         * 
+         * Group: producer
+         * 
+         * @param topP the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder topP(String topP) {
+            doSetProperty("topP", topP);
+            return this;
+        }
+        /**
+         * Default user message text to use when no prompt is provided.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param userMessage the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder userMessage(String userMessage) {
+            doSetProperty("userMessage", userMessage);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the OpenAI component.
+     */
+    public interface AdvancedOpenAIEndpointBuilder
+            extends
+                EndpointProducerBuilder {
+        default OpenAIEndpointBuilder basic() {
+            return (OpenAIEndpointBuilder) this;
+        }
+
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes 
to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring 
this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that 
when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing 
time
+         * of the processing.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer (advanced)
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default AdvancedOpenAIEndpointBuilder lazyStartProducer(boolean 
lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes 
to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring 
this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that 
when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing 
time
+         * of the processing.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer (advanced)
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default AdvancedOpenAIEndpointBuilder lazyStartProducer(String 
lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+    }
+
+    public interface OpenAIBuilders {
+        /**
+         * OpenAI (camel-openai)
+         * OpenAI endpoint for chat completion.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>openai:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform (currently only chat-completion is
+         * supported)
+         * 
+         * @param path operation
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder openai(String path) {
+            return OpenAIEndpointBuilderFactory.endpointBuilder("openai", 
path);
+        }
+        /**
+         * OpenAI (camel-openai)
+         * OpenAI endpoint for chat completion.
+         * 
+         * Category: ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-openai
+         * 
+         * Syntax: <code>openai:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * The operation to perform (currently only chat-completion is
+         * supported)
+         * 
+         * @param componentName to use a custom component name for the endpoint
+         * instead of the default name
+         * @param path operation
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder openai(String componentName, String 
path) {
+            return OpenAIEndpointBuilderFactory.endpointBuilder(componentName, 
path);
+        }
+
+    }
+    static OpenAIEndpointBuilder endpointBuilder(String componentName, String 
path) {
+        class OpenAIEndpointBuilderImpl extends AbstractEndpointBuilder 
implements OpenAIEndpointBuilder, AdvancedOpenAIEndpointBuilder {
+            public OpenAIEndpointBuilderImpl(String path) {
+                super(componentName, path);
+            }
+        }
+        return new OpenAIEndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git 
a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
 
b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
index 0ab7dd574405..d7f1e97d338d 100644
--- 
a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
+++ 
b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
@@ -276,6 +276,7 @@ 
org.apache.camel.component.nitrite.NitriteComponent=camel:nitrite
 org.apache.camel.component.olingo2.Olingo2Component=camel:olingo2
 org.apache.camel.component.olingo4.Olingo4Component=camel:olingo4
 org.apache.camel.component.once.OnceComponent=camel:once
+org.apache.camel.component.openai.OpenAIComponent=camel:openai
 org.apache.camel.component.opensearch.OpensearchComponent=camel:opensearch
 
org.apache.camel.component.openshift.build_configs.OpenshiftBuildConfigsComponent=camel:kubernetes
 
org.apache.camel.component.openshift.builds.OpenshiftBuildsComponent=camel:kubernetes
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
index 786080696d81..f9fb1429f496 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
@@ -43,7 +43,7 @@ public final class MojoHelper {
                         dir.resolve("camel-langchain4j-embeddings"), 
dir.resolve("camel-langchain4j-embeddingstore"),
                         dir.resolve("camel-langchain4j-tokenizer"), 
dir.resolve("camel-langchain4j-tools"),
                         dir.resolve("camel-langchain4j-web-search"),
-                        dir.resolve("camel-qdrant"), 
dir.resolve("camel-milvus"), dir.resolve("camel-neo4j"),
+                        dir.resolve("camel-qdrant"), 
dir.resolve("camel-milvus"), dir.resolve("camel-neo4j"), 
dir.resolve("camel-openai"),
                         dir.resolve("camel-pinecone"), 
dir.resolve("camel-kserve"), dir.resolve("camel-chroma"),
                         dir.resolve("camel-torchserve"), 
dir.resolve("camel-tensorflow-serving"),
                         dir.resolve("camel-weaviate"), 
dir.resolve("camel-docling"));


Reply via email to