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

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

commit 2997167ef797f8dd74a19e5eb4b4d2a8fd619923
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Fri Feb 28 17:22:40 2025 +0100

    CAMEL-21768 - Camel-IBM-Secrets-Manager: Create a properties function
    
    Signed-off-by: Andrea Cosentino <anco...@gmail.com>
---
 .../main/camel-main-configuration-metadata.json    |   3 +
 components/camel-ibm-secrets-manager/pom.xml       |   5 +
 .../org/apache/camel/properties-function/ibm       |   2 +
 .../IBMSecretsManagerPropertiesFunction.java       | 230 +++++++++++++++++++++
 ...MSecretsManagerNoEnvPropertiesSourceTestIT.java |  92 +++++++++
 .../vault/IBMSecretsManagerVaultConfiguration.java |  52 +++++
 .../org/apache/camel/vault/VaultConfiguration.java |  19 ++
 core/camel-main/pom.xml                            |   2 +
 .../main/AwsVaultConfigurationConfigurer.java      |   6 +
 .../AwsVaultConfigurationPropertiesConfigurer.java |   7 +
 .../main/AzureVaultConfigurationConfigurer.java    |   6 +
 ...zureVaultConfigurationPropertiesConfigurer.java |   7 +
 .../main/GcpVaultConfigurationConfigurer.java      |   6 +
 .../GcpVaultConfigurationPropertiesConfigurer.java |   7 +
 .../HashicorpVaultConfigurationConfigurer.java     |   6 +
 ...corpVaultConfigurationPropertiesConfigurer.java |   7 +
 ...ecretsManagerVaultConfigurationConfigurer.java} |  35 ++--
 ...gerVaultConfigurationPropertiesConfigurer.java} |  42 ++--
 ...netesConfigMapVaultConfigurationConfigurer.java |   6 +
 ...mapsVaultConfigurationPropertiesConfigurer.java |   7 +
 .../KubernetesVaultConfigurationConfigurer.java    |   6 +
 ...etesVaultConfigurationPropertiesConfigurer.java |   7 +
 .../camel-main-configuration-metadata.json         |   3 +
 ...n.IBMSecretsManagerVaultConfigurationProperties |   2 +
 ...camel.vault.IBMSecretsManagerVaultConfiguration |   2 +
 core/camel-main/src/main/docs/main.adoc            |  11 +
 .../org/apache/camel/main/BaseMainSupport.java     |   3 +
 ...SecretsManagerVaultConfigurationProperties.java |  69 +++++++
 .../camel/main/VaultConfigurationProperties.java   |  12 ++
 .../java/org/apache/camel/main/MainVaultTest.java  |  41 ++++
 .../maven/packaging/PrepareCamelMainMojo.java      |  16 ++
 31 files changed, 676 insertions(+), 43 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index 626329f7b43..b44a19c20c4 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -16,6 +16,7 @@
     { "name": "camel.vault.kubernetes", "description": "Camel Kubernetes Vault 
configurations", "sourceType": 
"org.apache.camel.vault.KubernetesVaultConfiguration" },
     { "name": "camel.vault.kubernetescm", "description": "Camel Kubernetes 
Configmaps Vault configurations", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration" },
     { "name": "camel.vault.hashicorp", "description": "Camel Hashicorp Vault 
configurations", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration" },
+    { "name": "camel.vault.ibm", "description": "Camel IBM Secrets Manager 
Vault configurations", "sourceType": 
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration" },
     { "name": "camel.opentelemetry", "description": "Camel OpenTelemetry 
configurations", "sourceType": 
"org.apache.camel.main.OtelConfigurationProperties" },
     { "name": "camel.opentelemetry2", "description": "Camel OpenTelemetry 2 
configurations", "sourceType": 
"org.apache.camel.main.Otel2ConfigurationProperties" },
     { "name": "camel.telemetryDev", "description": "Camel Telemetry Dev 
configurations", "sourceType": 
"org.apache.camel.main.TelemetryDevConfigurationProperties" },
@@ -389,6 +390,8 @@
     { "name": "camel.vault.hashicorp.port", "description": "Port to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.token", "description": "Token to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.ibm.serviceUrl", "description": "Service URL to 
access IBM Secrets Manager vault", "sourceType": 
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.ibm.token", "description": "Token to access IBM 
Secrets Manager vault", "sourceType": 
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetes.refreshEnabled", "description": "Whether 
to automatically reload Camel upon secrets being updated in Kubernetes 
Cluster.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", 
"type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.vault.kubernetes.secrets", "description": "Specify the 
secret names (or pattern) to check for updates. Multiple secrets can be 
separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetescm.configmaps", "description": "Specify 
the configmap names (or pattern) to check for updates. Multiple configmaps can 
be separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": 
"string", "javaType": "java.lang.String" },
diff --git a/components/camel-ibm-secrets-manager/pom.xml 
b/components/camel-ibm-secrets-manager/pom.xml
index 71d23db3d97..f3a4a1112c1 100644
--- a/components/camel-ibm-secrets-manager/pom.xml
+++ b/components/camel-ibm-secrets-manager/pom.xml
@@ -49,6 +49,11 @@
        <version>${ibm-secrets-manager-version}</version>
     </dependency>
 
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+
         <!-- for testing -->
         <dependency>
             <groupId>org.apache.camel</groupId>
diff --git 
a/components/camel-ibm-secrets-manager/src/generated/resources/META-INF/services/org/apache/camel/properties-function/ibm
 
b/components/camel-ibm-secrets-manager/src/generated/resources/META-INF/services/org/apache/camel/properties-function/ibm
new file mode 100644
index 00000000000..234fdd75e22
--- /dev/null
+++ 
b/components/camel-ibm-secrets-manager/src/generated/resources/META-INF/services/org/apache/camel/properties-function/ibm
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerPropertiesFunction
diff --git 
a/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerPropertiesFunction.java
 
b/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerPropertiesFunction.java
new file mode 100644
index 00000000000..7c12ac7b5d4
--- /dev/null
+++ 
b/components/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerPropertiesFunction.java
@@ -0,0 +1,230 @@
+/*
+ * 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.ibm.secrets.manager;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.ibm.cloud.sdk.core.http.Response;
+import com.ibm.cloud.sdk.core.security.IamAuthenticator;
+import com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.SecretsManager;
+import 
com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.GetSecretByNameTypeOptions;
+import 
com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.GetSecretVersionOptions;
+import com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.Secret;
+import 
com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.SecretVersion;
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.spi.PropertiesFunction;
+import org.apache.camel.support.service.ServiceSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.StringHelper;
+import org.apache.camel.vault.IBMSecretsManagerVaultConfiguration;
+
+/**
+ * A {@link PropertiesFunction} that lookup the property value from IBM 
Secrets Manager service.
+ * <p/>
+ * The credentials to access Secrets Manager is defined using three 
environment variables representing the static
+ * credentials:
+ * <ul>
+ * <li><tt>CAMEL_VAULT_IBM_TOKEN</tt></li>
+ * <li><tt>CAMEL_VAULT_IBM_SERVICE_URL</tt></li>
+ * </ul>
+ * <p/>
+ *
+ * Otherwise, it is possible to specify the credentials as properties:
+ *
+ * <ul>
+ * <li><tt>camel.vault.ibm.token</tt></li>
+ * <li><tt>camel.vault.ibm.serviceUrl</tt></li>
+ * </ul>
+ * <p/>
+ *
+ * This implementation is to return the secret value associated with a key. 
The properties related to this kind of
+ * Properties Function are all prefixed with <tt>ibm:</tt>. For example asking 
for <tt>ibm:token</tt>, will return the
+ * secret value associated to the secret named token on AWS Secrets Manager.
+ *
+ * Another way of retrieving a secret value is using the following notation 
<tt>ibm:database/username</tt>: in this case
+ * the field username of the secret database will be returned. As a fallback, 
the user could provide a default value,
+ * which will be returned in case the secret doesn't exist, the secret has 
been marked for deletion or, for example, if
+ * a particular field of the secret doesn't exist. For using this feature, the 
user could use the following notation
+ * <tt>ibm:database/username:admin</tt>. The admin value will be returned as 
default value, if the conditions above were
+ * all met.
+ */
+@org.apache.camel.spi.annotations.PropertiesFunction("ibm")
+public class IBMSecretsManagerPropertiesFunction extends ServiceSupport 
implements PropertiesFunction, CamelContextAware {
+
+    private static final String CAMEL_AWS_VAULT_IBM_TOKEN_ENV = 
"CAMEL_VAULT_IBM_TOKEN";
+    private static final String CAMEL_AWS_VAULT_IBM_SERVICE_URL_ENV = 
"CAMEL_VAULT_IBM_SERVICE_URL";
+
+    private CamelContext camelContext;
+    private SecretsManager client;
+
+    private final Set<String> secrets = new HashSet<>();
+
+    public IBMSecretsManagerPropertiesFunction() {
+        super();
+    }
+
+    public IBMSecretsManagerPropertiesFunction(SecretsManager client) {
+        super();
+        this.client = client;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+
+        String token = System.getenv(CAMEL_AWS_VAULT_IBM_TOKEN_ENV);
+        String serviceUrl = System.getenv(CAMEL_AWS_VAULT_IBM_SERVICE_URL_ENV);
+        if (ObjectHelper.isEmpty(token) && ObjectHelper.isEmpty(serviceUrl)) {
+            IBMSecretsManagerVaultConfiguration ibmVaultConfiguration
+                    = 
getCamelContext().getVaultConfiguration().ibmSecretsManager();
+            if (ObjectHelper.isNotEmpty(ibmVaultConfiguration)) {
+                token = ibmVaultConfiguration.getToken();
+                serviceUrl = ibmVaultConfiguration.getServiceUrl();
+            }
+            IamAuthenticator iamAuthenticator = new IamAuthenticator.Builder()
+                    .apikey(token)
+                    .build();
+            client = new SecretsManager("Camel Secrets Manager Service for 
Properties", iamAuthenticator);
+            client.setServiceUrl(serviceUrl);
+        } else {
+            throw new RuntimeCamelException(
+                    "Using the IBM Secrets Manager Properties Function 
requires setting IBM Credentials and service url as application properties or 
environment variables");
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        if (client != null) {
+            client = null;
+        }
+        secrets.clear();
+        super.doStop();
+    }
+
+    @Override
+    public String getName() {
+        return "aws";
+    }
+
+    @Override
+    public String apply(String remainder) {
+        String key = remainder;
+        String subkey = null;
+        String returnValue = null;
+        String defaultValue = null;
+        String version = null;
+        if (remainder.contains("#")) {
+            key = StringHelper.before(remainder, "#");
+            subkey = StringHelper.after(remainder, "#");
+            defaultValue = StringHelper.after(subkey, ":");
+            if (ObjectHelper.isNotEmpty(defaultValue)) {
+                if (defaultValue.contains("@")) {
+                    version = StringHelper.after(defaultValue, "@");
+                    defaultValue = StringHelper.before(defaultValue, "@");
+                }
+            }
+            if (subkey.contains(":")) {
+                subkey = StringHelper.before(subkey, ":");
+            }
+            if (subkey.contains("@")) {
+                version = StringHelper.after(subkey, "@");
+                subkey = StringHelper.before(subkey, "@");
+            }
+        } else if (remainder.contains(":")) {
+            key = StringHelper.before(remainder, ":");
+            defaultValue = StringHelper.after(remainder, ":");
+            if (remainder.contains("@")) {
+                version = StringHelper.after(remainder, "@");
+                defaultValue = StringHelper.before(defaultValue, "@");
+            }
+        } else {
+            if (remainder.contains("@")) {
+                key = StringHelper.before(remainder, "@");
+                version = StringHelper.after(remainder, "@");
+            }
+        }
+
+        if (key != null) {
+            try {
+                returnValue = getSecretFromSource(key, subkey, defaultValue, 
version);
+            } catch (JsonProcessingException e) {
+                throw new RuntimeCamelException("Something went wrong while 
recovering " + key + " from vault");
+            }
+        }
+
+        return returnValue;
+    }
+
+    private String getSecretFromSource(
+            String key, String subkey, String defaultValue, String version)
+            throws JsonProcessingException {
+
+        // capture name of secret
+        secrets.add(key);
+
+        String returnValue = "";
+        Map<String, Object> data = Map.of();
+        GetSecretByNameTypeOptions.Builder secretRequestBuilder = new 
GetSecretByNameTypeOptions.Builder();
+        secretRequestBuilder.secretType(Secret.SecretType.KV).name(key);
+        secretRequestBuilder.secretGroupName("default");
+        Response<Secret> response = 
client.getSecretByNameType(secretRequestBuilder.build()).execute();
+        data = response.getResult().getData();
+        if (ObjectHelper.isNotEmpty(version)) {
+            GetSecretVersionOptions getSecretVersionOptions = new 
GetSecretVersionOptions.Builder()
+                    .secretId(response.getResult().getId())
+                    .id(version)
+                    .build();
+
+            Response<SecretVersion> secVersion = 
client.getSecretVersion(getSecretVersionOptions).execute();
+            data = secVersion.getResult().getData();
+        }
+        if (ObjectHelper.isNotEmpty(data)) {
+            data = response.getResult().getData();
+        }
+        if (ObjectHelper.isNotEmpty(subkey)) {
+            returnValue = String.valueOf(data.get(subkey));
+        } else {
+            returnValue = null;
+        }
+        if (ObjectHelper.isEmpty(returnValue)) {
+            returnValue = defaultValue;
+        }
+        return returnValue;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    /**
+     * Ids of the secrets in use
+     */
+    public Set<String> getSecrets() {
+        return secrets;
+    }
+}
diff --git 
a/components/camel-ibm-secrets-manager/src/test/java/org/apache/camel/component/ibm/secrets/manager/integration/operations/IBMSecretsManagerNoEnvPropertiesSourceTestIT.java
 
b/components/camel-ibm-secrets-manager/src/test/java/org/apache/camel/component/ibm/secrets/manager/integration/operations/IBMSecretsManagerNoEnvPropertiesSourceTestIT.java
new file mode 100644
index 00000000000..cc21bc6c9a8
--- /dev/null
+++ 
b/components/camel-ibm-secrets-manager/src/test/java/org/apache/camel/component/ibm/secrets/manager/integration/operations/IBMSecretsManagerNoEnvPropertiesSourceTestIT.java
@@ -0,0 +1,92 @@
+/*
+ * 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.ibm.secrets.manager.integration.operations;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+
+// Must be manually tested. Provide your own accessKey and secretKey using 
-Dsecrets-manager and -Dcamel.ibm.sm.serviceurl
+@EnabledIfSystemProperties({
+        @EnabledIfSystemProperty(named = "camel.ibm.sm.token", matches = ".*",
+                                 disabledReason = "Secrets Manager Token not 
provided"),
+        @EnabledIfSystemProperty(named = "camel.ibm.sm.serviceurl", matches = 
".*",
+                                 disabledReason = "Secrets Manager Service URL 
not provided")
+})
+public class IBMSecretsManagerNoEnvPropertiesSourceTestIT extends 
CamelTestSupport {
+
+    @Test
+    public void testFunction() throws Exception {
+        
context.getVaultConfiguration().ibmSecretsManager().setToken(System.getProperty("camel.ibm.sm.token"));
+        
context.getVaultConfiguration().ibmSecretsManager().setServiceUrl(System.getProperty("camel.ibm.sm.serviceurl"));
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() {
+                
from("direct:start").setBody(simple("{{ibm:authsecdb#username}}")).to("mock:bar");
+            }
+        });
+        context.start();
+
+        getMockEndpoint("mock:bar").expectedBodiesReceived("admin");
+
+        template.sendBody("direct:start", "Hello World");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
+    @Test
+    public void testFunctionWithVersion() throws Exception {
+        
context.getVaultConfiguration().ibmSecretsManager().setToken(System.getProperty("camel.ibm.sm.token"));
+        
context.getVaultConfiguration().ibmSecretsManager().setServiceUrl(System.getProperty("camel.ibm.sm.serviceurl"));
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() {
+                
from("direct:start").setBody(simple("{{ibm:authsecdb#username@current}}")).to("mock:bar");
+            }
+        });
+        context.start();
+
+        getMockEndpoint("mock:bar").expectedBodiesReceived("admin");
+
+        template.sendBody("direct:start", "Hello World");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
+    @Test
+    public void testFunctionWithUnexistentVersion() throws Exception {
+        
context.getVaultConfiguration().ibmSecretsManager().setToken(System.getProperty("camel.ibm.sm.token"));
+        
context.getVaultConfiguration().ibmSecretsManager().setServiceUrl(System.getProperty("camel.ibm.sm.serviceurl"));
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() {
+                
from("direct:start").setBody(simple("{{ibm:authsecdb#username@00221dc6-1911-c29e-fd7a-c4c5d88ce13f}}"))
+                        .to("mock:bar");
+            }
+        });
+        context.start();
+
+        getMockEndpoint("mock:bar").expectedBodiesReceived("admin");
+
+        template.sendBody("direct:start", "Hello World");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+}
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
 
b/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
new file mode 100644
index 00000000000..d6272066732
--- /dev/null
+++ 
b/core/camel-api/src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java
@@ -0,0 +1,52 @@
+/*
+ * 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.vault;
+
+import org.apache.camel.spi.Metadata;
+
+/**
+ * Configuration for access to IBM Secrets Manager Vault Secrets.
+ */
+public class IBMSecretsManagerVaultConfiguration extends VaultConfiguration {
+
+    @Metadata(secret = true)
+    private String token;
+    @Metadata
+    private String serviceUrl;
+
+    public String getToken() {
+        return token;
+    }
+
+    /**
+     * Token to access IBM Secrets Manager vault
+     */
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getServiceUrl() {
+        return serviceUrl;
+    }
+
+    /**
+     * Service URL to access IBM Secrets Manager vault
+     */
+    public void setServiceUrl(String serviceUrl) {
+        this.serviceUrl = serviceUrl;
+    }
+}
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java 
b/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java
index c34bae04a55..e2025405cd3 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java
@@ -27,6 +27,7 @@ public class VaultConfiguration {
     private HashicorpVaultConfiguration hashicorp;
     private KubernetesVaultConfiguration kubernetes;
     private KubernetesConfigMapVaultConfiguration kubernetesConfigmaps;
+    private IBMSecretsManagerVaultConfiguration ibmSecretsManager;
 
     /**
      * AWS Vault Configuration
@@ -88,6 +89,16 @@ public class VaultConfiguration {
         return kubernetesConfigmaps;
     }
 
+    /**
+     * IBM Secrets Manager Vault Configuration
+     */
+    public IBMSecretsManagerVaultConfiguration ibmSecretsManager() {
+        if (ibmSecretsManager == null) {
+            ibmSecretsManager = new IBMSecretsManagerVaultConfiguration();
+        }
+        return ibmSecretsManager;
+    }
+
     public AwsVaultConfiguration getAwsVaultConfiguration() {
         return aws;
     }
@@ -135,4 +146,12 @@ public class VaultConfiguration {
     public void 
setKubernetesConfigMapVaultConfiguration(KubernetesConfigMapVaultConfiguration 
kubernetesConfigmaps) {
         this.kubernetesConfigmaps = kubernetesConfigmaps;
     }
+
+    public IBMSecretsManagerVaultConfiguration 
getIBMSecretsManagerVaultConfiguration() {
+        return ibmSecretsManager;
+    }
+
+    public void 
setIBMSecretsManagerVaultConfiguration(IBMSecretsManagerVaultConfiguration 
ibmSecretsManager) {
+        this.ibmSecretsManager = ibmSecretsManager;
+    }
 }
diff --git a/core/camel-main/pom.xml b/core/camel-main/pom.xml
index 5bfb7921258..572193522ce 100644
--- a/core/camel-main/pom.xml
+++ b/core/camel-main/pom.xml
@@ -169,6 +169,8 @@
                                 
<class>org.apache.camel.vault.KubernetesVaultConfiguration=org.apache.camel.main.KubernetesVaultConfiguration</class>
                                 <!-- we want to have configurer for 
KubernetesConfigMapVaultConfiguration in the package main to prevent a split 
packages issue -->
                                 
<class>org.apache.camel.vault.KubernetesConfigMapVaultConfiguration=org.apache.camel.main.KubernetesConfigMapVaultConfiguration</class>
+                                <!-- we want to have configurer for 
IBMSecretsManagerVaultConfiguration in the package main to prevent a split 
packages issue -->
+                                
<class>org.apache.camel.vault.IBMSecretsManagerVaultConfiguration=org.apache.camel.main.IBMSecretsManagerVaultConfiguration</class>
                             </classes>
                         </configuration>
                     </execution>
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
index a75a2715585..b3c2e8b9f5a 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
@@ -35,6 +35,8 @@ public class AwsVaultConfigurationConfigurer extends 
org.apache.camel.support.co
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -78,6 +80,8 @@ public class AwsVaultConfigurationConfigurer extends 
org.apache.camel.support.co
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -122,6 +126,8 @@ public class AwsVaultConfigurationConfigurer extends 
org.apache.camel.support.co
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
index 72fdfe8e9b0..32234d8f7c3 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
@@ -28,6 +28,7 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         map.put("DefaultCredentialsProvider", boolean.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("OverrideEndpoint", boolean.class);
@@ -60,6 +61,8 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -108,6 +111,8 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -152,6 +157,8 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
index ea9daf5791e..62411aa2f9f 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
@@ -45,6 +45,8 @@ public class AzureVaultConfigurationConfigurer extends 
org.apache.camel.support.
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -87,6 +89,8 @@ public class AzureVaultConfigurationConfigurer extends 
org.apache.camel.support.
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -130,6 +134,8 @@ public class AzureVaultConfigurationConfigurer extends 
org.apache.camel.support.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
index bf3be0a1c8d..34fc1165cd1 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
@@ -33,6 +33,7 @@ public class AzureVaultConfigurationPropertiesConfigurer 
extends org.apache.came
         map.put("EventhubConnectionString", java.lang.String.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("RefreshEnabled", boolean.class);
@@ -69,6 +70,8 @@ public class AzureVaultConfigurationPropertiesConfigurer 
extends org.apache.came
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -116,6 +119,8 @@ public class AzureVaultConfigurationPropertiesConfigurer 
extends org.apache.came
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -159,6 +164,8 @@ public class AzureVaultConfigurationPropertiesConfigurer 
extends org.apache.came
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
index 8608a4157df..6ac3e5e2a0a 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
@@ -31,6 +31,8 @@ public class GcpVaultConfigurationConfigurer extends 
org.apache.camel.support.co
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -63,6 +65,8 @@ public class GcpVaultConfigurationConfigurer extends 
org.apache.camel.support.co
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -96,6 +100,8 @@ public class GcpVaultConfigurationConfigurer extends 
org.apache.camel.support.co
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
index 9d2b2cea192..a8b9fe502e7 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
@@ -26,6 +26,7 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         map.put("AzureVaultConfiguration", 
org.apache.camel.vault.AzureVaultConfiguration.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("ProjectId", java.lang.String.class);
@@ -50,6 +51,8 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -87,6 +90,8 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -120,6 +125,8 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
index 31bcaa1ca32..f047233b3c6 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
@@ -33,6 +33,8 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
         case "host": target.setHost(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -58,6 +60,8 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
         case "host": return java.lang.String.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -84,6 +88,8 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
         case "host": return target.getHost();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
index c6be0369655..f96da8dce63 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
@@ -28,6 +28,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
         map.put("Host", java.lang.String.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("Namespace", java.lang.String.class);
@@ -51,6 +52,8 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
         case "host": target.setHost(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -81,6 +84,8 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
         case "host": return java.lang.String.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -107,6 +112,8 @@ public class 
HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
         case "host": return target.getHost();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
similarity index 74%
copy from 
core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
copy to 
core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
index 31bcaa1ca32..823622dd7fe 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationConfigurer.java
@@ -10,36 +10,35 @@ import org.apache.camel.spi.PropertyConfigurerGetter;
 import org.apache.camel.spi.ConfigurerStrategy;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
 import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.vault.HashicorpVaultConfiguration;
+import org.apache.camel.vault.IBMSecretsManagerVaultConfiguration;
 
 /**
  * Generated by camel build tools - do NOT edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.GenerateConfigurerMojo")
 @SuppressWarnings("unchecked")
-public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+public class IBMSecretsManagerVaultConfigurationConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
-        org.apache.camel.vault.HashicorpVaultConfiguration target = 
(org.apache.camel.vault.HashicorpVaultConfiguration) obj;
+        org.apache.camel.vault.IBMSecretsManagerVaultConfiguration target = 
(org.apache.camel.vault.IBMSecretsManagerVaultConfiguration) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "awsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
-        case "cloud": target.setCloud(property(camelContext, boolean.class, 
value)); return true;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
-        case "host": target.setHost(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": 
target.setKubernetesVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
-        case "namespace": target.setNamespace(property(camelContext, 
java.lang.String.class, value)); return true;
-        case "port": target.setPort(property(camelContext, 
java.lang.String.class, value)); return true;
-        case "scheme": target.setScheme(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "serviceurl":
+        case "serviceUrl": target.setServiceUrl(property(camelContext, 
java.lang.String.class, value)); return true;
         case "token": target.setToken(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
         }
@@ -52,19 +51,18 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "awsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
-        case "cloud": return boolean.class;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
-        case "host": return java.lang.String.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
org.apache.camel.vault.KubernetesVaultConfiguration.class;
-        case "namespace": return java.lang.String.class;
-        case "port": return java.lang.String.class;
-        case "scheme": return java.lang.String.class;
+        case "serviceurl":
+        case "serviceUrl": return java.lang.String.class;
         case "token": return java.lang.String.class;
         default: return null;
         }
@@ -72,25 +70,24 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
 
     @Override
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.vault.HashicorpVaultConfiguration target = 
(org.apache.camel.vault.HashicorpVaultConfiguration) obj;
+        org.apache.camel.vault.IBMSecretsManagerVaultConfiguration target = 
(org.apache.camel.vault.IBMSecretsManagerVaultConfiguration) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "awsVaultConfiguration": return target.getAwsVaultConfiguration();
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
target.getAzureVaultConfiguration();
-        case "cloud": return target.isCloud();
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
-        case "host": return target.getHost();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
target.getKubernetesVaultConfiguration();
-        case "namespace": return target.getNamespace();
-        case "port": return target.getPort();
-        case "scheme": return target.getScheme();
+        case "serviceurl":
+        case "serviceUrl": return target.getServiceUrl();
         case "token": return target.getToken();
         default: return null;
         }
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
similarity index 74%
copy from 
core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
copy to 
core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
index c6be0369655..9a4c1ea3d2d 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationPropertiesConfigurer.java
@@ -10,54 +10,50 @@ import org.apache.camel.spi.PropertyConfigurerGetter;
 import org.apache.camel.spi.ConfigurerStrategy;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
 import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.main.HashicorpVaultConfigurationProperties;
+import org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties;
 
 /**
  * Generated by camel build tools - do NOT edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.GenerateConfigurerMojo")
 @SuppressWarnings("unchecked")
-public class HashicorpVaultConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+public class IBMSecretsManagerVaultConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
 
     private static final Map<String, Object> ALL_OPTIONS;
     static {
         Map<String, Object> map = new CaseInsensitiveMap();
         map.put("AwsVaultConfiguration", 
org.apache.camel.vault.AwsVaultConfiguration.class);
         map.put("AzureVaultConfiguration", 
org.apache.camel.vault.AzureVaultConfiguration.class);
-        map.put("Cloud", boolean.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
-        map.put("Host", java.lang.String.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
-        map.put("Namespace", java.lang.String.class);
-        map.put("Port", java.lang.String.class);
-        map.put("Scheme", java.lang.String.class);
+        map.put("ServiceUrl", java.lang.String.class);
         map.put("Token", java.lang.String.class);
         ALL_OPTIONS = map;
     }
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
-        org.apache.camel.main.HashicorpVaultConfigurationProperties target = 
(org.apache.camel.main.HashicorpVaultConfigurationProperties) obj;
+        org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties 
target = (org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties) 
obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "awsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
-        case "cloud": target.setCloud(property(camelContext, boolean.class, 
value)); return true;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
-        case "host": target.setHost(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": 
target.setKubernetesVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
-        case "namespace": target.setNamespace(property(camelContext, 
java.lang.String.class, value)); return true;
-        case "port": target.setPort(property(camelContext, 
java.lang.String.class, value)); return true;
-        case "scheme": target.setScheme(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "serviceurl":
+        case "serviceUrl": target.setServiceUrl(property(camelContext, 
java.lang.String.class, value)); return true;
         case "token": target.setToken(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
         }
@@ -75,19 +71,18 @@ public class 
HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         case "awsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
-        case "cloud": return boolean.class;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
-        case "host": return java.lang.String.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
org.apache.camel.vault.KubernetesVaultConfiguration.class;
-        case "namespace": return java.lang.String.class;
-        case "port": return java.lang.String.class;
-        case "scheme": return java.lang.String.class;
+        case "serviceurl":
+        case "serviceUrl": return java.lang.String.class;
         case "token": return java.lang.String.class;
         default: return null;
         }
@@ -95,25 +90,24 @@ public class 
HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
 
     @Override
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.main.HashicorpVaultConfigurationProperties target = 
(org.apache.camel.main.HashicorpVaultConfigurationProperties) obj;
+        org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties 
target = (org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties) 
obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "awsVaultConfiguration": return target.getAwsVaultConfiguration();
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
target.getAzureVaultConfiguration();
-        case "cloud": return target.isCloud();
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
-        case "host": return target.getHost();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
target.getKubernetesVaultConfiguration();
-        case "namespace": return target.getNamespace();
-        case "port": return target.getPort();
-        case "scheme": return target.getScheme();
+        case "serviceurl":
+        case "serviceUrl": return target.getServiceUrl();
         case "token": return target.getToken();
         default: return null;
         }
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigMapVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigMapVaultConfigurationConfigurer.java
index c794470bb55..a578c0138d7 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigMapVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigMapVaultConfigurationConfigurer.java
@@ -32,6 +32,8 @@ public class KubernetesConfigMapVaultConfigurationConfigurer 
extends org.apache.
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -54,6 +56,8 @@ public class KubernetesConfigMapVaultConfigurationConfigurer 
extends org.apache.
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -77,6 +81,8 @@ public class KubernetesConfigMapVaultConfigurationConfigurer 
extends org.apache.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
index df0434f7c41..b56d9f689e7 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
@@ -27,6 +27,7 @@ public class 
KubernetesConfigmapsVaultConfigurationPropertiesConfigurer extends
         map.put("Configmaps", java.lang.String.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("RefreshEnabled", boolean.class);
@@ -46,6 +47,8 @@ public class 
KubernetesConfigmapsVaultConfigurationPropertiesConfigurer extends
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -73,6 +76,8 @@ public class 
KubernetesConfigmapsVaultConfigurationPropertiesConfigurer extends
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -96,6 +101,8 @@ public class 
KubernetesConfigmapsVaultConfigurationPropertiesConfigurer extends
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationConfigurer.java
index ce267ca0fa9..4fb4aadaab6 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationConfigurer.java
@@ -31,6 +31,8 @@ public class KubernetesVaultConfigurationConfigurer extends 
org.apache.camel.sup
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -53,6 +55,8 @@ public class KubernetesVaultConfigurationConfigurer extends 
org.apache.camel.sup
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -76,6 +80,8 @@ public class KubernetesVaultConfigurationConfigurer extends 
org.apache.camel.sup
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
index 999915dd67e..279b129113c 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
@@ -26,6 +26,7 @@ public class KubernetesVaultConfigurationPropertiesConfigurer 
extends org.apache
         map.put("AzureVaultConfiguration", 
org.apache.camel.vault.AzureVaultConfiguration.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("IBMSecretsManagerVaultConfiguration", 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("RefreshEnabled", boolean.class);
@@ -45,6 +46,8 @@ public class KubernetesVaultConfigurationPropertiesConfigurer 
extends org.apache
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": 
target.setHashicorpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": 
target.setIBMSecretsManagerVaultConfiguration(property(camelContext, 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class, value)); 
return true;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
@@ -72,6 +75,8 @@ public class KubernetesVaultConfigurationPropertiesConfigurer 
extends org.apache
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
org.apache.camel.vault.IBMSecretsManagerVaultConfiguration.class;
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
@@ -95,6 +100,8 @@ public class 
KubernetesVaultConfigurationPropertiesConfigurer extends org.apache
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return 
target.getHashicorpVaultConfiguration();
+        case "ibmsecretsmanagervaultconfiguration":
+        case "iBMSecretsManagerVaultConfiguration": return 
target.getIBMSecretsManagerVaultConfiguration();
         case "kubernetesconfigmapvaultconfiguration":
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
 
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index 626329f7b43..b44a19c20c4 100644
--- 
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ 
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -16,6 +16,7 @@
     { "name": "camel.vault.kubernetes", "description": "Camel Kubernetes Vault 
configurations", "sourceType": 
"org.apache.camel.vault.KubernetesVaultConfiguration" },
     { "name": "camel.vault.kubernetescm", "description": "Camel Kubernetes 
Configmaps Vault configurations", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration" },
     { "name": "camel.vault.hashicorp", "description": "Camel Hashicorp Vault 
configurations", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration" },
+    { "name": "camel.vault.ibm", "description": "Camel IBM Secrets Manager 
Vault configurations", "sourceType": 
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration" },
     { "name": "camel.opentelemetry", "description": "Camel OpenTelemetry 
configurations", "sourceType": 
"org.apache.camel.main.OtelConfigurationProperties" },
     { "name": "camel.opentelemetry2", "description": "Camel OpenTelemetry 2 
configurations", "sourceType": 
"org.apache.camel.main.Otel2ConfigurationProperties" },
     { "name": "camel.telemetryDev", "description": "Camel Telemetry Dev 
configurations", "sourceType": 
"org.apache.camel.main.TelemetryDevConfigurationProperties" },
@@ -389,6 +390,8 @@
     { "name": "camel.vault.hashicorp.port", "description": "Port to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.token", "description": "Token to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.ibm.serviceUrl", "description": "Service URL to 
access IBM Secrets Manager vault", "sourceType": 
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.ibm.token", "description": "Token to access IBM 
Secrets Manager vault", "sourceType": 
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetes.refreshEnabled", "description": "Whether 
to automatically reload Camel upon secrets being updated in Kubernetes 
Cluster.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", 
"type": "boolean", "javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.vault.kubernetes.secrets", "description": "Specify the 
secret names (or pattern) to check for updates. Multiple secrets can be 
separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetescm.configmaps", "description": "Specify 
the configmap names (or pattern) to check for updates. Multiple configmaps can 
be separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": 
"string", "javaType": "java.lang.String" },
diff --git 
a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties
 
b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties
new file mode 100644
index 00000000000..f07caa35095
--- /dev/null
+++ 
b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.IBMSecretsManagerVaultConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.IBMSecretsManagerVaultConfigurationPropertiesConfigurer
diff --git 
a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.vault.IBMSecretsManagerVaultConfiguration
 
b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.vault.IBMSecretsManagerVaultConfiguration
new file mode 100644
index 00000000000..775d37ab679
--- /dev/null
+++ 
b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.vault.IBMSecretsManagerVaultConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.IBMSecretsManagerVaultConfigurationConfigurer
diff --git a/core/camel-main/src/main/docs/main.adoc 
b/core/camel-main/src/main/docs/main.adoc
index e41711d5f19..b6be0a3d36d 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -467,6 +467,17 @@ The camel.vault.hashicorp supports 6 options, which are 
listed below.
 |===
 
 
+=== Camel IBM Secrets Manager Vault configurations
+The camel.vault.ibm supports 2 options, which are listed below.
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.vault.ibm.serviceUrl* | Service URL to access IBM Secrets Manager 
vault |  | String
+| *camel.vault.ibm.token* | Token to access IBM Secrets Manager vault |  | 
String
+|===
+
+
 === Camel OpenTelemetry configurations
 The camel.opentelemetry supports 10 options, which are listed below.
 
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java 
b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index 903c7affec7..f66e39b8a0d 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -1918,6 +1918,9 @@ public abstract class BaseMainSupport extends BaseService 
{
             if ("kubernetescm".equalsIgnoreCase(name)) {
                 target = target.kubernetesConfigmaps();
             }
+            if ("ibm".equalsIgnoreCase(name)) {
+                target = target.ibmSecretsManager();
+            }
             // configure all the properties on the vault at once (to ensure 
they are configured in right order)
             OrderedLocationProperties config = 
MainHelper.extractProperties(properties, name + ".");
             setPropertiesOnTarget(camelContext, target, config, "camel.vault." 
+ name + ".", failIfNotSet, true,
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationProperties.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationProperties.java
new file mode 100644
index 00000000000..60250482dce
--- /dev/null
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/IBMSecretsManagerVaultConfigurationProperties.java
@@ -0,0 +1,69 @@
+/*
+ * 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.main;
+
+import org.apache.camel.spi.BootstrapCloseable;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.vault.IBMSecretsManagerVaultConfiguration;
+
+/**
+ * Configuration for access to IBM Secrets Manager Vault Secret.
+ */
+@Configurer(extended = true)
+public class IBMSecretsManagerVaultConfigurationProperties extends 
IBMSecretsManagerVaultConfiguration
+        implements BootstrapCloseable {
+
+    private MainConfigurationProperties parent;
+
+    public 
IBMSecretsManagerVaultConfigurationProperties(MainConfigurationProperties 
parent) {
+        this.parent = parent;
+    }
+
+    public MainConfigurationProperties end() {
+        return parent;
+    }
+
+    @Override
+    public void close() {
+        parent = null;
+    }
+
+    // getter and setters
+    // --------------------------------------------------------------
+
+    // these are inherited from the parent class
+
+    // fluent builders
+    // --------------------------------------------------------------
+
+    /**
+     * The IBM Secrets Manager Vault token
+     */
+    public IBMSecretsManagerVaultConfigurationProperties withToken(String 
token) {
+        setToken(token);
+        return this;
+    }
+
+    /**
+     * The IBM Secrets Manager service url
+     */
+    public IBMSecretsManagerVaultConfigurationProperties withServiceUrl(String 
serviceUrl) {
+        setServiceUrl(serviceUrl);
+        return this;
+    }
+
+}
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
index 837ea6cf1eb..56dd26d74ae 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
@@ -28,6 +28,7 @@ public class VaultConfigurationProperties extends 
VaultConfiguration implements
     private HashicorpVaultConfigurationProperties hashicorp;
     private KubernetesVaultConfigurationProperties kubernetes;
     private KubernetesConfigmapsVaultConfigurationProperties 
kubernetesConfigmaps;
+    private IBMSecretsManagerVaultConfigurationProperties ibmSecretsManager;
 
     public VaultConfigurationProperties(MainConfigurationProperties parent) {
         this.parent = parent;
@@ -58,6 +59,9 @@ public class VaultConfigurationProperties extends 
VaultConfiguration implements
         if (kubernetesConfigmaps != null) {
             kubernetesConfigmaps.close();
         }
+        if (ibmSecretsManager != null) {
+            ibmSecretsManager.close();
+        }
     }
 
     // getter and setters
@@ -115,4 +119,12 @@ public class VaultConfigurationProperties extends 
VaultConfiguration implements
         }
         return kubernetesConfigmaps;
     }
+
+    @Override
+    public IBMSecretsManagerVaultConfigurationProperties ibmSecretsManager() {
+        if (ibmSecretsManager == null) {
+            ibmSecretsManager = new 
IBMSecretsManagerVaultConfigurationProperties(parent);
+        }
+        return ibmSecretsManager;
+    }
 }
diff --git 
a/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java 
b/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
index 8cf2ea348df..4ecc7134577 100644
--- a/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
+++ b/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
@@ -447,4 +447,45 @@ public class MainVaultTest {
         Assertions.assertEquals("xxxx", cfg.getConfigmaps());
         main.stop();
     }
+
+    @Test
+    public void testMainIBMSecretsManager() {
+        Main main = new Main();
+
+        main.addInitialProperty("camel.vault.ibm.serviceUrl", 
"http://ibm.cloud.com";);
+        main.addInitialProperty("camel.vault.ibm.token", "token");
+
+        main.start();
+
+        CamelContext context = main.getCamelContext();
+        assertNotNull(context);
+
+        IBMSecretsManagerVaultConfiguration cfg = 
context.getVaultConfiguration().ibmSecretsManager();
+        assertNotNull(cfg);
+
+        Assertions.assertEquals("token", cfg.getToken());
+        Assertions.assertEquals("http://ibm.cloud.com";, cfg.getServiceUrl());
+        main.stop();
+    }
+
+    @Test
+    public void testMainIBMFluent() {
+        Main main = new Main();
+        main.configure().vault().ibmSecretsManager()
+                .withToken("token")
+                .withServiceUrl("http://ibm.cloud.com";)
+                .end();
+
+        main.start();
+
+        CamelContext context = main.getCamelContext();
+        assertNotNull(context);
+
+        IBMSecretsManagerVaultConfiguration cfg = 
context.getVaultConfiguration().ibmSecretsManager();
+        assertNotNull(cfg);
+
+        Assertions.assertEquals("token", cfg.getToken());
+        Assertions.assertEquals("http://ibm.cloud.com";, cfg.getServiceUrl());
+        main.stop();
+    }
 }
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
index 703695c1305..b237087036a 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
@@ -211,6 +211,8 @@ public class PrepareCamelMainMojo extends 
AbstractGeneratorMojo {
                     prefix = "camel.vault.kubernetescm.";
                 } else if (file.getName().contains("HashicorpVault")) {
                     prefix = "camel.vault.hashicorp.";
+                } else if (file.getName().contains("IBMSecretsManagerVault")) {
+                    prefix = "camel.vault.ibm.";
                 } else if (file.getName().contains("Health")) {
                     prefix = "camel.health.";
                 } else if (file.getName().contains("StartupCondition")) {
@@ -321,6 +323,16 @@ public class PrepareCamelMainMojo extends 
AbstractGeneratorMojo {
             throw new MojoFailureException("Error parsing file " + 
hashicorpVaultConfig + " due " + e.getMessage(), e);
         }
 
+        File ibmVaultConfig
+                = new File(camelApiDir, 
"src/main/java/org/apache/camel/vault/IBMSecretsManagerVaultConfiguration.java");
+        try {
+            List<MainModel.MainOptionModel> model = 
parseConfigurationSource(ibmVaultConfig);
+            model.forEach(m -> m.setName("camel.vault.ibm." + m.getName()));
+            data.addAll(model);
+        } catch (Exception e) {
+            throw new MojoFailureException("Error parsing file " + 
ibmVaultConfig + " due " + e.getMessage(), e);
+        }
+
         // lets sort so they are always ordered (but camel.main in top)
         data.sort((o1, o2) -> {
             if (o1.getName().startsWith("camel.main.") && 
!o2.getName().startsWith("camel.main.")) {
@@ -394,6 +406,10 @@ public class PrepareCamelMainMojo extends 
AbstractGeneratorMojo {
                     new MainGroupModel(
                             "camel.vault.hashicorp", "Camel Hashicorp Vault 
configurations",
                             
"org.apache.camel.vault.HashicorpVaultConfiguration"));
+            model.getGroups().add(
+                    new MainGroupModel(
+                            "camel.vault.ibm", "Camel IBM Secrets Manager 
Vault configurations",
+                            
"org.apache.camel.vault.IBMSecretsManagerVaultConfiguration"));
             model.getGroups().add(new MainGroupModel(
                     "camel.opentelemetry", "Camel OpenTelemetry 
configurations",
                     "org.apache.camel.main.OtelConfigurationProperties"));

Reply via email to