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

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


The following commit(s) were added to refs/heads/main by this push:
     new 15e598111242 CAMEL-22509 - Camel-docling: Add Authentication mechanism 
to docling-… (#19480)
15e598111242 is described below

commit 15e598111242c87aa596a809777bd2c00d6a7194
Author: Andrea Cosentino <[email protected]>
AuthorDate: Wed Oct 8 14:29:39 2025 +0200

    CAMEL-22509 - Camel-docling: Add Authentication mechanism to docling-… 
(#19480)
    
    * CAMEL-22509 - Camel-docling: Add Authentication mechanism to 
docling-serve side
    
    Signed-off-by: Andrea Cosentino <[email protected]>
    
    * Regen
    
    Signed-off-by: Andrea Cosentino <[email protected]>
    
    ---------
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../apache/camel/catalog/components/docling.json   |  24 ++-
 .../apache/camel/catalog/main/sensitive-keys.json  |   1 +
 .../docling/DoclingComponentConfigurer.java        |  24 +++
 .../docling/DoclingConfigurationConfigurer.java    |  24 +++
 .../docling/DoclingEndpointConfigurer.java         |  24 +++
 .../docling/DoclingEndpointUriFactory.java         |  10 +-
 .../apache/camel/component/docling/docling.json    |  24 ++-
 .../src/main/docs/docling-component.adoc           | 184 +++++++++++++++++++++
 .../component/docling/AuthenticationScheme.java    |  39 +++++
 .../component/docling/DoclingConfiguration.java    |  49 ++++++
 .../camel/component/docling/DoclingProducer.java   |  12 +-
 .../component/docling/DoclingServeClient.java      |  57 ++++++-
 .../java/org/apache/camel/util/SensitiveUtils.java |   2 +
 .../dsl/DoclingComponentBuilderFactory.java        |  71 ++++++++
 .../dsl/DoclingEndpointBuilderFactory.java         |  78 +++++++++
 15 files changed, 600 insertions(+), 23 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
index 518cde34a089..c04a0fe85843 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
@@ -35,10 +35,14 @@
     "outputFormat": { "index": 8, "kind": "property", "displayName": "Output 
Format", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "markdown", 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Output format for 
document conversion" },
     "useDoclingServe": { "index": 9, "kind": "property", "displayName": "Use 
Docling Serve", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Use docling-serve API 
instead of CLI command" },
     "autowiredEnabled": { "index": 10, "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  [...]
-    "doclingCommand": { "index": 11, "kind": "property", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
-    "processTimeout": { "index": 12, "kind": "property", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
-    "workingDirectory": { "index": 13, "kind": "property", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
-    "maxFileSize": { "index": 14, "kind": "property", "displayName": "Max File 
Size", "group": "security", "label": "security", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
+    "convertEndpoint": { "index": 11, "kind": "property", "displayName": 
"Convert Endpoint", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"\/v1\/convert\/source", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Docling-serve API 
convert endp [...]
+    "doclingCommand": { "index": 12, "kind": "property", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
+    "processTimeout": { "index": 13, "kind": "property", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
+    "workingDirectory": { "index": 14, "kind": "property", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
+    "apiKeyHeader": { "index": 15, "kind": "property", "displayName": "Api Key 
Header", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"X-API-Key", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Header name for API key 
authentication" },
+    "authenticationScheme": { "index": 16, "kind": "property", "displayName": 
"Authentication Scheme", "group": "security", "label": "security", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.docling.AuthenticationScheme", "enum": [ "NONE", 
"BEARER", "API_KEY" ], "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", "configuration [...]
+    "authenticationToken": { "index": 17, "kind": "property", "displayName": 
"Authentication Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Authentication token for 
docling-serve API (Bearer token or API  [...]
+    "maxFileSize": { "index": 18, "kind": "property", "displayName": "Max File 
Size", "group": "security", "label": "security", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
   },
   "headers": {
     "CamelDoclingOperation": { "index": 0, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": 
"DoclingOperations", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The operation to perform", 
"constantName": "org.apache.camel.component.docling.DoclingHeaders#OPERATION" },
@@ -61,9 +65,13 @@
     "outputFormat": { "index": 7, "kind": "parameter", "displayName": "Output 
Format", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "markdown", 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Output format for 
document conversion" },
     "useDoclingServe": { "index": 8, "kind": "parameter", "displayName": "Use 
Docling Serve", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Use docling-serve API 
instead of CLI command" },
     "lazyStartProducer": { "index": 9, "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 produc [...]
-    "doclingCommand": { "index": 10, "kind": "parameter", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
-    "processTimeout": { "index": 11, "kind": "parameter", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
-    "workingDirectory": { "index": 12, "kind": "parameter", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
-    "maxFileSize": { "index": 13, "kind": "parameter", "displayName": "Max 
File Size", "group": "security", "label": "security", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
+    "convertEndpoint": { "index": 10, "kind": "parameter", "displayName": 
"Convert Endpoint", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"\/v1\/convert\/source", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Docling-serve API 
convert end [...]
+    "doclingCommand": { "index": 11, "kind": "parameter", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
+    "processTimeout": { "index": 12, "kind": "parameter", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
+    "workingDirectory": { "index": 13, "kind": "parameter", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
+    "apiKeyHeader": { "index": 14, "kind": "parameter", "displayName": "Api 
Key Header", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"X-API-Key", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Header name for API key 
authentication" },
+    "authenticationScheme": { "index": 15, "kind": "parameter", "displayName": 
"Authentication Scheme", "group": "security", "label": "security", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.docling.AuthenticationScheme", "enum": [ "NONE", 
"BEARER", "API_KEY" ], "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", "configuratio [...]
+    "authenticationToken": { "index": 16, "kind": "parameter", "displayName": 
"Authentication Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Authentication token for 
docling-serve API (Bearer token or API [...]
+    "maxFileSize": { "index": 17, "kind": "parameter", "displayName": "Max 
File Size", "group": "security", "label": "security", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
index 2fea4455676c..d97480c5a54e 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
@@ -11,6 +11,7 @@
   "apipassword",
   "apiuser",
   "apiusername",
+  "authenticationtoken",
   "authkey",
   "authorizationtoken",
   "blobaccesskey",
diff --git 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingComponentConfigurer.java
 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingComponentConfigurer.java
index 840207c9d1c5..270856eb5ef8 100644
--- 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingComponentConfigurer.java
+++ 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingComponentConfigurer.java
@@ -30,11 +30,19 @@ public class DoclingComponentConfigurer extends 
PropertyConfigurerSupport implem
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         DoclingComponent target = (DoclingComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": 
getOrCreateConfiguration(target).setApiKeyHeader(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "authenticationscheme":
+        case "authenticationScheme": 
getOrCreateConfiguration(target).setAuthenticationScheme(property(camelContext, 
org.apache.camel.component.docling.AuthenticationScheme.class, value)); return 
true;
+        case "authenticationtoken":
+        case "authenticationToken": 
getOrCreateConfiguration(target).setAuthenticationToken(property(camelContext, 
java.lang.String.class, value)); return true;
         case "autowiredenabled":
         case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
         case "configuration": target.setConfiguration(property(camelContext, 
org.apache.camel.component.docling.DoclingConfiguration.class, value)); return 
true;
         case "contentinbody":
         case "contentInBody": 
getOrCreateConfiguration(target).setContentInBody(property(camelContext, 
boolean.class, value)); return true;
+        case "convertendpoint":
+        case "convertEndpoint": 
getOrCreateConfiguration(target).setConvertEndpoint(property(camelContext, 
java.lang.String.class, value)); return true;
         case "doclingcommand":
         case "doclingCommand": 
getOrCreateConfiguration(target).setDoclingCommand(property(camelContext, 
java.lang.String.class, value)); return true;
         case "doclingserveurl":
@@ -65,11 +73,19 @@ public class DoclingComponentConfigurer extends 
PropertyConfigurerSupport implem
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": return java.lang.String.class;
+        case "authenticationscheme":
+        case "authenticationScheme": return 
org.apache.camel.component.docling.AuthenticationScheme.class;
+        case "authenticationtoken":
+        case "authenticationToken": return java.lang.String.class;
         case "autowiredenabled":
         case "autowiredEnabled": return boolean.class;
         case "configuration": return 
org.apache.camel.component.docling.DoclingConfiguration.class;
         case "contentinbody":
         case "contentInBody": return boolean.class;
+        case "convertendpoint":
+        case "convertEndpoint": return java.lang.String.class;
         case "doclingcommand":
         case "doclingCommand": return java.lang.String.class;
         case "doclingserveurl":
@@ -101,11 +117,19 @@ public class DoclingComponentConfigurer extends 
PropertyConfigurerSupport implem
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         DoclingComponent target = (DoclingComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": return 
getOrCreateConfiguration(target).getApiKeyHeader();
+        case "authenticationscheme":
+        case "authenticationScheme": return 
getOrCreateConfiguration(target).getAuthenticationScheme();
+        case "authenticationtoken":
+        case "authenticationToken": return 
getOrCreateConfiguration(target).getAuthenticationToken();
         case "autowiredenabled":
         case "autowiredEnabled": return target.isAutowiredEnabled();
         case "configuration": return target.getConfiguration();
         case "contentinbody":
         case "contentInBody": return 
getOrCreateConfiguration(target).isContentInBody();
+        case "convertendpoint":
+        case "convertEndpoint": return 
getOrCreateConfiguration(target).getConvertEndpoint();
         case "doclingcommand":
         case "doclingCommand": return 
getOrCreateConfiguration(target).getDoclingCommand();
         case "doclingserveurl":
diff --git 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingConfigurationConfigurer.java
 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingConfigurationConfigurer.java
index 73a53e60adea..585af1165493 100644
--- 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingConfigurationConfigurer.java
+++ 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingConfigurationConfigurer.java
@@ -23,8 +23,16 @@ public class DoclingConfigurationConfigurer extends 
org.apache.camel.support.com
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         org.apache.camel.component.docling.DoclingConfiguration target = 
(org.apache.camel.component.docling.DoclingConfiguration) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": target.setApiKeyHeader(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "authenticationscheme":
+        case "authenticationScheme": 
target.setAuthenticationScheme(property(camelContext, 
org.apache.camel.component.docling.AuthenticationScheme.class, value)); return 
true;
+        case "authenticationtoken":
+        case "authenticationToken": 
target.setAuthenticationToken(property(camelContext, java.lang.String.class, 
value)); return true;
         case "contentinbody":
         case "contentInBody": target.setContentInBody(property(camelContext, 
boolean.class, value)); return true;
+        case "convertendpoint":
+        case "convertEndpoint": 
target.setConvertEndpoint(property(camelContext, java.lang.String.class, 
value)); return true;
         case "doclingcommand":
         case "doclingCommand": target.setDoclingCommand(property(camelContext, 
java.lang.String.class, value)); return true;
         case "doclingserveurl":
@@ -53,8 +61,16 @@ public class DoclingConfigurationConfigurer extends 
org.apache.camel.support.com
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": return java.lang.String.class;
+        case "authenticationscheme":
+        case "authenticationScheme": return 
org.apache.camel.component.docling.AuthenticationScheme.class;
+        case "authenticationtoken":
+        case "authenticationToken": return java.lang.String.class;
         case "contentinbody":
         case "contentInBody": return boolean.class;
+        case "convertendpoint":
+        case "convertEndpoint": return java.lang.String.class;
         case "doclingcommand":
         case "doclingCommand": return java.lang.String.class;
         case "doclingserveurl":
@@ -84,8 +100,16 @@ public class DoclingConfigurationConfigurer extends 
org.apache.camel.support.com
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         org.apache.camel.component.docling.DoclingConfiguration target = 
(org.apache.camel.component.docling.DoclingConfiguration) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": return target.getApiKeyHeader();
+        case "authenticationscheme":
+        case "authenticationScheme": return target.getAuthenticationScheme();
+        case "authenticationtoken":
+        case "authenticationToken": return target.getAuthenticationToken();
         case "contentinbody":
         case "contentInBody": return target.isContentInBody();
+        case "convertendpoint":
+        case "convertEndpoint": return target.getConvertEndpoint();
         case "doclingcommand":
         case "doclingCommand": return target.getDoclingCommand();
         case "doclingserveurl":
diff --git 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointConfigurer.java
 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointConfigurer.java
index 8cd8bc60aff3..88e14d5862c2 100644
--- 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointConfigurer.java
+++ 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointConfigurer.java
@@ -23,8 +23,16 @@ public class DoclingEndpointConfigurer extends 
PropertyConfigurerSupport impleme
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         DoclingEndpoint target = (DoclingEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": 
target.getConfiguration().setApiKeyHeader(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "authenticationscheme":
+        case "authenticationScheme": 
target.getConfiguration().setAuthenticationScheme(property(camelContext, 
org.apache.camel.component.docling.AuthenticationScheme.class, value)); return 
true;
+        case "authenticationtoken":
+        case "authenticationToken": 
target.getConfiguration().setAuthenticationToken(property(camelContext, 
java.lang.String.class, value)); return true;
         case "contentinbody":
         case "contentInBody": 
target.getConfiguration().setContentInBody(property(camelContext, 
boolean.class, value)); return true;
+        case "convertendpoint":
+        case "convertEndpoint": 
target.getConfiguration().setConvertEndpoint(property(camelContext, 
java.lang.String.class, value)); return true;
         case "doclingcommand":
         case "doclingCommand": 
target.getConfiguration().setDoclingCommand(property(camelContext, 
java.lang.String.class, value)); return true;
         case "doclingserveurl":
@@ -55,8 +63,16 @@ public class DoclingEndpointConfigurer extends 
PropertyConfigurerSupport impleme
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": return java.lang.String.class;
+        case "authenticationscheme":
+        case "authenticationScheme": return 
org.apache.camel.component.docling.AuthenticationScheme.class;
+        case "authenticationtoken":
+        case "authenticationToken": return java.lang.String.class;
         case "contentinbody":
         case "contentInBody": return boolean.class;
+        case "convertendpoint":
+        case "convertEndpoint": return java.lang.String.class;
         case "doclingcommand":
         case "doclingCommand": return java.lang.String.class;
         case "doclingserveurl":
@@ -88,8 +104,16 @@ public class DoclingEndpointConfigurer extends 
PropertyConfigurerSupport impleme
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         DoclingEndpoint target = (DoclingEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apikeyheader":
+        case "apiKeyHeader": return 
target.getConfiguration().getApiKeyHeader();
+        case "authenticationscheme":
+        case "authenticationScheme": return 
target.getConfiguration().getAuthenticationScheme();
+        case "authenticationtoken":
+        case "authenticationToken": return 
target.getConfiguration().getAuthenticationToken();
         case "contentinbody":
         case "contentInBody": return 
target.getConfiguration().isContentInBody();
+        case "convertendpoint":
+        case "convertEndpoint": return 
target.getConfiguration().getConvertEndpoint();
         case "doclingcommand":
         case "doclingCommand": return 
target.getConfiguration().getDoclingCommand();
         case "doclingserveurl":
diff --git 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointUriFactory.java
 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointUriFactory.java
index 8b6173443452..257c975eafa8 100644
--- 
a/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointUriFactory.java
+++ 
b/components/camel-ai/camel-docling/src/generated/java/org/apache/camel/component/docling/DoclingEndpointUriFactory.java
@@ -23,8 +23,12 @@ public class DoclingEndpointUriFactory extends 
org.apache.camel.support.componen
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Map<String, String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(14);
+        Set<String> props = new HashSet<>(18);
+        props.add("apiKeyHeader");
+        props.add("authenticationScheme");
+        props.add("authenticationToken");
         props.add("contentInBody");
+        props.add("convertEndpoint");
         props.add("doclingCommand");
         props.add("doclingServeUrl");
         props.add("enableOCR");
@@ -39,7 +43,9 @@ public class DoclingEndpointUriFactory extends 
org.apache.camel.support.componen
         props.add("useDoclingServe");
         props.add("workingDirectory");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
+        Set<String> secretProps = new HashSet<>(1);
+        secretProps.add("authenticationToken");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
         MULTI_VALUE_PREFIXES = Collections.emptyMap();
     }
 
diff --git 
a/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
 
b/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
index 518cde34a089..c04a0fe85843 100644
--- 
a/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
+++ 
b/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
@@ -35,10 +35,14 @@
     "outputFormat": { "index": 8, "kind": "property", "displayName": "Output 
Format", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "markdown", 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Output format for 
document conversion" },
     "useDoclingServe": { "index": 9, "kind": "property", "displayName": "Use 
Docling Serve", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Use docling-serve API 
instead of CLI command" },
     "autowiredEnabled": { "index": 10, "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  [...]
-    "doclingCommand": { "index": 11, "kind": "property", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
-    "processTimeout": { "index": 12, "kind": "property", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
-    "workingDirectory": { "index": 13, "kind": "property", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
-    "maxFileSize": { "index": 14, "kind": "property", "displayName": "Max File 
Size", "group": "security", "label": "security", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
+    "convertEndpoint": { "index": 11, "kind": "property", "displayName": 
"Convert Endpoint", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"\/v1\/convert\/source", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Docling-serve API 
convert endp [...]
+    "doclingCommand": { "index": 12, "kind": "property", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
+    "processTimeout": { "index": 13, "kind": "property", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
+    "workingDirectory": { "index": 14, "kind": "property", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
+    "apiKeyHeader": { "index": 15, "kind": "property", "displayName": "Api Key 
Header", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"X-API-Key", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Header name for API key 
authentication" },
+    "authenticationScheme": { "index": 16, "kind": "property", "displayName": 
"Authentication Scheme", "group": "security", "label": "security", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.docling.AuthenticationScheme", "enum": [ "NONE", 
"BEARER", "API_KEY" ], "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", "configuration [...]
+    "authenticationToken": { "index": 17, "kind": "property", "displayName": 
"Authentication Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Authentication token for 
docling-serve API (Bearer token or API  [...]
+    "maxFileSize": { "index": 18, "kind": "property", "displayName": "Max File 
Size", "group": "security", "label": "security", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
   },
   "headers": {
     "CamelDoclingOperation": { "index": 0, "kind": "header", "displayName": 
"", "group": "producer", "label": "", "required": false, "javaType": 
"DoclingOperations", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The operation to perform", 
"constantName": "org.apache.camel.component.docling.DoclingHeaders#OPERATION" },
@@ -61,9 +65,13 @@
     "outputFormat": { "index": 7, "kind": "parameter", "displayName": "Output 
Format", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": "markdown", 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Output format for 
document conversion" },
     "useDoclingServe": { "index": 8, "kind": "parameter", "displayName": "Use 
Docling Serve", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Use docling-serve API 
instead of CLI command" },
     "lazyStartProducer": { "index": 9, "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 produc [...]
-    "doclingCommand": { "index": 10, "kind": "parameter", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
-    "processTimeout": { "index": 11, "kind": "parameter", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
-    "workingDirectory": { "index": 12, "kind": "parameter", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
-    "maxFileSize": { "index": 13, "kind": "parameter", "displayName": "Max 
File Size", "group": "security", "label": "security", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
+    "convertEndpoint": { "index": 10, "kind": "parameter", "displayName": 
"Convert Endpoint", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"\/v1\/convert\/source", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Docling-serve API 
convert end [...]
+    "doclingCommand": { "index": 11, "kind": "parameter", "displayName": 
"Docling Command", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Path to Docling Python 
executable or command" },
+    "processTimeout": { "index": 12, "kind": "parameter", "displayName": 
"Process Timeout", "group": "advanced", "label": "advanced", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 30000, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Timeout for Docling 
process execution in milliseconds" },
+    "workingDirectory": { "index": 13, "kind": "parameter", "displayName": 
"Working Directory", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Working directory for 
Docling execution" },
+    "apiKeyHeader": { "index": 14, "kind": "parameter", "displayName": "Api 
Key Header", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue": 
"X-API-Key", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Header name for API key 
authentication" },
+    "authenticationScheme": { "index": 15, "kind": "parameter", "displayName": 
"Authentication Scheme", "group": "security", "label": "security", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.docling.AuthenticationScheme", "enum": [ "NONE", 
"BEARER", "API_KEY" ], "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", "configuratio [...]
+    "authenticationToken": { "index": 16, "kind": "parameter", "displayName": 
"Authentication Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Authentication token for 
docling-serve API (Bearer token or API [...]
+    "maxFileSize": { "index": 17, "kind": "parameter", "displayName": "Max 
File Size", "group": "security", "label": "security", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": 52428800, 
"configurationClass": 
"org.apache.camel.component.docling.DoclingConfiguration", 
"configurationField": "configuration", "description": "Maximum file size in 
bytes for processing" }
   }
 }
diff --git 
a/components/camel-ai/camel-docling/src/main/docs/docling-component.adoc 
b/components/camel-ai/camel-docling/src/main/docs/docling-component.adoc
index c3fc080033bf..fb2a9d4cb4a9 100644
--- a/components/camel-ai/camel-docling/src/main/docs/docling-component.adoc
+++ b/components/camel-ai/camel-docling/src/main/docs/docling-component.adoc
@@ -572,6 +572,189 @@ YAML::
 ----
 ====
 
+=== Authentication with docling-serve
+
+The component supports multiple authentication mechanisms for secured 
docling-serve instances.
+
+==== Bearer Token Authentication
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("file:///data/documents?include=.*\\.pdf")
+    .to("docling:CONVERT_TO_MARKDOWN?" +
+        "useDoclingServe=true&" +
+        "doclingServeUrl=http://localhost:5001&"; +
+        "authenticationScheme=BEARER&" +
+        "authenticationToken=your-bearer-token-here&" +
+        "contentInBody=true")
+    .to("file:///data/output");
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: "file:///data/documents"
+      parameters:
+        include: ".*\\.pdf"
+    steps:
+      - to:
+          uri: "docling:CONVERT_TO_MARKDOWN"
+          parameters:
+            useDoclingServe: true
+            doclingServeUrl: "http://localhost:5001";
+            authenticationScheme: "BEARER"
+            authenticationToken: "your-bearer-token-here"
+            contentInBody: true
+      - to:
+          uri: "file:///data/output"
+----
+====
+
+==== API Key Authentication
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("file:///data/documents?include=.*\\.pdf")
+    .to("docling:CONVERT_TO_MARKDOWN?" +
+        "useDoclingServe=true&" +
+        "doclingServeUrl=http://localhost:5001&"; +
+        "authenticationScheme=API_KEY&" +
+        "authenticationToken=your-api-key-here&" +
+        "apiKeyHeader=X-API-Key&" +
+        "contentInBody=true")
+    .to("file:///data/output");
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: "file:///data/documents"
+      parameters:
+        include: ".*\\.pdf"
+    steps:
+      - to:
+          uri: "docling:CONVERT_TO_MARKDOWN"
+          parameters:
+            useDoclingServe: true
+            doclingServeUrl: "http://localhost:5001";
+            authenticationScheme: "API_KEY"
+            authenticationToken: "your-api-key-here"
+            apiKeyHeader: "X-API-Key"
+            contentInBody: true
+      - to:
+          uri: "file:///data/output"
+----
+====
+
+==== Using Custom API Key Header
+
+If your docling-serve instance uses a custom header name for API keys:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("file:///data/documents?include=.*\\.pdf")
+    .to("docling:CONVERT_TO_MARKDOWN?" +
+        "useDoclingServe=true&" +
+        "doclingServeUrl=http://localhost:5001&"; +
+        "authenticationScheme=API_KEY&" +
+        "authenticationToken=your-api-key-here&" +
+        "apiKeyHeader=X-Custom-API-Key&" +
+        "contentInBody=true")
+    .to("file:///data/output");
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: "file:///data/documents"
+      parameters:
+        include: ".*\\.pdf"
+    steps:
+      - to:
+          uri: "docling:CONVERT_TO_MARKDOWN"
+          parameters:
+            useDoclingServe: true
+            doclingServeUrl: "http://localhost:5001";
+            authenticationScheme: "API_KEY"
+            authenticationToken: "your-api-key-here"
+            apiKeyHeader: "X-Custom-API-Key"
+            contentInBody: true
+      - to:
+          uri: "file:///data/output"
+----
+====
+
+==== Using Authentication Token from Properties
+
+For better security, store authentication tokens in properties or environment 
variables:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("file:///data/documents?include=.*\\.pdf")
+    .to("docling:CONVERT_TO_MARKDOWN?" +
+        "useDoclingServe=true&" +
+        "doclingServeUrl={{docling.serve.url}}&" +
+        "authenticationScheme=BEARER&" +
+        "authenticationToken={{docling.serve.token}}&" +
+        "contentInBody=true")
+    .to("file:///data/output");
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+    from:
+      uri: "file:///data/documents"
+      parameters:
+        include: ".*\\.pdf"
+    steps:
+      - to:
+          uri: "docling:CONVERT_TO_MARKDOWN"
+          parameters:
+            useDoclingServe: true
+            doclingServeUrl: "{{docling.serve.url}}"
+            authenticationScheme: "BEARER"
+            authenticationToken: "{{docling.serve.token}}"
+            contentInBody: true
+      - to:
+          uri: "file:///data/output"
+----
+====
+
+Then define in `application.properties`:
+[source,properties]
+----
+docling.serve.url=http://localhost:5001
+docling.serve.token=your-bearer-token-here
+----
+
 == Error Handling
 
 The component handles various error scenarios:
@@ -581,6 +764,7 @@ The component handles various error scenarios:
 - **Invalid file formats**: Unsupported file formats result in processing 
errors
 - **Docling not found**: Missing Docling installation causes startup failures 
(CLI mode)
 - **Connection errors**: When using docling-serve API mode, connection 
failures to the API endpoint will result in errors
+- **Authentication errors**: Invalid or missing authentication credentials 
will result in 401 Unauthorized errors from the docling-serve API
 
 == Performance Considerations
 
diff --git 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/AuthenticationScheme.java
 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/AuthenticationScheme.java
new file mode 100644
index 000000000000..ee175f8df115
--- /dev/null
+++ 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/AuthenticationScheme.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.docling;
+
+/**
+ * Authentication schemes for docling-serve API
+ */
+public enum AuthenticationScheme {
+
+    /**
+     * No authentication
+     */
+    NONE,
+
+    /**
+     * Bearer token authentication (Authorization: Bearer token)
+     */
+    BEARER,
+
+    /**
+     * API Key authentication via custom header
+     */
+    API_KEY
+
+}
diff --git 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingConfiguration.java
 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingConfiguration.java
index 5c60f75c17b1..b0bc2418e708 100644
--- 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingConfiguration.java
+++ 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingConfiguration.java
@@ -81,6 +81,23 @@ public class DoclingConfiguration implements Cloneable {
     @Metadata(description = "Docling-serve API URL (e.g., 
http://localhost:5001)", defaultValue = "http://localhost:5001";)
     private String doclingServeUrl = "http://localhost:5001";;
 
+    @UriParam(label = "security")
+    @Metadata(description = "Authentication token for docling-serve API 
(Bearer token or API key)", secret = true)
+    private String authenticationToken;
+
+    @UriParam(label = "security")
+    @Metadata(description = "Authentication scheme (BEARER, API_KEY, NONE)", 
defaultValue = "NONE",
+              enums = "BEARER,API_KEY,NONE")
+    private AuthenticationScheme authenticationScheme = 
AuthenticationScheme.NONE;
+
+    @UriParam(label = "security")
+    @Metadata(description = "Header name for API key authentication", 
defaultValue = "X-API-Key")
+    private String apiKeyHeader = "X-API-Key";
+
+    @UriParam(label = "advanced")
+    @Metadata(description = "Docling-serve API convert endpoint path", 
defaultValue = "/v1/convert/source")
+    private String convertEndpoint = "/v1/convert/source";
+
     public DoclingOperations getOperation() {
         return operation;
     }
@@ -177,6 +194,38 @@ public class DoclingConfiguration implements Cloneable {
         this.doclingServeUrl = doclingServeUrl;
     }
 
+    public String getAuthenticationToken() {
+        return authenticationToken;
+    }
+
+    public void setAuthenticationToken(String authenticationToken) {
+        this.authenticationToken = authenticationToken;
+    }
+
+    public AuthenticationScheme getAuthenticationScheme() {
+        return authenticationScheme;
+    }
+
+    public void setAuthenticationScheme(AuthenticationScheme 
authenticationScheme) {
+        this.authenticationScheme = authenticationScheme;
+    }
+
+    public String getApiKeyHeader() {
+        return apiKeyHeader;
+    }
+
+    public void setApiKeyHeader(String apiKeyHeader) {
+        this.apiKeyHeader = apiKeyHeader;
+    }
+
+    public String getConvertEndpoint() {
+        return convertEndpoint;
+    }
+
+    public void setConvertEndpoint(String convertEndpoint) {
+        this.convertEndpoint = convertEndpoint;
+    }
+
     public DoclingConfiguration copy() {
         try {
             return (DoclingConfiguration) super.clone();
diff --git 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
index b88725b8e8e3..3a440b7d349d 100644
--- 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
+++ 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
@@ -54,8 +54,16 @@ public class DoclingProducer extends DefaultProducer {
     protected void doStart() throws Exception {
         super.doStart();
         if (configuration.isUseDoclingServe()) {
-            doclingServeClient = new 
DoclingServeClient(configuration.getDoclingServeUrl());
-            LOG.info("DoclingProducer configured to use docling-serve API at: 
{}", configuration.getDoclingServeUrl());
+            doclingServeClient = new DoclingServeClient(
+                    configuration.getDoclingServeUrl(),
+                    configuration.getAuthenticationScheme(),
+                    configuration.getAuthenticationToken(),
+                    configuration.getApiKeyHeader(),
+                    configuration.getConvertEndpoint());
+            LOG.info("DoclingProducer configured to use docling-serve API at: 
{}{} with authentication: {}",
+                    configuration.getDoclingServeUrl(),
+                    configuration.getConvertEndpoint(),
+                    configuration.getAuthenticationScheme());
         } else {
             LOG.info("DoclingProducer configured to use docling CLI command");
         }
diff --git 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingServeClient.java
 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingServeClient.java
index 375e76c00952..9da6af787708 100644
--- 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingServeClient.java
+++ 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingServeClient.java
@@ -42,16 +42,36 @@ import org.slf4j.LoggerFactory;
 public class DoclingServeClient {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(DoclingServeClient.class);
-    private static final String CONVERT_ENDPOINT = "/v1/convert/source";
+    private static final String DEFAULT_CONVERT_ENDPOINT = 
"/v1/convert/source";
 
     private final String baseUrl;
     private final ObjectMapper objectMapper;
     private final CloseableHttpClient httpClient;
+    private final AuthenticationScheme authenticationScheme;
+    private final String authenticationToken;
+    private final String apiKeyHeader;
+    private final String convertEndpoint;
 
     public DoclingServeClient(String baseUrl) {
+        this(baseUrl, AuthenticationScheme.NONE, null, "X-API-Key", 
DEFAULT_CONVERT_ENDPOINT);
+    }
+
+    public DoclingServeClient(
+                              String baseUrl, AuthenticationScheme 
authenticationScheme, String authenticationToken,
+                              String apiKeyHeader) {
+        this(baseUrl, authenticationScheme, authenticationToken, apiKeyHeader, 
DEFAULT_CONVERT_ENDPOINT);
+    }
+
+    public DoclingServeClient(
+                              String baseUrl, AuthenticationScheme 
authenticationScheme, String authenticationToken,
+                              String apiKeyHeader, String convertEndpoint) {
         this.baseUrl = baseUrl.endsWith("/") ? baseUrl.substring(0, 
baseUrl.length() - 1) : baseUrl;
         this.objectMapper = new ObjectMapper();
         this.httpClient = HttpClients.createDefault();
+        this.authenticationScheme = authenticationScheme != null ? 
authenticationScheme : AuthenticationScheme.NONE;
+        this.authenticationToken = authenticationToken;
+        this.apiKeyHeader = apiKeyHeader != null ? apiKeyHeader : "X-API-Key";
+        this.convertEndpoint = convertEndpoint != null ? convertEndpoint : 
DEFAULT_CONVERT_ENDPOINT;
     }
 
     /**
@@ -90,9 +110,10 @@ public class DoclingServeClient {
         String jsonRequest = objectMapper.writeValueAsString(requestBody);
         LOG.debug("Request body: {}", jsonRequest);
 
-        HttpPost httpPost = new HttpPost(baseUrl + CONVERT_ENDPOINT);
+        HttpPost httpPost = new HttpPost(baseUrl + convertEndpoint);
         httpPost.setEntity(new StringEntity(jsonRequest, 
ContentType.APPLICATION_JSON));
         httpPost.setHeader("Accept", "application/json");
+        applyAuthentication(httpPost);
 
         try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
             int statusCode = response.getCode();
@@ -140,9 +161,10 @@ public class DoclingServeClient {
         String jsonRequest = objectMapper.writeValueAsString(requestBody);
         LOG.debug("Request body: {}", jsonRequest);
 
-        HttpPost httpPost = new HttpPost(baseUrl + CONVERT_ENDPOINT);
+        HttpPost httpPost = new HttpPost(baseUrl + convertEndpoint);
         httpPost.setEntity(new StringEntity(jsonRequest, 
ContentType.APPLICATION_JSON));
         httpPost.setHeader("Accept", "application/json");
+        applyAuthentication(httpPost);
 
         try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
             int statusCode = response.getCode();
@@ -216,6 +238,35 @@ public class DoclingServeClient {
         }
     }
 
+    /**
+     * Apply authentication headers to the HTTP request based on the 
configured authentication scheme.
+     *
+     * @param httpPost The HTTP POST request to add authentication to
+     */
+    private void applyAuthentication(HttpPost httpPost) {
+        if (authenticationScheme == null || authenticationScheme == 
AuthenticationScheme.NONE) {
+            return;
+        }
+
+        if (authenticationToken == null || authenticationToken.isEmpty()) {
+            LOG.warn("Authentication scheme is set to {} but no authentication 
token provided", authenticationScheme);
+            return;
+        }
+
+        switch (authenticationScheme) {
+            case BEARER:
+                httpPost.setHeader("Authorization", "Bearer " + 
authenticationToken);
+                LOG.debug("Applied Bearer token authentication");
+                break;
+            case API_KEY:
+                httpPost.setHeader(apiKeyHeader, authenticationToken);
+                LOG.debug("Applied API Key authentication with header: {}", 
apiKeyHeader);
+                break;
+            default:
+                LOG.warn("Unknown authentication scheme: {}", 
authenticationScheme);
+        }
+    }
+
     public void close() throws IOException {
         if (httpClient != null) {
             httpClient.close();
diff --git 
a/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java 
b/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
index 0376f07dc232..06b65d50a528 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
@@ -40,6 +40,7 @@ public final class SensitiveUtils {
                     "apipassword",
                     "apiuser",
                     "apiusername",
+                    "authenticationtoken",
                     "authkey",
                     "authorizationtoken",
                     "blobaccesskey",
@@ -124,6 +125,7 @@ public final class SensitiveUtils {
                                                     + "|\\Qapipassword\\E"
                                                     + "|\\Qapiuser\\E"
                                                     + "|\\Qapiusername\\E"
+                                                    + 
"|\\Qauthenticationtoken\\E"
                                                     + "|\\Qauthkey\\E"
                                                     + 
"|\\Qauthorizationtoken\\E"
                                                     + "|\\Qblobaccesskey\\E"
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DoclingComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DoclingComponentBuilderFactory.java
index 0812a96b9ae0..d43015bcd4d1 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DoclingComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/DoclingComponentBuilderFactory.java
@@ -251,6 +251,23 @@ public interface DoclingComponentBuilderFactory {
             return this;
         }
     
+        
+        /**
+         * Docling-serve API convert endpoint path.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: /v1/convert/source
+         * Group: advanced
+         * 
+         * @param convertEndpoint the value to set
+         * @return the dsl builder
+         */
+        default DoclingComponentBuilder convertEndpoint(java.lang.String 
convertEndpoint) {
+            doSetProperty("convertEndpoint", convertEndpoint);
+            return this;
+        }
+    
         /**
          * Path to Docling Python executable or command.
          * 
@@ -299,6 +316,56 @@ public interface DoclingComponentBuilderFactory {
         }
     
         
+        /**
+         * Header name for API key authentication.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: X-API-Key
+         * Group: security
+         * 
+         * @param apiKeyHeader the value to set
+         * @return the dsl builder
+         */
+        default DoclingComponentBuilder apiKeyHeader(java.lang.String 
apiKeyHeader) {
+            doSetProperty("apiKeyHeader", apiKeyHeader);
+            return this;
+        }
+    
+        
+        /**
+         * Authentication scheme (BEARER, API_KEY, NONE).
+         * 
+         * The option is a:
+         * 
&lt;code&gt;org.apache.camel.component.docling.AuthenticationScheme&lt;/code&gt;
 type.
+         * 
+         * Default: NONE
+         * Group: security
+         * 
+         * @param authenticationScheme the value to set
+         * @return the dsl builder
+         */
+        default DoclingComponentBuilder 
authenticationScheme(org.apache.camel.component.docling.AuthenticationScheme 
authenticationScheme) {
+            doSetProperty("authenticationScheme", authenticationScheme);
+            return this;
+        }
+    
+        /**
+         * Authentication token for docling-serve API (Bearer token or API 
key).
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param authenticationToken the value to set
+         * @return the dsl builder
+         */
+        default DoclingComponentBuilder authenticationToken(java.lang.String 
authenticationToken) {
+            doSetProperty("authenticationToken", authenticationToken);
+            return this;
+        }
+    
+        
         /**
          * Maximum file size in bytes for processing.
          * 
@@ -346,9 +413,13 @@ public interface DoclingComponentBuilderFactory {
             case "outputFormat": getOrCreateConfiguration((DoclingComponent) 
component).setOutputFormat((java.lang.String) value); return true;
             case "useDoclingServe": 
getOrCreateConfiguration((DoclingComponent) 
component).setUseDoclingServe((boolean) value); return true;
             case "autowiredEnabled": ((DoclingComponent) 
component).setAutowiredEnabled((boolean) value); return true;
+            case "convertEndpoint": 
getOrCreateConfiguration((DoclingComponent) 
component).setConvertEndpoint((java.lang.String) value); return true;
             case "doclingCommand": getOrCreateConfiguration((DoclingComponent) 
component).setDoclingCommand((java.lang.String) value); return true;
             case "processTimeout": getOrCreateConfiguration((DoclingComponent) 
component).setProcessTimeout((long) value); return true;
             case "workingDirectory": 
getOrCreateConfiguration((DoclingComponent) 
component).setWorkingDirectory((java.lang.String) value); return true;
+            case "apiKeyHeader": getOrCreateConfiguration((DoclingComponent) 
component).setApiKeyHeader((java.lang.String) value); return true;
+            case "authenticationScheme": 
getOrCreateConfiguration((DoclingComponent) 
component).setAuthenticationScheme((org.apache.camel.component.docling.AuthenticationScheme)
 value); return true;
+            case "authenticationToken": 
getOrCreateConfiguration((DoclingComponent) 
component).setAuthenticationToken((java.lang.String) value); return true;
             case "maxFileSize": getOrCreateConfiguration((DoclingComponent) 
component).setMaxFileSize((long) value); return true;
             default: return false;
             }
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
index 40e5ab55a262..1c0a5c8f554c 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
@@ -247,6 +247,69 @@ public interface DoclingEndpointBuilderFactory {
             doSetProperty("useDoclingServe", useDoclingServe);
             return this;
         }
+        /**
+         * Header name for API key authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: X-API-Key
+         * Group: security
+         * 
+         * @param apiKeyHeader the value to set
+         * @return the dsl builder
+         */
+        default DoclingEndpointBuilder apiKeyHeader(String apiKeyHeader) {
+            doSetProperty("apiKeyHeader", apiKeyHeader);
+            return this;
+        }
+        /**
+         * Authentication scheme (BEARER, API_KEY, NONE).
+         * 
+         * The option is a:
+         * <code>org.apache.camel.component.docling.AuthenticationScheme</code>
+         * type.
+         * 
+         * Default: NONE
+         * Group: security
+         * 
+         * @param authenticationScheme the value to set
+         * @return the dsl builder
+         */
+        default DoclingEndpointBuilder 
authenticationScheme(org.apache.camel.component.docling.AuthenticationScheme 
authenticationScheme) {
+            doSetProperty("authenticationScheme", authenticationScheme);
+            return this;
+        }
+        /**
+         * Authentication scheme (BEARER, API_KEY, NONE).
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.component.docling.AuthenticationScheme</code>
+         * type.
+         * 
+         * Default: NONE
+         * Group: security
+         * 
+         * @param authenticationScheme the value to set
+         * @return the dsl builder
+         */
+        default DoclingEndpointBuilder authenticationScheme(String 
authenticationScheme) {
+            doSetProperty("authenticationScheme", authenticationScheme);
+            return this;
+        }
+        /**
+         * Authentication token for docling-serve API (Bearer token or API 
key).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param authenticationToken the value to set
+         * @return the dsl builder
+         */
+        default DoclingEndpointBuilder authenticationToken(String 
authenticationToken) {
+            doSetProperty("authenticationToken", authenticationToken);
+            return this;
+        }
         /**
          * Maximum file size in bytes for processing.
          * 
@@ -335,6 +398,21 @@ public interface DoclingEndpointBuilderFactory {
             doSetProperty("lazyStartProducer", lazyStartProducer);
             return this;
         }
+        /**
+         * Docling-serve API convert endpoint path.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: /v1/convert/source
+         * Group: advanced
+         * 
+         * @param convertEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AdvancedDoclingEndpointBuilder convertEndpoint(String 
convertEndpoint) {
+            doSetProperty("convertEndpoint", convertEndpoint);
+            return this;
+        }
         /**
          * Path to Docling Python executable or command.
          * 

Reply via email to