{ "component": { "kind": "component", "name": "openai", "title": "OpenAI", "description": "OpenAI endpoint for chat completion and embeddings.", "deprecated": false, "firstVersion": "3.32.0", "label": "ai", "javaType": "org.apache.camel.component.openai.OpenAIComponent", "supportLevel": "Stable", "nativeSupported": true, "metadata": { "quarkusVersion": "3.36.0", "camelArtifact": "org.apache.camel:camel-openai", "camelVersion": "4.20.0" }, "groupId": "org.apache.camel.quarkus", "artifactId": "camel-quarkus-openai", "version": "4.20.0 (CEQ 3.36.0)", "scheme": "openai", "extendsScheme": "", "syntax": "openai:operation", "async": false, "api": false, "consumerOnly": false, "producerOnly": true, "lenientProperties": false, "browsable": false, "remote": true }, "componentProperties": { "apiKey": { "index": 0, "kind": "property", "displayName": "Api Key", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Default API key for all endpoints" }, "baseUrl": { "index": 1, "kind": "property", "displayName": "Base Url", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https://api.openai.com/v1", "description": "Default base URL for all endpoints" }, "embeddingModel": { "index": 2, "kind": "property", "displayName": "Embedding Model", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Default model for embeddings endpoints" }, "lazyStartProducer": { "index": 3, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, "model": { "index": 4, "kind": "property", "displayName": "Model", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Default model for chat completion endpoints" }, "autowiredEnabled": { "index": 5, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, "useGlobalSslContextParameters": { "index": 6, "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters" } }, "headers": { "CamelOpenAIUserMessage": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The user message to send to the OpenAI chat completion API", "constantName": "org.apache.camel.component.openai.OpenAIConstants#USER_MESSAGE" }, "CamelOpenAISystemMessage": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The system message to provide context and instructions to the model", "constantName": "org.apache.camel.component.openai.OpenAIConstants#SYSTEM_MESSAGE" }, "CamelOpenAIDeveloperMessage": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The developer message to provide additional instructions to the model", "constantName": "org.apache.camel.component.openai.OpenAIConstants#DEVELOPER_MESSAGE" }, "CamelOpenAIModel": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The model to use for chat completion", "constantName": "org.apache.camel.component.openai.OpenAIConstants#MODEL" }, "CamelOpenAITemperature": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Controls randomness in the response. Higher values (e.g., 0.8) make output more random, lower values (e.g., 0.2) make it more deterministic", "constantName": "org.apache.camel.component.openai.OpenAIConstants#TEMPERATURE" }, "CamelOpenAITopP": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "An alternative to temperature for controlling randomness. Uses nucleus sampling where the model considers tokens with top_p probability mass", "constantName": "org.apache.camel.component.openai.OpenAIConstants#TOP_P" }, "CamelOpenAIMaxTokens": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The maximum number of tokens to generate in the completion", "constantName": "org.apache.camel.component.openai.OpenAIConstants#MAX_TOKENS" }, "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", "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", "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", "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'" }, "additionalBodyProperty": { "index": 1, "kind": "parameter", "displayName": "Additional Body Property", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.util.Map", "prefix": "additionalBodyProperty.", "multiValue": true, "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Additional JSON properties to include in the request body (e.g. additionalBodyProperty.traceId=123). This is a multi-value option with prefix: additionalBodyProperty." }, "apiKey": { "index": 2, "kind": "parameter", "displayName": "Api Key", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "OpenAI API key. Can also be set via OPENAI_API_KEY environment variable." }, "autoToolExecution": { "index": 3, "kind": "parameter", "displayName": "Auto Tool Execution", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "When true and MCP servers are configured, automatically execute tool calls and loop back to the model. When false, tool calls are returned as the message body for manual handling." }, "baseUrl": { "index": 4, "kind": "parameter", "displayName": "Base Url", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "https://api.openai.com/v1", "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Base URL for OpenAI API. Defaults to OpenAI's official endpoint. Can be used for local or third-party providers." }, "conversationHistoryProperty": { "index": 5, "kind": "parameter", "displayName": "Conversation History Property", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "CamelOpenAIConversationHistory", "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Exchange property name for storing conversation history" }, "conversationMemory": { "index": 6, "kind": "parameter", "displayName": "Conversation Memory", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Enable conversation memory per Exchange" }, "developerMessage": { "index": 7, "kind": "parameter", "displayName": "Developer Message", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Developer message to prepend before user messages" }, "dimensions": { "index": 8, "kind": "parameter", "displayName": "Dimensions", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Number of dimensions for the embedding output. Only supported by text-embedding-3 models. Reducing dimensions can lower costs and improve performance without significant quality loss." }, "embeddingModel": { "index": 9, "kind": "parameter", "displayName": "Embedding Model", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "The model to use for embeddings" }, "encodingFormat": { "index": 10, "kind": "parameter", "displayName": "Encoding Format", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "float", "base64" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "base64", "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "The format for embedding output: 'float' for list of floats, 'base64' for compressed format" }, "jsonSchema": { "index": 11, "kind": "parameter", "displayName": "Json Schema", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "JSON schema for structured output validation" }, "maxTokens": { "index": 12, "kind": "parameter", "displayName": "Max Tokens", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Maximum number of tokens to generate" }, "maxToolIterations": { "index": 13, "kind": "parameter", "displayName": "Max Tool Iterations", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 50, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Maximum number of tool call loop iterations to prevent infinite loops" }, "mcpProtocolVersions": { "index": 14, "kind": "parameter", "displayName": "Mcp Protocol Versions", "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": "Comma-separated list of MCP protocol versions to advertise when connecting to MCP servers using Streamable HTTP transport. When not set, the SDK default is used. Example: 2024-11-05,2025-03-26,2025-06-18" }, "mcpReconnect": { "index": 15, "kind": "parameter", "displayName": "Mcp Reconnect", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Automatically reconnect to MCP servers when a tool call fails due to a transport error, and retry the call once." }, "mcpServer": { "index": 16, "kind": "parameter", "displayName": "Mcp Server", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.util.Map", "prefix": "mcpServer.", "multiValue": true, "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "MCP (Model Context Protocol) server configurations. Define servers using prefix notation: mcpServer..transportType=stdiossestreamableHttp, mcpServer..command= (stdio), mcpServer..args= (stdio), mcpServer..url= (sse/streamableHttp), mcpServer..oauthProfile= (OAuth profile for HTTP auth, requires camel-oauth). This is a multi-value option with prefix: mcpServer." }, "mcpTimeout": { "index": 17, "kind": "parameter", "displayName": "Mcp Timeout", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 20, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "Timeout in seconds for MCP tool call requests. Applies to all MCP operations including tool execution and initialization." }, "model": { "index": 18, "kind": "parameter", "displayName": "Model", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "The model to use for chat completion" }, "outputClass": { "index": 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 'CamelOpenAIResponse' in non-streaming mode" }, "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 conversation history is reset." }, "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 producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." }, "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 Credentials grant. When set, the token is acquired from the configured identity provider and used instead of apiKey. Requires camel-oauth on the classpath. The profile properties are resolved from camel.oauth..client-id, camel.oauth..client-secret, and camel.oauth..token-endpoint." }, "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 for configuring SSL/TLS. When set, takes precedence over the individual sslTruststore, sslKeystore, and sslProtocol options." }, "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 algorithm to validate the server hostname using the server certificate. Set to an empty string or 'none' to disable hostname verification" }, "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 manager factory for SSL connections" }, "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, "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 used for two-way authentication for the OpenAI API" }, "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, "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 trust manager factory for SSL connections" }, "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 server's certificate" }, "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, "configurationClass": "org.apache.camel.component.openai.OpenAIConfiguration", "configurationField": "configuration", "description": "The password for the trust store file. If a password is not set, the configured trust store can still be used, but integrity checking is disabled" }, "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" } }, "propertiesSchema": { "properties": { "operation": { "title": "Operation", "description": "The operation to perform: 'chat-completion', 'embeddings', or 'tool-execution'", "type": "string", "enum": [ "chat-completion", "embeddings", "tool-execution" ], "$comment": "group:producer" }, "additionalBodyProperty": { "title": "Additional Body Property", "description": "Additional JSON properties to include in the request body (e.g. additionalBodyProperty.traceId=123). This is a multi-value option with prefix: additionalBodyProperty.", "type": "object", "$comment": "group:producer" }, "apiKey": { "title": "Api Key", "description": "OpenAI API key. Can also be set via OPENAI_API_KEY environment variable.", "type": "string", "$comment": "group:producer", "format": "password" }, "autoToolExecution": { "title": "Auto Tool Execution", "description": "When true and MCP servers are configured, automatically execute tool calls and loop back to the model. When false, tool calls are returned as the message body for manual handling.", "type": "boolean", "$comment": "group:producer", "default": true }, "baseUrl": { "title": "Base Url", "description": "Base URL for OpenAI API. Defaults to OpenAI's official endpoint. Can be used for local or third-party providers.", "type": "string", "$comment": "group:producer", "default": "https://api.openai.com/v1" }, "conversationHistoryProperty": { "title": "Conversation History Property", "description": "Exchange property name for storing conversation history", "type": "string", "$comment": "group:producer", "default": "CamelOpenAIConversationHistory" }, "conversationMemory": { "title": "Conversation Memory", "description": "Enable conversation memory per Exchange", "type": "boolean", "$comment": "group:producer", "default": false }, "developerMessage": { "title": "Developer Message", "description": "Developer message to prepend before user messages", "type": "string", "$comment": "group:producer" }, "dimensions": { "title": "Dimensions", "description": "Number of dimensions for the embedding output. Only supported by text-embedding-3 models. Reducing dimensions can lower costs and improve performance without significant quality loss.", "type": "integer", "$comment": "group:producer" }, "embeddingModel": { "title": "Embedding Model", "description": "The model to use for embeddings", "type": "string", "$comment": "group:producer" }, "encodingFormat": { "title": "Encoding Format", "description": "The format for embedding output: 'float' for list of floats, 'base64' for compressed format", "type": "string", "enum": [ "float", "base64" ], "$comment": "group:producer", "default": "base64" }, "jsonSchema": { "title": "Json Schema", "description": "JSON schema for structured output validation", "type": "string", "$comment": "group:producer" }, "maxTokens": { "title": "Max Tokens", "description": "Maximum number of tokens to generate", "type": "integer", "$comment": "group:producer" }, "maxToolIterations": { "title": "Max Tool Iterations", "description": "Maximum number of tool call loop iterations to prevent infinite loops", "type": "integer", "$comment": "group:producer", "default": 50 }, "mcpProtocolVersions": { "title": "Mcp Protocol Versions", "description": "Comma-separated list of MCP protocol versions to advertise when connecting to MCP servers using Streamable HTTP transport. When not set, the SDK default is used. Example: 2024-11-05,2025-03-26,2025-06-18", "type": "string", "$comment": "group:producer" }, "mcpReconnect": { "title": "Mcp Reconnect", "description": "Automatically reconnect to MCP servers when a tool call fails due to a transport error, and retry the call once.", "type": "boolean", "$comment": "group:producer", "default": true }, "mcpServer": { "title": "Mcp Server", "description": "MCP (Model Context Protocol) server configurations. Define servers using prefix notation: mcpServer..transportType=stdiossestreamableHttp, mcpServer..command= (stdio), mcpServer..args= (stdio), mcpServer..url= (sse/streamableHttp), mcpServer..oauthProfile= (OAuth profile for HTTP auth, requires camel-oauth). This is a multi-value option with prefix: mcpServer.", "type": "object", "$comment": "group:producer" }, "mcpTimeout": { "title": "Mcp Timeout", "description": "Timeout in seconds for MCP tool call requests. Applies to all MCP operations including tool execution and initialization.", "type": "integer", "$comment": "group:producer", "default": 20 }, "model": { "title": "Model", "description": "The model to use for chat completion", "type": "string", "$comment": "group:producer" }, "outputClass": { "title": "Output Class", "description": "Fully qualified class name for structured output using response format", "type": "string", "$comment": "group:producer" }, "storeFullResponse": { "title": "Store Full Response", "description": "Store the full response in the exchange property 'CamelOpenAIResponse' in non-streaming mode", "type": "boolean", "$comment": "group:producer", "default": false }, "streaming": { "title": "Streaming", "description": "Enable streaming responses", "type": "boolean", "$comment": "group:producer", "default": false }, "systemMessage": { "title": "System Message", "description": "System message to prepend. When set and conversationMemory is enabled, the conversation history is reset.", "type": "string", "$comment": "group:producer" }, "temperature": { "title": "Temperature", "description": "Temperature for response generation (0.0 to 2.0)", "type": "number", "$comment": "group:producer" }, "topP": { "title": "Top P", "description": "Top P for response generation (0.0 to 1.0)", "type": "number", "$comment": "group:producer" }, "userMessage": { "title": "User Message", "description": "Default user message text to use when no prompt is provided", "type": "string", "$comment": "group:producer" }, "lazyStartProducer": { "title": "Lazy Start Producer", "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.", "type": "boolean", "$comment": "group:producer (advanced)", "default": false }, "oauthProfile": { "title": "Oauth Profile", "description": "OAuth profile name for obtaining an access token via the OAuth 2.0 Client Credentials grant. When set, the token is acquired from the configured identity provider and used instead of apiKey. Requires camel-oauth on the classpath. The profile properties are resolved from camel.oauth..client-id, camel.oauth..client-secret, and camel.oauth..token-endpoint.", "type": "string", "$comment": "group:security" }, "sslContextParameters": { "title": "Ssl Context Parameters", "description": "SSLContextParameters to use for configuring SSL/TLS. When set, takes precedence over the individual sslTruststore, sslKeystore, and sslProtocol options.", "type": "string", "$comment": "group:security", "format": "bean:org.apache.camel.support.jsse.SSLContextParameters" }, "sslEndpointAlgorithm": { "title": "Ssl Endpoint Algorithm", "description": "The endpoint identification algorithm to validate the server hostname using the server certificate. Set to an empty string or 'none' to disable hostname verification", "type": "string", "$comment": "group:security", "default": "https" }, "sslKeymanagerAlgorithm": { "title": "Ssl Keymanager Algorithm", "description": "The algorithm used by the key manager factory for SSL connections", "type": "string", "$comment": "group:security", "default": "SunX509" }, "sslKeyPassword": { "title": "Ssl Key Password", "description": "The password of the private key in the key store file", "type": "string", "$comment": "group:security", "format": "password" }, "sslKeystoreLocation": { "title": "Ssl Keystore Location", "description": "The location of the key store file. This is optional and can be used for two-way authentication for the OpenAI API", "type": "string", "$comment": "group:security" }, "sslKeystorePassword": { "title": "Ssl Keystore Password", "description": "The store password for the key store file", "type": "string", "$comment": "group:security", "format": "password" }, "sslKeystoreType": { "title": "Ssl Keystore Type", "description": "The file format of the key store file", "type": "string", "$comment": "group:security", "default": "JKS" }, "sslProtocol": { "title": "Ssl Protocol", "description": "The SSL protocol used to generate the SSLContext", "type": "string", "$comment": "group:security", "default": "TLSv1.3" }, "sslTrustmanagerAlgorithm": { "title": "Ssl Trustmanager Algorithm", "description": "The algorithm used by the trust manager factory for SSL connections", "type": "string", "$comment": "group:security", "default": "PKIX" }, "sslTruststoreLocation": { "title": "Ssl Truststore Location", "description": "The location of the trust store file, used to validate the server's certificate", "type": "string", "$comment": "group:security" }, "sslTruststorePassword": { "title": "Ssl Truststore Password", "description": "The password for the trust store file. If a password is not set, the configured trust store can still be used, but integrity checking is disabled", "type": "string", "$comment": "group:security", "format": "password" }, "sslTruststoreType": { "title": "Ssl Truststore Type", "description": "The file format of the trust store file", "type": "string", "$comment": "group:security", "default": "JKS" } }, "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "operation" ] } }