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

davsclaus pushed a commit to branch backport/CAMEL-24539-to-camel-4.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b322e38a9787b9da972705e57f1425de6560d033
Author: Guillaume Nodet <[email protected]>
AuthorDate: Fri Sep 11 14:18:41 2026 +0000

    [backport camel-4.22.x] CAMEL-24539: camel-openai - store embeddings and 
audio full responses under operation-specific properties
    
    Backport of #26110 (cherry picked from commit 
bd89b383fe41441f0165cc7d228da011c34eaf5a).
    
    Supersedes #26337, whose automatic conflict resolution left a stray 
duplicate
    `/**` in the generated OpenAIEndpointBuilderFactory, so the "uncommitted 
changes"
    CI check failed after regeneration. The generated sources here match `mvn 
-Pregen`
    output (verified by rebuilding camel-openai, camel-catalog and 
camel-endpointdsl).
    
    The upgrade-guide note is added to camel-4x-upgrade-guide-4_22.adoc, since 
4.22.1
    is the first release on this line to carry the change.
    
    Signed-off-by: Claus Ibsen <[email protected]>
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---
 .../apache/camel/catalog/components/openai.json    | 47 ++++++++++---------
 .../org/apache/camel/component/openai/openai.json  | 47 ++++++++++---------
 .../openai/OpenAIAudioTranscriptionProducer.java   |  2 +-
 .../openai/OpenAIAudioTranslationProducer.java     |  2 +-
 .../component/openai/OpenAIConfiguration.java      |  5 ++-
 .../camel/component/openai/OpenAIConstants.java    |  9 ++++
 .../component/openai/OpenAIEmbeddingsProducer.java |  2 +-
 .../component/openai/OpenAIEmbeddingsMockTest.java | 10 +++--
 .../ROOT/pages/camel-4x-upgrade-guide-4_22.adoc    | 14 ++++++
 .../endpoint/dsl/OpenAIEndpointBuilderFactory.java | 52 +++++++++++++++++++++-
 10 files changed, 136 insertions(+), 54 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 bfc0bfb36215..a853775d3c12 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
@@ -63,27 +63,30 @@
     "CamelOpenAIAgenticTotalTokens": { "index": 26, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Cumulative total tokens consumed across 
all agentic loop iterations", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AGENTIC_TOTAL_TOKENS" },
     "CamelOpenAIResponse": { "index": 27, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": 
"com.openai.models.chat.completions.ChatCompletion", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
complete OpenAI chat completion response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
     "CamelOpenAIResponsesResponse": { "index": 28, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "com.openai.models.responses.Response", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
complete OpenAI Responses API response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSES_RESPONSE" },
-    "CamelOpenAIEmbeddingModel": { "index": 29, "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": 30, "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": 31, "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": 32, "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": 33, "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": 34, "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": 35, "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": 36, "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" },
-    "CamelOpenAIAudioModel": { "index": 37, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for audio transcription", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#AUDIO_MODEL" 
},
-    "CamelOpenAIAudioLanguage": { "index": 38, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The language of the input audio 
(ISO-639-1)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_LANGUAGE" },
-    "CamelOpenAIAudioResponseFormat": { "index": 39, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The response format for audio 
transcription (json, text, srt, verbose_json, vtt)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_RESPONSE_FORMAT" },
-    "CamelOpenAIAudioTemperature": { "index": 40, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Sampling temperature for audio 
transcription (0.0 to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TEMPERATURE" },
-    "CamelOpenAIAudioPrompt": { "index": 41, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Optional text to guide the model's style or continue a 
previous audio segment", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_PROMPT" },
-    "CamelOpenAIAudioTimestampGranularities": { "index": 42, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Comma-separated timestamp 
granularities: word, segment, or word,segment (verbose_json only)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TIMESTAMP_GRANULARITIES"
 },
-    "CamelOpenAIAudioDuration": { "index": 43, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Duration of the audio in seconds 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DURATION" },
-    "CamelOpenAIAudioDetectedLanguage": { "index": 44, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Language detected in the audio 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DETECTED_LANGUAGE" },
-    "CamelOpenAISpeechModel": { "index": 45, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for text-to-speech (e.g., 
gpt-4o-mini-tts, tts-1, tts-1-hd)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_MODEL" },
-    "CamelOpenAISpeechVoice": { "index": 46, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The voice to use for the generated audio (e.g., alloy, 
echo, fable, onyx, nova, shimmer)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_VOICE" },
-    "CamelOpenAISpeechResponseFormat": { "index": 47, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The audio format for text-to-speech 
output (mp3, opus, aac, flac, wav, pcm)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_RESPONSE_FORMAT" },
-    "CamelOpenAISpeechSpeed": { "index": 48, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Double", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The speed of the generated audio (0.25 to 4.0, where 1.0 
is normal speed)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_SPEED" },
-    "CamelOpenAISpeechInstructions": { "index": 49, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Optional instructions to control the 
voice of the generated audio (does not work with tts-1 or tts-1-hd)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_INSTRUCTIONS" }
+    "CamelOpenAIEmbeddingsResponse": { "index": 29, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "com.openai.models.embeddings.CreateEmbeddingResponse", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The complete OpenAI embeddings response object", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDINGS_RESPONSE" },
+    "CamelOpenAIAudioTranscriptionResponse": { "index": 30, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": 
"com.openai.models.audio.transcriptions.TranscriptionCreateResponse", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The complete OpenAI audio transcription response 
object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TRANSCRIPTION_RESPONSE"
 },
+    "CamelOpenAIAudioTranslationResponse": { "index": 31, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "com.openai.models.audio.translations.TranslationCreateResponse", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The complete OpenAI audio translation response object", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TRANSLATION_RESPONSE" 
},
+    "CamelOpenAIEmbeddingModel": { "index": 32, "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": 33, "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": 34, "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": 35, "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": 36, "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": 37, "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": 38, "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": 39, "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" },
+    "CamelOpenAIAudioModel": { "index": 40, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for audio transcription", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#AUDIO_MODEL" 
},
+    "CamelOpenAIAudioLanguage": { "index": 41, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The language of the input audio 
(ISO-639-1)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_LANGUAGE" },
+    "CamelOpenAIAudioResponseFormat": { "index": 42, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The response format for audio 
transcription (json, text, srt, verbose_json, vtt)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_RESPONSE_FORMAT" },
+    "CamelOpenAIAudioTemperature": { "index": 43, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Sampling temperature for audio 
transcription (0.0 to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TEMPERATURE" },
+    "CamelOpenAIAudioPrompt": { "index": 44, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Optional text to guide the model's style or continue a 
previous audio segment", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_PROMPT" },
+    "CamelOpenAIAudioTimestampGranularities": { "index": 45, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Comma-separated timestamp 
granularities: word, segment, or word,segment (verbose_json only)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TIMESTAMP_GRANULARITIES"
 },
+    "CamelOpenAIAudioDuration": { "index": 46, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Duration of the audio in seconds 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DURATION" },
+    "CamelOpenAIAudioDetectedLanguage": { "index": 47, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Language detected in the audio 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DETECTED_LANGUAGE" },
+    "CamelOpenAISpeechModel": { "index": 48, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for text-to-speech (e.g., 
gpt-4o-mini-tts, tts-1, tts-1-hd)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_MODEL" },
+    "CamelOpenAISpeechVoice": { "index": 49, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The voice to use for the generated audio (e.g., alloy, 
echo, fable, onyx, nova, shimmer)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_VOICE" },
+    "CamelOpenAISpeechResponseFormat": { "index": 50, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The audio format for text-to-speech 
output (mp3, opus, aac, flac, wav, pcm)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_RESPONSE_FORMAT" },
+    "CamelOpenAISpeechSpeed": { "index": 51, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Double", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The speed of the generated audio (0.25 to 4.0, where 1.0 
is normal speed)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_SPEED" },
+    "CamelOpenAISpeechInstructions": { "index": 52, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Optional instructions to control the 
voice of the generated audio (does not work with tts-1 or tts-1-hd)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_INSTRUCTIONS" }
   },
   "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", "responses", "embeddings", "tool-execution", 
"audio-transcription", "audio-translation", "audio-speech" ], "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The operation to perform: 'chat-completion', 'resp [...]
@@ -132,7 +135,7 @@
     "speechResponseFormat": { "index": 43, "kind": "parameter", "displayName": 
"Speech Response Format", "group": "producer", "label": "", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "mp3", "opus", "aac", 
"flac", "wav", "pcm" ], "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "mp3", 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "descrip [...]
     "speechSpeed": { "index": 44, "kind": "parameter", "displayName": "Speech 
Speed", "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": "The speed of the generated audio, from 0.25 to 
4.0 where 1.0 is normal speed" },
     "speechVoice": { "index": 45, "kind": "parameter", "displayName": "Speech 
Voice", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "alloy", 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "The voice to use for 
text-to-speech (e.g., alloy, echo, fable,  [...]
-    "storeFullResponse": { "index": 46, "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 SDK response in non-streaming 
mode: chat-comp [...]
+    "storeFullResponse": { "index": 46, "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 SDK response in non-streaming 
mode: chat-comp [...]
     "streaming": { "index": 47, "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" },
     "stripThinking": { "index": 48, "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": 49, "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 [...]
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 bfc0bfb36215..a853775d3c12 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
@@ -63,27 +63,30 @@
     "CamelOpenAIAgenticTotalTokens": { "index": 26, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Cumulative total tokens consumed across 
all agentic loop iterations", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AGENTIC_TOTAL_TOKENS" },
     "CamelOpenAIResponse": { "index": 27, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": 
"com.openai.models.chat.completions.ChatCompletion", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
complete OpenAI chat completion response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSE" },
     "CamelOpenAIResponsesResponse": { "index": 28, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "com.openai.models.responses.Response", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
complete OpenAI Responses API response object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#RESPONSES_RESPONSE" },
-    "CamelOpenAIEmbeddingModel": { "index": 29, "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": 30, "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": 31, "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": 32, "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": 33, "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": 34, "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": 35, "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": 36, "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" },
-    "CamelOpenAIAudioModel": { "index": 37, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for audio transcription", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#AUDIO_MODEL" 
},
-    "CamelOpenAIAudioLanguage": { "index": 38, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The language of the input audio 
(ISO-639-1)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_LANGUAGE" },
-    "CamelOpenAIAudioResponseFormat": { "index": 39, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The response format for audio 
transcription (json, text, srt, verbose_json, vtt)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_RESPONSE_FORMAT" },
-    "CamelOpenAIAudioTemperature": { "index": 40, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Sampling temperature for audio 
transcription (0.0 to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TEMPERATURE" },
-    "CamelOpenAIAudioPrompt": { "index": 41, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Optional text to guide the model's style or continue a 
previous audio segment", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_PROMPT" },
-    "CamelOpenAIAudioTimestampGranularities": { "index": 42, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Comma-separated timestamp 
granularities: word, segment, or word,segment (verbose_json only)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TIMESTAMP_GRANULARITIES"
 },
-    "CamelOpenAIAudioDuration": { "index": 43, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Duration of the audio in seconds 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DURATION" },
-    "CamelOpenAIAudioDetectedLanguage": { "index": 44, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Language detected in the audio 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DETECTED_LANGUAGE" },
-    "CamelOpenAISpeechModel": { "index": 45, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for text-to-speech (e.g., 
gpt-4o-mini-tts, tts-1, tts-1-hd)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_MODEL" },
-    "CamelOpenAISpeechVoice": { "index": 46, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The voice to use for the generated audio (e.g., alloy, 
echo, fable, onyx, nova, shimmer)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_VOICE" },
-    "CamelOpenAISpeechResponseFormat": { "index": 47, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The audio format for text-to-speech 
output (mp3, opus, aac, flac, wav, pcm)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_RESPONSE_FORMAT" },
-    "CamelOpenAISpeechSpeed": { "index": 48, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Double", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The speed of the generated audio (0.25 to 4.0, where 1.0 
is normal speed)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_SPEED" },
-    "CamelOpenAISpeechInstructions": { "index": 49, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Optional instructions to control the 
voice of the generated audio (does not work with tts-1 or tts-1-hd)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_INSTRUCTIONS" }
+    "CamelOpenAIEmbeddingsResponse": { "index": 29, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "com.openai.models.embeddings.CreateEmbeddingResponse", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The complete OpenAI embeddings response object", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#EMBEDDINGS_RESPONSE" },
+    "CamelOpenAIAudioTranscriptionResponse": { "index": 30, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": 
"com.openai.models.audio.transcriptions.TranscriptionCreateResponse", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The complete OpenAI audio transcription response 
object", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TRANSCRIPTION_RESPONSE"
 },
+    "CamelOpenAIAudioTranslationResponse": { "index": 31, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "com.openai.models.audio.translations.TranslationCreateResponse", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The complete OpenAI audio translation response object", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TRANSLATION_RESPONSE" 
},
+    "CamelOpenAIEmbeddingModel": { "index": 32, "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": 33, "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": 34, "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": 35, "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": 36, "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": 37, "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": 38, "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": 39, "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" },
+    "CamelOpenAIAudioModel": { "index": 40, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for audio transcription", 
"constantName": "org.apache.camel.component.openai.OpenAIConstants#AUDIO_MODEL" 
},
+    "CamelOpenAIAudioLanguage": { "index": 41, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The language of the input audio 
(ISO-639-1)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_LANGUAGE" },
+    "CamelOpenAIAudioResponseFormat": { "index": 42, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The response format for audio 
transcription (json, text, srt, verbose_json, vtt)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_RESPONSE_FORMAT" },
+    "CamelOpenAIAudioTemperature": { "index": 43, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Sampling temperature for audio 
transcription (0.0 to 1.0)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TEMPERATURE" },
+    "CamelOpenAIAudioPrompt": { "index": 44, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Optional text to guide the model's style or continue a 
previous audio segment", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_PROMPT" },
+    "CamelOpenAIAudioTimestampGranularities": { "index": 45, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Comma-separated timestamp 
granularities: word, segment, or word,segment (verbose_json only)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_TIMESTAMP_GRANULARITIES"
 },
+    "CamelOpenAIAudioDuration": { "index": 46, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Duration of the audio in seconds 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DURATION" },
+    "CamelOpenAIAudioDetectedLanguage": { "index": 47, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Language detected in the audio 
(verbose_json only)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#AUDIO_DETECTED_LANGUAGE" },
+    "CamelOpenAISpeechModel": { "index": 48, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The model to use for text-to-speech (e.g., 
gpt-4o-mini-tts, tts-1, tts-1-hd)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_MODEL" },
+    "CamelOpenAISpeechVoice": { "index": 49, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The voice to use for the generated audio (e.g., alloy, 
echo, fable, onyx, nova, shimmer)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_VOICE" },
+    "CamelOpenAISpeechResponseFormat": { "index": 50, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The audio format for text-to-speech 
output (mp3, opus, aac, flac, wav, pcm)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_RESPONSE_FORMAT" },
+    "CamelOpenAISpeechSpeed": { "index": 51, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": "Double", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The speed of the generated audio (0.25 to 4.0, where 1.0 
is normal speed)", "constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_SPEED" },
+    "CamelOpenAISpeechInstructions": { "index": 52, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Optional instructions to control the 
voice of the generated audio (does not work with tts-1 or tts-1-hd)", 
"constantName": 
"org.apache.camel.component.openai.OpenAIConstants#SPEECH_INSTRUCTIONS" }
   },
   "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", "responses", "embeddings", "tool-execution", 
"audio-transcription", "audio-translation", "audio-speech" ], "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The operation to perform: 'chat-completion', 'resp [...]
@@ -132,7 +135,7 @@
     "speechResponseFormat": { "index": 43, "kind": "parameter", "displayName": 
"Speech Response Format", "group": "producer", "label": "", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "mp3", "opus", "aac", 
"flac", "wav", "pcm" ], "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "mp3", 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "descrip [...]
     "speechSpeed": { "index": 44, "kind": "parameter", "displayName": "Speech 
Speed", "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": "The speed of the generated audio, from 0.25 to 
4.0 where 1.0 is normal speed" },
     "speechVoice": { "index": 45, "kind": "parameter", "displayName": "Speech 
Voice", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "alloy", 
"configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", 
"configurationField": "configuration", "description": "The voice to use for 
text-to-speech (e.g., alloy, echo, fable,  [...]
-    "storeFullResponse": { "index": 46, "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 SDK response in non-streaming 
mode: chat-comp [...]
+    "storeFullResponse": { "index": 46, "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 SDK response in non-streaming 
mode: chat-comp [...]
     "streaming": { "index": 47, "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" },
     "stripThinking": { "index": 48, "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": 49, "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 [...]
diff --git 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranscriptionProducer.java
 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranscriptionProducer.java
index ff379f212567..c4a22873ebb4 100644
--- 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranscriptionProducer.java
+++ 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranscriptionProducer.java
@@ -113,7 +113,7 @@ public class OpenAIAudioTranscriptionProducer extends 
DefaultProducer {
         }
 
         if (config.isStoreFullResponse()) {
-            exchange.setProperty(OpenAIConstants.RESPONSE, response);
+            exchange.setProperty(OpenAIConstants.AUDIO_TRANSCRIPTION_RESPONSE, 
response);
         }
     }
 }
diff --git 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranslationProducer.java
 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranslationProducer.java
index a5398ca2bcd3..df18e7285c13 100644
--- 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranslationProducer.java
+++ 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIAudioTranslationProducer.java
@@ -90,7 +90,7 @@ public class OpenAIAudioTranslationProducer extends 
DefaultProducer {
         }
 
         if (config.isStoreFullResponse()) {
-            exchange.setProperty(OpenAIConstants.RESPONSE, response);
+            exchange.setProperty(OpenAIConstants.AUDIO_TRANSLATION_RESPONSE, 
response);
         }
     }
 }
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 f7006e33ae40..e684fec93f1b 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
@@ -149,7 +149,10 @@ public class OpenAIConfiguration implements Cloneable {
 
     @UriParam(defaultValue = "false")
     @Metadata(description = "Store the full SDK response in non-streaming 
mode: chat-completion uses exchange property "
-                            + "'CamelOpenAIResponse'; responses uses 
'CamelOpenAIResponsesResponse'")
+                            + "'CamelOpenAIResponse'; responses uses 
'CamelOpenAIResponsesResponse'; "
+                            + "embeddings uses 
'CamelOpenAIEmbeddingsResponse'; "
+                            + "audio transcription uses 
'CamelOpenAIAudioTranscriptionResponse'; "
+                            + "audio translation uses 
'CamelOpenAIAudioTranslationResponse'")
     private boolean storeFullResponse = false;
 
     @UriParam(defaultValue = "false")
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 414a8ce4def0..076caf43b138 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
@@ -101,6 +101,15 @@ public final class OpenAIConstants {
     @Metadata(description = "The complete OpenAI Responses API response 
object",
               javaType = "com.openai.models.responses.Response")
     public static final String RESPONSES_RESPONSE = 
"CamelOpenAIResponsesResponse";
+    @Metadata(description = "The complete OpenAI embeddings response object",
+              javaType = 
"com.openai.models.embeddings.CreateEmbeddingResponse")
+    public static final String EMBEDDINGS_RESPONSE = 
"CamelOpenAIEmbeddingsResponse";
+    @Metadata(description = "The complete OpenAI audio transcription response 
object",
+              javaType = 
"com.openai.models.audio.transcriptions.TranscriptionCreateResponse")
+    public static final String AUDIO_TRANSCRIPTION_RESPONSE = 
"CamelOpenAIAudioTranscriptionResponse";
+    @Metadata(description = "The complete OpenAI audio translation response 
object",
+              javaType = 
"com.openai.models.audio.translations.TranslationCreateResponse")
+    public static final String AUDIO_TRANSLATION_RESPONSE = 
"CamelOpenAIAudioTranslationResponse";
 
     // Embeddings Input Headers
     @Metadata(description = "The model to use for embeddings", javaType = 
"String")
diff --git 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEmbeddingsProducer.java
 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEmbeddingsProducer.java
index 08035cae875f..4a917a86cbd4 100644
--- 
a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEmbeddingsProducer.java
+++ 
b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIEmbeddingsProducer.java
@@ -104,7 +104,7 @@ public class OpenAIEmbeddingsProducer extends 
DefaultAsyncProducer {
                 .embeddings().create(params);
 
         if (config.isStoreFullResponse()) {
-            exchange.setProperty(OpenAIConstants.RESPONSE, response);
+            exchange.setProperty(OpenAIConstants.EMBEDDINGS_RESPONSE, 
response);
         }
 
         // Extract embeddings
diff --git 
a/components/camel-ai/camel-openai/src/test/java/org/apache/camel/component/openai/OpenAIEmbeddingsMockTest.java
 
b/components/camel-ai/camel-openai/src/test/java/org/apache/camel/component/openai/OpenAIEmbeddingsMockTest.java
index 2624517f3f2e..9c466a0061a3 100644
--- 
a/components/camel-ai/camel-openai/src/test/java/org/apache/camel/component/openai/OpenAIEmbeddingsMockTest.java
+++ 
b/components/camel-ai/camel-openai/src/test/java/org/apache/camel/component/openai/OpenAIEmbeddingsMockTest.java
@@ -184,8 +184,10 @@ public class OpenAIEmbeddingsMockTest extends 
CamelTestSupport {
         Exchange result = template.request("direct:embedding-store-response",
                 e -> e.getIn().setBody("What is Apache Camel?"));
 
-        assertNotNull(result.getProperty(OpenAIConstants.RESPONSE),
-                "storeFullResponse=true must store the full response in the 
CamelOpenAIResponse exchange property");
+        assertNotNull(result.getProperty(OpenAIConstants.EMBEDDINGS_RESPONSE),
+                "storeFullResponse=true must store the full embeddings 
response in the CamelOpenAIEmbeddingsResponse property");
+        assertNull(result.getProperty(OpenAIConstants.RESPONSE),
+                "the embeddings response must not be stored under the 
chat-completion CamelOpenAIResponse property");
     }
 
     @Test
@@ -193,7 +195,7 @@ public class OpenAIEmbeddingsMockTest extends 
CamelTestSupport {
         Exchange result = template.request("direct:embedding",
                 e -> e.getIn().setBody("What is Apache Camel?"));
 
-        assertNull(result.getProperty(OpenAIConstants.RESPONSE),
-                "storeFullResponse defaults to false, so CamelOpenAIResponse 
should not be set");
+        assertNull(result.getProperty(OpenAIConstants.EMBEDDINGS_RESPONSE),
+                "storeFullResponse defaults to false, so 
CamelOpenAIEmbeddingsResponse should not be set");
     }
 }
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc
index d4009b3bce27..c5283cf95027 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc
@@ -1926,3 +1926,17 @@ as a header cannot take effect. A route that set either 
header was silently igno
 Configure the `target` and `credentials` endpoint options instead, or route to 
a different endpoint
 with `toD` when the destination varies per message. The constants remain in 
place for backwards
 compatibility and are now marked deprecated in the component metadata.
+
+=== camel-openai
+
+When `storeFullResponse=true`, the embeddings and audio operations now store 
their full SDK response
+under an operation-specific exchange property instead of the chat-completion 
property `CamelOpenAIResponse`.
+That property is typed as the chat-completion response 
(`com.openai.models.chat.completions.ChatCompletion`),
+so a downstream reader that expected that type received an incompatible object.
+
+* embeddings now use `CamelOpenAIEmbeddingsResponse` 
(`com.openai.models.embeddings.CreateEmbeddingResponse`).
+* audio transcription now uses `CamelOpenAIAudioTranscriptionResponse` 
(`com.openai.models.audio.transcriptions.TranscriptionCreateResponse`).
+* audio translation now uses `CamelOpenAIAudioTranslationResponse` 
(`com.openai.models.audio.translations.TranslationCreateResponse`).
+
+A route that reads the full embeddings or audio response from 
`CamelOpenAIResponse` must switch to the
+matching property. The chat-completion and responses operations are unchanged.
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 6cb8599d24f7..b1f93e8dac5a 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
@@ -1210,7 +1210,10 @@ public interface OpenAIEndpointBuilderFactory {
         /**
          * Store the full SDK response in non-streaming mode: chat-completion
          * uses exchange property 'CamelOpenAIResponse'; responses uses
-         * 'CamelOpenAIResponsesResponse'.
+         * 'CamelOpenAIResponsesResponse'; embeddings uses
+         * 'CamelOpenAIEmbeddingsResponse'; audio transcription uses
+         * 'CamelOpenAIAudioTranscriptionResponse'; audio translation uses
+         * 'CamelOpenAIAudioTranslationResponse'.
          * 
          * The option is a: <code>boolean</code> type.
          * 
@@ -1227,7 +1230,10 @@ public interface OpenAIEndpointBuilderFactory {
         /**
          * Store the full SDK response in non-streaming mode: chat-completion
          * uses exchange property 'CamelOpenAIResponse'; responses uses
-         * 'CamelOpenAIResponsesResponse'.
+         * 'CamelOpenAIResponsesResponse'; embeddings uses
+         * 'CamelOpenAIEmbeddingsResponse'; audio transcription uses
+         * 'CamelOpenAIAudioTranscriptionResponse'; audio translation uses
+         * 'CamelOpenAIAudioTranslationResponse'.
          * 
          * The option will be converted to a <code>boolean</code> type.
          * 
@@ -2175,6 +2181,48 @@ public interface OpenAIEndpointBuilderFactory {
         public String openAIResponsesResponse() {
             return "CamelOpenAIResponsesResponse";
         }
+        /**
+         * The complete OpenAI embeddings response object.
+         * 
+         * The option is a: {@code
+         * com.openai.models.embeddings.CreateEmbeddingResponse} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code OpenAIEmbeddingsResponse}.
+         */
+        public String openAIEmbeddingsResponse() {
+            return "CamelOpenAIEmbeddingsResponse";
+        }
+        /**
+         * The complete OpenAI audio transcription response object.
+         * 
+         * The option is a: {@code
+         * com.openai.models.audio.transcriptions.TranscriptionCreateResponse}
+         * type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code
+         * OpenAIAudioTranscriptionResponse}.
+         */
+        public String openAIAudioTranscriptionResponse() {
+            return "CamelOpenAIAudioTranscriptionResponse";
+        }
+        /**
+         * The complete OpenAI audio translation response object.
+         * 
+         * The option is a: {@code
+         * com.openai.models.audio.translations.TranslationCreateResponse} 
type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code
+         * OpenAIAudioTranslationResponse}.
+         */
+        public String openAIAudioTranslationResponse() {
+            return "CamelOpenAIAudioTranslationResponse";
+        }
         /**
          * The model to use for embeddings.
          * 

Reply via email to