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

Croway 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 9c363c18362f Add an option to strip thinking content from response
9c363c18362f is described below

commit 9c363c18362f96ee877082bec666f30d308d0b85
Author: Croway <[email protected]>
AuthorDate: Wed Apr 29 15:24:22 2026 +0200

    Add an option to strip thinking content from response
---
 .../apache/camel/catalog/components/openai.json    | 75 +++++++++++-----------
 .../component/openai/OpenAIEndpointConfigurer.java |  6 ++
 .../component/openai/OpenAIEndpointUriFactory.java |  3 +-
 .../org/apache/camel/component/openai/openai.json  | 75 +++++++++++-----------
 .../component/openai/OpenAIConfiguration.java      | 13 ++++
 .../camel/component/openai/OpenAIConstants.java    |  5 ++
 .../camel/component/openai/OpenAIProducer.java     | 22 +++++++
 .../endpoint/dsl/OpenAIEndpointBuilderFactory.java | 58 +++++++++++++++++
 8 files changed, 184 insertions(+), 73 deletions(-)

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
index ca8547aa7820..51e7541effeb 100644
--- 
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
@@ -43,24 +43,26 @@
     "CamelOpenAIStreaming": { "index": 7, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "Boolean", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Whether to stream the response back incrementally", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#STREAMING" },
     "CamelOpenAIOutputClass": { "index": 8, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Class", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The Java class to use for structured output parsing", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#OUTPUT_CLASS" },
     "CamelOpenAIJsonSchema": { "index": 9, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The JSON schema to use for structured output 
validation", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#JSON_SCHEMA" },
-    "CamelOpenAIResponseModel": { "index": 10, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model used for the completion 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
-    "CamelOpenAIResponseId": { "index": 11, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The unique identifier for the completion response", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID" 
},
-    "CamelOpenAIFinishReason": { "index": 12, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The reason the completion finished (e.g., stop, length, 
content_filter)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
-    "CamelOpenAIPromptTokens": { "index": 13, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The number of tokens used in the prompt", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
-    "CamelOpenAICompletionTokens": { "index": 14, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The number of tokens used in the 
completion", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
-    "CamelOpenAITotalTokens": { "index": 15, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The total number of tokens used (prompt completion)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
-    "CamelOpenAIToolIterations": { "index": 16, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of tool call iterations 
performed in the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
-    "CamelOpenAIMcpToolCalls": { "index": 17, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": 
"java.util.List<String>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "List of tool names called 
during the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
-    "CamelOpenAIMcpReturnDirect": { "index": 18, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether the response came directly from 
a tool with returnDirect=true, rather than from the LLM", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
-    "CamelOpenAIResponse": { "index": 19, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": 
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The complete OpenAI 
response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
-    "CamelOpenAIEmbeddingModel": { "index": 20, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model to use for embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
-    "CamelOpenAIEmbeddingDimensions": { "index": 21, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of output dimensions", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
-    "CamelOpenAIEmbeddingResponseModel": { "index": 22, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The embedding model used in the 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
-    "CamelOpenAIEmbeddingCount": { "index": 23, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of embeddings returned", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
-    "CamelOpenAIEmbeddingVectorSize": { "index": 24, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Vector dimensions of the embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
-    "CamelOpenAIReferenceEmbedding": { "index": 25, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Reference embedding vector 
for similarity comparison", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
-    "CamelOpenAISimilarityScore": { "index": 26, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Calculated cosine similarity score (0.0 
to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
-    "CamelOpenAIOriginalText": { "index": 27, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String or 
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Original text content when embeddings 
operation is used", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
+    "CamelOpenAIStripThinking": { "index": 10, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether to strip ... blocks from the 
response body", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#STRIP_THINKING" },
+    "CamelOpenAIThinkingContent": { "index": 11, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The thinking content extracted from ... 
blocks in the model response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#THINKING_CONTENT" },
+    "CamelOpenAIResponseModel": { "index": 12, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model used for the completion 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
+    "CamelOpenAIResponseId": { "index": 13, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The unique identifier for the completion response", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID" 
},
+    "CamelOpenAIFinishReason": { "index": 14, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The reason the completion finished (e.g., stop, length, 
content_filter)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
+    "CamelOpenAIPromptTokens": { "index": 15, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The number of tokens used in the prompt", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
+    "CamelOpenAICompletionTokens": { "index": 16, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The number of tokens used in the 
completion", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
+    "CamelOpenAITotalTokens": { "index": 17, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The total number of tokens used (prompt completion)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
+    "CamelOpenAIToolIterations": { "index": 18, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of tool call iterations 
performed in the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
+    "CamelOpenAIMcpToolCalls": { "index": 19, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": 
"java.util.List<String>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "List of tool names called 
during the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
+    "CamelOpenAIMcpReturnDirect": { "index": 20, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether the response came directly from 
a tool with returnDirect=true, rather than from the LLM", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
+    "CamelOpenAIResponse": { "index": 21, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": 
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The complete OpenAI 
response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
+    "CamelOpenAIEmbeddingModel": { "index": 22, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model to use for embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
+    "CamelOpenAIEmbeddingDimensions": { "index": 23, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of output dimensions", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
+    "CamelOpenAIEmbeddingResponseModel": { "index": 24, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The embedding model used in the 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
+    "CamelOpenAIEmbeddingCount": { "index": 25, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of embeddings returned", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
+    "CamelOpenAIEmbeddingVectorSize": { "index": 26, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Vector dimensions of the embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
+    "CamelOpenAIReferenceEmbedding": { "index": 27, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Reference embedding vector 
for similarity comparison", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
+    "CamelOpenAISimilarityScore": { "index": 28, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Calculated cosine similarity score (0.0 
to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
+    "CamelOpenAIOriginalText": { "index": 29, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String or 
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Original text content when embeddings 
operation is used", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
   },
   "properties": {
     "operation": { "index": 0, "kind": "path", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"org.apache.camel.component.openai.OpenAIOperations", "enum": [ 
"chat-completion", "embeddings", "tool-execution" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform: 'chat-completion', 'embeddings', or 'tool-execution'" },
@@ -85,23 +87,24 @@
     "outputClass": { "index": 19, "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": 20, "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": 21, "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": 22, "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": 23, "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": 24, "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": 25, "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": 26, "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 [...]
-    "oauthProfile": { "index": 27, "kind": "parameter", "displayName": "Oauth 
Profile", "group": "security", "label": "security", "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": "OAuth profile name for 
obtaining an access token via the OAuth 2.0 Client Cred [...]
-    "sslContextParameters": { "index": 28, "kind": "parameter", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "SSLContextParameters to 
use [...]
-    "sslEndpointAlgorithm": { "index": 29, "kind": "parameter", "displayName": 
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"https", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The endpoint identification algorith [...]
-    "sslKeymanagerAlgorithm": { "index": 30, "kind": "parameter", 
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "SunX509", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the key  [...]
-    "sslKeyPassword": { "index": 31, "kind": "parameter", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password of the private key in the key 
store file" },
-    "sslKeystoreLocation": { "index": 32, "kind": "parameter", "displayName": 
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key 
store file. This is optional and can be [...]
-    "sslKeystorePassword": { "index": 33, "kind": "parameter", "displayName": 
"Ssl Keystore Password", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The store password for the key store file" },
-    "sslKeystoreType": { "index": 34, "kind": "parameter", "displayName": "Ssl 
Keystore Type", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the key store file" },
-    "sslProtocol": { "index": 35, "kind": "parameter", "displayName": "Ssl 
Protocol", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"TLSv1.3", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The SSL protocol used to generate the 
SSLContext" },
-    "sslTrustmanagerAlgorithm": { "index": 36, "kind": "parameter", 
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "PKIX", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the tru [...]
-    "sslTruststoreLocation": { "index": 37, "kind": "parameter", 
"displayName": "Ssl Truststore Location", "group": "security", "label": 
"security", "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 location of the trust store file, used to 
validate the  [...]
-    "sslTruststorePassword": { "index": 38, "kind": "parameter", 
"displayName": "Ssl Truststore Password", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password for the trust store file. [...]
-    "sslTruststoreType": { "index": 39, "kind": "parameter", "displayName": 
"Ssl Truststore Type", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the trust store file" }
+    "stripThinking": { "index": 22, "kind": "parameter", "displayName": "Strip 
Thinking", "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": "Strip ... blocks from 
model responses (used by reasoning models like  [...]
+    "systemMessage": { "index": 23, "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": 24, "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": 25, "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": 26, "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": 27, "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 [...]
+    "oauthProfile": { "index": 28, "kind": "parameter", "displayName": "Oauth 
Profile", "group": "security", "label": "security", "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": "OAuth profile name for 
obtaining an access token via the OAuth 2.0 Client Cred [...]
+    "sslContextParameters": { "index": 29, "kind": "parameter", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "SSLContextParameters to 
use [...]
+    "sslEndpointAlgorithm": { "index": 30, "kind": "parameter", "displayName": 
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"https", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The endpoint identification algorith [...]
+    "sslKeymanagerAlgorithm": { "index": 31, "kind": "parameter", 
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "SunX509", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the key  [...]
+    "sslKeyPassword": { "index": 32, "kind": "parameter", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password of the private key in the key 
store file" },
+    "sslKeystoreLocation": { "index": 33, "kind": "parameter", "displayName": 
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key 
store file. This is optional and can be [...]
+    "sslKeystorePassword": { "index": 34, "kind": "parameter", "displayName": 
"Ssl Keystore Password", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The store password for the key store file" },
+    "sslKeystoreType": { "index": 35, "kind": "parameter", "displayName": "Ssl 
Keystore Type", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the key store file" },
+    "sslProtocol": { "index": 36, "kind": "parameter", "displayName": "Ssl 
Protocol", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"TLSv1.3", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The SSL protocol used to generate the 
SSLContext" },
+    "sslTrustmanagerAlgorithm": { "index": 37, "kind": "parameter", 
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "PKIX", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the tru [...]
+    "sslTruststoreLocation": { "index": 38, "kind": "parameter", 
"displayName": "Ssl Truststore Location", "group": "security", "label": 
"security", "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 location of the trust store file, used to 
validate the  [...]
+    "sslTruststorePassword": { "index": 39, "kind": "parameter", 
"displayName": "Ssl Truststore Password", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password for the trust store file. [...]
+    "sslTruststoreType": { "index": 40, "kind": "parameter", "displayName": 
"Ssl Truststore Type", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the trust store file" }
   }
 }
diff --git 
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
 
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
index 4c90c3b38db2..fd752107df0b 100644
--- 
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
+++ 
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointConfigurer.java
@@ -90,6 +90,8 @@ public class OpenAIEndpointConfigurer extends 
PropertyConfigurerSupport implemen
         case "storefullresponse":
         case "storeFullResponse": 
target.getConfiguration().setStoreFullResponse(property(camelContext, 
boolean.class, value)); return true;
         case "streaming": 
target.getConfiguration().setStreaming(property(camelContext, boolean.class, 
value)); return true;
+        case "stripthinking":
+        case "stripThinking": 
target.getConfiguration().setStripThinking(property(camelContext, 
boolean.class, value)); return true;
         case "systemmessage":
         case "systemMessage": 
target.getConfiguration().setSystemMessage(property(camelContext, 
java.lang.String.class, value)); return true;
         case "temperature": 
target.getConfiguration().setTemperature(property(camelContext, 
java.lang.Double.class, value)); return true;
@@ -171,6 +173,8 @@ public class OpenAIEndpointConfigurer extends 
PropertyConfigurerSupport implemen
         case "storefullresponse":
         case "storeFullResponse": return boolean.class;
         case "streaming": return boolean.class;
+        case "stripthinking":
+        case "stripThinking": return boolean.class;
         case "systemmessage":
         case "systemMessage": return java.lang.String.class;
         case "temperature": return java.lang.Double.class;
@@ -253,6 +257,8 @@ public class OpenAIEndpointConfigurer extends 
PropertyConfigurerSupport implemen
         case "storefullresponse":
         case "storeFullResponse": return 
target.getConfiguration().isStoreFullResponse();
         case "streaming": return target.getConfiguration().isStreaming();
+        case "stripthinking":
+        case "stripThinking": return 
target.getConfiguration().isStripThinking();
         case "systemmessage":
         case "systemMessage": return 
target.getConfiguration().getSystemMessage();
         case "temperature": return target.getConfiguration().getTemperature();
diff --git 
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
 
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
index af7361f1ec69..4f41e0861345 100644
--- 
a/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
+++ 
b/components/camel-ai/camel-openai/src/generated/java/org/apache/camel/component/openai/OpenAIEndpointUriFactory.java
@@ -23,7 +23,7 @@ public class OpenAIEndpointUriFactory extends 
org.apache.camel.support.component
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Map<String, String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(40);
+        Set<String> props = new HashSet<>(41);
         props.add("additionalBodyProperty");
         props.add("apiKey");
         props.add("autoToolExecution");
@@ -60,6 +60,7 @@ public class OpenAIEndpointUriFactory extends 
org.apache.camel.support.component
         props.add("sslTruststoreType");
         props.add("storeFullResponse");
         props.add("streaming");
+        props.add("stripThinking");
         props.add("systemMessage");
         props.add("temperature");
         props.add("topP");
diff --git 
a/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
 
b/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
index ca8547aa7820..51e7541effeb 100644
--- 
a/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
+++ 
b/components/camel-ai/camel-openai/src/generated/resources/META-INF/org/apache/camel/component/openai/openai.json
@@ -43,24 +43,26 @@
     "CamelOpenAIStreaming": { "index": 7, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "Boolean", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Whether to stream the response back incrementally", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#STREAMING" },
     "CamelOpenAIOutputClass": { "index": 8, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Class", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The Java class to use for structured output parsing", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#OUTPUT_CLASS" },
     "CamelOpenAIJsonSchema": { "index": 9, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The JSON schema to use for structured output 
validation", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#JSON_SCHEMA" },
-    "CamelOpenAIResponseModel": { "index": 10, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model used for the completion 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
-    "CamelOpenAIResponseId": { "index": 11, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The unique identifier for the completion response", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID" 
},
-    "CamelOpenAIFinishReason": { "index": 12, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The reason the completion finished (e.g., stop, length, 
content_filter)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
-    "CamelOpenAIPromptTokens": { "index": 13, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The number of tokens used in the prompt", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
-    "CamelOpenAICompletionTokens": { "index": 14, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The number of tokens used in the 
completion", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
-    "CamelOpenAITotalTokens": { "index": 15, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The total number of tokens used (prompt completion)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
-    "CamelOpenAIToolIterations": { "index": 16, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of tool call iterations 
performed in the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
-    "CamelOpenAIMcpToolCalls": { "index": 17, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": 
"java.util.List<String>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "List of tool names called 
during the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
-    "CamelOpenAIMcpReturnDirect": { "index": 18, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether the response came directly from 
a tool with returnDirect=true, rather than from the LLM", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
-    "CamelOpenAIResponse": { "index": 19, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": 
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The complete OpenAI 
response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
-    "CamelOpenAIEmbeddingModel": { "index": 20, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model to use for embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
-    "CamelOpenAIEmbeddingDimensions": { "index": 21, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of output dimensions", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
-    "CamelOpenAIEmbeddingResponseModel": { "index": 22, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The embedding model used in the 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
-    "CamelOpenAIEmbeddingCount": { "index": 23, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of embeddings returned", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
-    "CamelOpenAIEmbeddingVectorSize": { "index": 24, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Vector dimensions of the embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
-    "CamelOpenAIReferenceEmbedding": { "index": 25, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Reference embedding vector 
for similarity comparison", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
-    "CamelOpenAISimilarityScore": { "index": 26, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Calculated cosine similarity score (0.0 
to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
-    "CamelOpenAIOriginalText": { "index": 27, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String or 
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Original text content when embeddings 
operation is used", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
+    "CamelOpenAIStripThinking": { "index": 10, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether to strip ... blocks from the 
response body", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#STRIP_THINKING" },
+    "CamelOpenAIThinkingContent": { "index": 11, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The thinking content extracted from ... 
blocks in the model response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#THINKING_CONTENT" },
+    "CamelOpenAIResponseModel": { "index": 12, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model used for the completion 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE_MODEL" },
+    "CamelOpenAIResponseId": { "index": 13, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The unique identifier for the completion response", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#RESPONSE_ID" 
},
+    "CamelOpenAIFinishReason": { "index": 14, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The reason the completion finished (e.g., stop, length, 
content_filter)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#FINISH_REASON" },
+    "CamelOpenAIPromptTokens": { "index": 15, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The number of tokens used in the prompt", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#PROMPT_TOKENS" },
+    "CamelOpenAICompletionTokens": { "index": 16, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The number of tokens used in the 
completion", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#COMPLETION_TOKENS" },
+    "CamelOpenAITotalTokens": { "index": 17, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Integer", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The total number of tokens used (prompt completion)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOTAL_TOKENS" },
+    "CamelOpenAIToolIterations": { "index": 18, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of tool call iterations 
performed in the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#TOOL_ITERATIONS" },
+    "CamelOpenAIMcpToolCalls": { "index": 19, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": 
"java.util.List<String>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "List of tool names called 
during the agentic loop", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_TOOL_CALLS" },
+    "CamelOpenAIMcpReturnDirect": { "index": 20, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether the response came directly from 
a tool with returnDirect=true, rather than from the LLM", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#MCP_RETURN_DIRECT" },
+    "CamelOpenAIResponse": { "index": 21, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": 
"com.openai.models.ChatCompletion", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The complete OpenAI 
response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
+    "CamelOpenAIEmbeddingModel": { "index": 22, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The model to use for embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_MODEL" },
+    "CamelOpenAIEmbeddingDimensions": { "index": 23, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of output dimensions", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_DIMENSIONS" },
+    "CamelOpenAIEmbeddingResponseModel": { "index": 24, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The embedding model used in the 
response", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_RESPONSE_MODEL" },
+    "CamelOpenAIEmbeddingCount": { "index": 25, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Number of embeddings returned", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_COUNT" },
+    "CamelOpenAIEmbeddingVectorSize": { "index": 26, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Vector dimensions of the embeddings", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDING_VECTOR_SIZE" },
+    "CamelOpenAIReferenceEmbedding": { "index": 27, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "List<Float>", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Reference embedding vector 
for similarity comparison", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#REFERENCE_EMBEDDING" },
+    "CamelOpenAISimilarityScore": { "index": 28, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Calculated cosine similarity score (0.0 
to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SIMILARITY_SCORE" },
+    "CamelOpenAIOriginalText": { "index": 29, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String or 
List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Original text content when embeddings 
operation is used", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#ORIGINAL_TEXT" }
   },
   "properties": {
     "operation": { "index": 0, "kind": "path", "displayName": "Operation", 
"group": "producer", "label": "", "required": true, "type": "enum", "javaType": 
"org.apache.camel.component.openai.OpenAIOperations", "enum": [ 
"chat-completion", "embeddings", "tool-execution" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform: 'chat-completion', 'embeddings', or 'tool-execution'" },
@@ -85,23 +87,24 @@
     "outputClass": { "index": 19, "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": 20, "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": 21, "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": 22, "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": 23, "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": 24, "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": 25, "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": 26, "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 [...]
-    "oauthProfile": { "index": 27, "kind": "parameter", "displayName": "Oauth 
Profile", "group": "security", "label": "security", "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": "OAuth profile name for 
obtaining an access token via the OAuth 2.0 Client Cred [...]
-    "sslContextParameters": { "index": 28, "kind": "parameter", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "SSLContextParameters to 
use [...]
-    "sslEndpointAlgorithm": { "index": 29, "kind": "parameter", "displayName": 
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"https", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The endpoint identification algorith [...]
-    "sslKeymanagerAlgorithm": { "index": 30, "kind": "parameter", 
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "SunX509", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the key  [...]
-    "sslKeyPassword": { "index": 31, "kind": "parameter", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password of the private key in the key 
store file" },
-    "sslKeystoreLocation": { "index": 32, "kind": "parameter", "displayName": 
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key 
store file. This is optional and can be [...]
-    "sslKeystorePassword": { "index": 33, "kind": "parameter", "displayName": 
"Ssl Keystore Password", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The store password for the key store file" },
-    "sslKeystoreType": { "index": 34, "kind": "parameter", "displayName": "Ssl 
Keystore Type", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the key store file" },
-    "sslProtocol": { "index": 35, "kind": "parameter", "displayName": "Ssl 
Protocol", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"TLSv1.3", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The SSL protocol used to generate the 
SSLContext" },
-    "sslTrustmanagerAlgorithm": { "index": 36, "kind": "parameter", 
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "PKIX", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the tru [...]
-    "sslTruststoreLocation": { "index": 37, "kind": "parameter", 
"displayName": "Ssl Truststore Location", "group": "security", "label": 
"security", "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 location of the trust store file, used to 
validate the  [...]
-    "sslTruststorePassword": { "index": 38, "kind": "parameter", 
"displayName": "Ssl Truststore Password", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password for the trust store file. [...]
-    "sslTruststoreType": { "index": 39, "kind": "parameter", "displayName": 
"Ssl Truststore Type", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the trust store file" }
+    "stripThinking": { "index": 22, "kind": "parameter", "displayName": "Strip 
Thinking", "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": "Strip ... blocks from 
model responses (used by reasoning models like  [...]
+    "systemMessage": { "index": 23, "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": 24, "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": 25, "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": 26, "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": 27, "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 [...]
+    "oauthProfile": { "index": 28, "kind": "parameter", "displayName": "Oauth 
Profile", "group": "security", "label": "security", "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": "OAuth profile name for 
obtaining an access token via the OAuth 2.0 Client Cred [...]
+    "sslContextParameters": { "index": 29, "kind": "parameter", "displayName": 
"Ssl Context Parameters", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "SSLContextParameters to 
use [...]
+    "sslEndpointAlgorithm": { "index": 30, "kind": "parameter", "displayName": 
"Ssl Endpoint Algorithm", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"https", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The endpoint identification algorith [...]
+    "sslKeymanagerAlgorithm": { "index": 31, "kind": "parameter", 
"displayName": "Ssl Keymanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "SunX509", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the key  [...]
+    "sslKeyPassword": { "index": 32, "kind": "parameter", "displayName": "Ssl 
Key Password", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password of the private key in the key 
store file" },
+    "sslKeystoreLocation": { "index": 33, "kind": "parameter", "displayName": 
"Ssl Keystore Location", "group": "security", "label": "security", "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 location of the key 
store file. This is optional and can be [...]
+    "sslKeystorePassword": { "index": 34, "kind": "parameter", "displayName": 
"Ssl Keystore Password", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The store password for the key store file" },
+    "sslKeystoreType": { "index": 35, "kind": "parameter", "displayName": "Ssl 
Keystore Type", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the key store file" },
+    "sslProtocol": { "index": 36, "kind": "parameter", "displayName": "Ssl 
Protocol", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"TLSv1.3", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The SSL protocol used to generate the 
SSLContext" },
+    "sslTrustmanagerAlgorithm": { "index": 37, "kind": "parameter", 
"displayName": "Ssl Trustmanager Algorithm", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "PKIX", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The algorithm used by the tru [...]
+    "sslTruststoreLocation": { "index": 38, "kind": "parameter", 
"displayName": "Ssl Truststore Location", "group": "security", "label": 
"security", "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 location of the trust store file, used to 
validate the  [...]
+    "sslTruststorePassword": { "index": 39, "kind": "parameter", 
"displayName": "Ssl Truststore Password", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The password for the trust store file. [...]
+    "sslTruststoreType": { "index": 40, "kind": "parameter", "displayName": 
"Ssl Truststore Type", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"JKS", "configurationClass": 
"org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": 
"configuration", "description": "The file format of the trust store file" }
   }
 }
diff --git 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
index 8b2072658513..2b3031787897 100644
--- 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
+++ 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConfiguration.java
@@ -101,6 +101,11 @@ public class OpenAIConfiguration implements Cloneable {
     @Metadata(description = "Store the full response in the exchange property 
'CamelOpenAIResponse' in non-streaming mode")
     private boolean storeFullResponse = false;
 
+    @UriParam(defaultValue = "false")
+    @Metadata(description = "Strip <think>...</think> blocks from model 
responses (used by reasoning models like Qwen3, DeepSeek-R1). "
+                            + "The thinking content is stored in the 
CamelOpenAIThinkingContent header.")
+    private boolean stripThinking = false;
+
     @UriParam(prefix = "additionalBodyProperty.", multiValue = true)
     @Metadata(description = "Additional JSON properties to include in the 
request body (e.g. additionalBodyProperty.traceId=123)")
     private Map<String, Object> additionalBodyProperty;
@@ -335,6 +340,14 @@ public class OpenAIConfiguration implements Cloneable {
         this.storeFullResponse = storeFullResponse;
     }
 
+    public boolean isStripThinking() {
+        return stripThinking;
+    }
+
+    public void setStripThinking(boolean stripThinking) {
+        this.stripThinking = stripThinking;
+    }
+
     public Map<String, Object> getAdditionalBodyProperty() {
         return additionalBodyProperty;
     }
diff --git 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
index d7db6b365f48..c53a6884521b 100644
--- 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
+++ 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIConstants.java
@@ -46,8 +46,13 @@ public final class OpenAIConstants {
     public static final String OUTPUT_CLASS = "CamelOpenAIOutputClass";
     @Metadata(description = "The JSON schema to use for structured output 
validation", javaType = "String")
     public static final String JSON_SCHEMA = "CamelOpenAIJsonSchema";
+    @Metadata(description = "Whether to strip <think>...</think> blocks from 
the response body", javaType = "Boolean")
+    public static final String STRIP_THINKING = "CamelOpenAIStripThinking";
 
     // Output Headers
+    @Metadata(description = "The thinking content extracted from 
<think>...</think> blocks in the model response",
+              javaType = "String")
+    public static final String THINKING_CONTENT = "CamelOpenAIThinkingContent";
     @Metadata(description = "The model used for the completion response", 
javaType = "String")
     public static final String RESPONSE_MODEL = "CamelOpenAIResponseModel";
     @Metadata(description = "The unique identifier for the completion 
response", javaType = "String")
diff --git 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
index b2366ffa5a0f..00abe458cf67 100644
--- 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
+++ 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java
@@ -27,6 +27,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -69,6 +71,7 @@ public class OpenAIProducer extends DefaultAsyncProducer {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(OpenAIProducer.class);
     private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+    private static final Pattern THINK_PATTERN = 
Pattern.compile("^\\s*<think>(.*?)</think>\\s*", Pattern.DOTALL);
 
     public OpenAIProducer(OpenAIEndpoint endpoint) {
         super(endpoint);
@@ -383,6 +386,7 @@ public class OpenAIProducer extends DefaultAsyncProducer {
             
exchange.getMessage().setBody(response.choices().get(0).message().toolCalls());
         } else {
             String content = 
response.choices().get(0).message().content().orElse("");
+            content = processThinkingContent(exchange, content, config);
             exchange.getMessage().setBody(content);
         }
         setResponseHeaders(exchange.getMessage(), response);
@@ -415,6 +419,7 @@ public class OpenAIProducer extends DefaultAsyncProducer {
                 LOG.debug("Agentic loop completed after {} iterations, finish 
reason: {}", iteration,
                         getFinishReasonString(choice));
                 String content = choice.message().content().orElse("");
+                content = processThinkingContent(exchange, content, config);
                 exchange.getMessage().setBody(content);
                 setResponseHeaders(exchange.getMessage(), response);
                 
exchange.getMessage().setHeader(OpenAIConstants.TOOL_ITERATIONS, iteration);
@@ -730,6 +735,23 @@ public class OpenAIProducer extends DefaultAsyncProducer {
         }
     }
 
+    private String processThinkingContent(Exchange exchange, String content, 
OpenAIConfiguration config) {
+        Boolean strip = resolveParameter(
+                exchange.getIn(), OpenAIConstants.STRIP_THINKING, 
config.isStripThinking(), Boolean.class);
+        if (!Boolean.TRUE.equals(strip)) {
+            return content;
+        }
+        Matcher matcher = THINK_PATTERN.matcher(content);
+        if (matcher.find()) {
+            String thinking = matcher.group(1).trim();
+            if (!thinking.isEmpty()) {
+                
exchange.getMessage().setHeader(OpenAIConstants.THINKING_CONTENT, thinking);
+            }
+            return matcher.replaceFirst("").trim();
+        }
+        return content;
+    }
+
     private <T> T resolveParameter(Message message, String headerName, T 
defaultValue, Class<T> type) {
         T headerValue = message.getHeader(headerName, type);
         return ObjectHelper.isNotEmpty(headerValue) ? headerValue : 
defaultValue;
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
index 21a722c59c84..3231c4da3a30 100644
--- 
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
@@ -571,6 +571,40 @@ public interface OpenAIEndpointBuilderFactory {
             doSetProperty("streaming", streaming);
             return this;
         }
+        /**
+         * Strip ... blocks from model responses (used by reasoning models like
+         * Qwen3, DeepSeek-R1). The thinking content is stored in the
+         * CamelOpenAIThinkingContent header.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param stripThinking the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder stripThinking(boolean stripThinking) {
+            doSetProperty("stripThinking", stripThinking);
+            return this;
+        }
+        /**
+         * Strip ... blocks from model responses (used by reasoning models like
+         * Qwen3, DeepSeek-R1). The thinking content is stored in the
+         * CamelOpenAIThinkingContent header.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param stripThinking the value to set
+         * @return the dsl builder
+         */
+        default OpenAIEndpointBuilder stripThinking(String stripThinking) {
+            doSetProperty("stripThinking", stripThinking);
+            return this;
+        }
         /**
          * System message to prepend. When set and conversationMemory is
          * enabled, the conversation history is reset.
@@ -1132,6 +1166,30 @@ public interface OpenAIEndpointBuilderFactory {
         public String openAIJsonSchema() {
             return "CamelOpenAIJsonSchema";
         }
+        /**
+         * Whether to strip ... blocks from the response body.
+         * 
+         * The option is a: {@code Boolean} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code OpenAIStripThinking}.
+         */
+        public String openAIStripThinking() {
+            return "CamelOpenAIStripThinking";
+        }
+        /**
+         * The thinking content extracted from ... blocks in the model 
response.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code OpenAIThinkingContent}.
+         */
+        public String openAIThinkingContent() {
+            return "CamelOpenAIThinkingContent";
+        }
         /**
          * The model used for the completion response.
          * 

Reply via email to