You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2026/08/25 15:19:28 UTC

(camel-karavan) 03/42: Karavan Core updated to 4.22 for vscode

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

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

commit c9761f3bb25cbc4121c9aad26040c3e77a937deb
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Mon Aug 24 11:58:07 2026 -0400

    Karavan Core updated to 4.22 for vscode
---
 karavan-vscode/package-lock.json                   |    4 +-
 karavan-vscode/tsconfig.json                       |    3 +-
 .../webview/karavan-core/api/CamelDefinitionApi.ts |   92 +-
 .../karavan-core/api/CamelDefinitionApiExt.ts      |   26 +-
 .../karavan-core/api/CamelDefinitionYaml.ts        |    4 +-
 .../karavan-core/api/CamelDefinitionYamlStep.ts    |  135 +-
 .../webview/karavan-core/api/CamelUtil.ts          |    7 +-
 .../webview/karavan-core/api/ComponentApi.ts       |    3 +
 .../webview/karavan-core/api/KameletApi.ts         |   62 +-
 .../webview/karavan-core/api/TemplateApi.ts        |    2 +-
 .../webview/karavan-core/api/TopologyUtils.ts      |  325 +-
 karavan-vscode/webview/karavan-core/api/UriUtil.ts |  117 +
 karavan-vscode/webview/karavan-core/contants.ts    |   13 +-
 .../webview/karavan-core/model/CamelDefinition.ts  |  197 +-
 .../webview/karavan-core/model/CamelMetadata.ts    | 3283 ++++++++++----------
 .../karavan-core/model/ExchangeDefinitions.ts      |   76 +
 .../karavan-core/model/IntegrationDefinition.ts    |    5 +-
 .../karavan-core/model/TopologyDefinition.ts       |   34 +-
 18 files changed, 2560 insertions(+), 1828 deletions(-)

diff --git a/karavan-vscode/package-lock.json b/karavan-vscode/package-lock.json
index a96a90a6..4e0e3f90 100644
--- a/karavan-vscode/package-lock.json
+++ b/karavan-vscode/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "karavan",
-  "version": "4.18.1",
+  "version": "4.22.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "karavan",
-      "version": "4.18.1",
+      "version": "4.22.0",
       "license": "Apache-2.0",
       "dependencies": {
         "@carbon/icons-react": "11.76.0",
diff --git a/karavan-vscode/tsconfig.json b/karavan-vscode/tsconfig.json
index 1b9cb598..133f9d21 100644
--- a/karavan-vscode/tsconfig.json
+++ b/karavan-vscode/tsconfig.json
@@ -31,7 +31,8 @@
       "@shared/*": ["webview/karavan/shared/*"],
       "@stores/*": ["webview/karavan/stores/*"],
       "@util/*": ["webview/karavan/util/*"],
-      "@karavan-core/*": ["webview/karavan-core/*"]
+      "@karavan-core/*": ["webview/karavan-core/*"],
+      "@core/*": ["webview/karavan-core/*"]
     },
     "importHelpers": true,
     "skipLibCheck": true
diff --git a/karavan-vscode/webview/karavan-core/api/CamelDefinitionApi.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionApi.ts
index 6bc4afde..ecc0814b 100644
--- a/karavan-vscode/webview/karavan-core/api/CamelDefinitionApi.ts
+++ b/karavan-vscode/webview/karavan-core/api/CamelDefinitionApi.ts
@@ -25,6 +25,7 @@ import {
     DataFormatsDefinitionDeserializer,
     ErrorHandlerDeserializer,
     OutputAwareFromDefinition,
+    A2ASubTaskDefinition,
     AggregateDefinition,
     BeanDefinition,
     BeanFactoryDefinition,
@@ -134,6 +135,7 @@ import {
     BeanPropertiesDefinition,
     BeanPropertyDefinition,
     ComponentScanDefinition,
+    SSLContextParametersDefinition,
     BatchResequencerConfig,
     StreamResequencerConfig,
     ASN1DataFormat,
@@ -153,6 +155,7 @@ import {
     FlatpackDataFormat,
     ForyDataFormat,
     GrokDataFormat,
+    GroovyJSonDataFormat,
     GroovyXmlDataFormat,
     GzipDeflaterDataFormat,
     HL7DataFormat,
@@ -191,7 +194,6 @@ import {
     NoErrorHandlerDefinition,
     RefErrorHandlerDefinition,
     SpringTransactionErrorHandlerDefinition,
-    CSimpleExpression,
     ConstantExpression,
     DatasonnetExpression,
     ExchangePropertyExpression,
@@ -199,6 +201,7 @@ import {
     GroovyExpression,
     HeaderExpression,
     Hl7TerserExpression,
+    JactlExpression,
     JavaExpression,
     JavaScriptExpression,
     JqExpression,
@@ -269,6 +272,9 @@ export class CamelDefinitionApi {
     static createProcessorDefinition = (element: any): ProcessorDefinition => { 
         const def = element ? new ProcessorDefinition({...element}) : new ProcessorDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        if (element?.a2aSubTask !== undefined) { 
+            def.a2aSubTask = CamelDefinitionApi.createA2ASubTaskDefinition(element.a2aSubTask); 
+        }
         if (element?.aggregate !== undefined) { 
             def.aggregate = CamelDefinitionApi.createAggregateDefinition(element.aggregate); 
         }
@@ -501,6 +507,13 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createA2ASubTaskDefinition = (element: any): A2ASubTaskDefinition => { 
+        const def = element ? new A2ASubTaskDefinition({...element}) : new A2ASubTaskDefinition();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        def.steps = CamelDefinitionApi.createSteps(element?.steps);
+        return def;
+    }
+
     static createAggregateDefinition = (element: any): AggregateDefinition => { 
         const def = element ? new AggregateDefinition({...element}) : new AggregateDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -664,9 +677,6 @@ export class CamelDefinitionApi {
         if (element?.constant !== undefined) { 
             def.constant = CamelDefinitionApi.createConstantExpression(element.constant); 
         }
-        if (element?.csimple !== undefined) { 
-            def.csimple = CamelDefinitionApi.createCSimpleExpression(element.csimple); 
-        }
         if (element?.datasonnet !== undefined) { 
             def.datasonnet = CamelDefinitionApi.createDatasonnetExpression(element.datasonnet); 
         }
@@ -682,6 +692,9 @@ export class CamelDefinitionApi {
         if (element?.hl7terser !== undefined) { 
             def.hl7terser = CamelDefinitionApi.createHl7TerserExpression(element.hl7terser); 
         }
+        if (element?.jactl !== undefined) { 
+            def.jactl = CamelDefinitionApi.createJactlExpression(element.jactl); 
+        }
         if (element?.java !== undefined) { 
             def.java = CamelDefinitionApi.createJavaExpression(element.java); 
         }
@@ -935,6 +948,9 @@ export class CamelDefinitionApi {
         if (element?.grok !== undefined) { 
             def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok); 
         }
+        if (element?.groovyJson !== undefined) { 
+            def.groovyJson = CamelDefinitionApi.createGroovyJSonDataFormat(element.groovyJson); 
+        }
         if (element?.groovyXml !== undefined) { 
             def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml); 
         }
@@ -1393,6 +1409,9 @@ export class CamelDefinitionApi {
     }
 
     static createSetExchangePatternDefinition = (element: any): SetExchangePatternDefinition => { 
+        if (element && typeof element === 'string') {
+            element = {pattern: element};
+        }
         const def = element ? new SetExchangePatternDefinition({...element}) : new SetExchangePatternDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
         return def;
@@ -1637,6 +1656,9 @@ export class CamelDefinitionApi {
         if (element?.grok !== undefined) { 
             def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok); 
         }
+        if (element?.groovyJson !== undefined) { 
+            def.groovyJson = CamelDefinitionApi.createGroovyJSonDataFormat(element.groovyJson); 
+        }
         if (element?.groovyXml !== undefined) { 
             def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml); 
         }
@@ -1797,6 +1819,12 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createSSLContextParametersDefinition = (element: any): SSLContextParametersDefinition => { 
+        const def = element ? new SSLContextParametersDefinition({...element}) : new SSLContextParametersDefinition();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        return def;
+    }
+
     static createBatchResequencerConfig = (element: any): BatchResequencerConfig => { 
         const def = element ? new BatchResequencerConfig({...element}) : new BatchResequencerConfig();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -1923,6 +1951,9 @@ export class CamelDefinitionApi {
         if (element?.grok !== undefined) { 
             def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok); 
         }
+        if (element?.groovyJson !== undefined) { 
+            def.groovyJson = CamelDefinitionApi.createGroovyJSonDataFormat(element.groovyJson); 
+        }
         if (element?.groovyXml !== undefined) { 
             def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml); 
         }
@@ -1956,12 +1987,18 @@ export class CamelDefinitionApi {
         if (element?.mimeMultipart !== undefined) { 
             def.mimeMultipart = CamelDefinitionApi.createMimeMultipartDataFormat(element.mimeMultipart); 
         }
+        if (element?.ocsf !== undefined) { 
+            def.ocsf = CamelDefinitionApi.createOcsfDataFormat(element.ocsf); 
+        }
         if (element?.parquetAvro !== undefined) { 
             def.parquetAvro = CamelDefinitionApi.createParquetAvroDataFormat(element.parquetAvro); 
         }
         if (element?.pgp !== undefined) { 
             def.pgp = CamelDefinitionApi.createPGPDataFormat(element.pgp); 
         }
+        if (element?.pqc !== undefined) { 
+            def.pqc = CamelDefinitionApi.createPQCDataFormat(element.pqc); 
+        }
         if (element?.protobuf !== undefined) { 
             def.protobuf = CamelDefinitionApi.createProtobufDataFormat(element.protobuf); 
         }
@@ -2052,6 +2089,12 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createGroovyJSonDataFormat = (element: any): GroovyJSonDataFormat => { 
+        const def = element ? new GroovyJSonDataFormat({...element}) : new GroovyJSonDataFormat();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        return def;
+    }
+
     static createGroovyXmlDataFormat = (element: any): GroovyXmlDataFormat => { 
         const def = element ? new GroovyXmlDataFormat({...element}) : new GroovyXmlDataFormat();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -2301,15 +2344,6 @@ export class CamelDefinitionApi {
         return def;
     }
 
-    static createCSimpleExpression = (element: any): CSimpleExpression => { 
-        if (element && typeof element === 'string') {
-            element = {expression: element};
-        }
-        const def = element ? new CSimpleExpression({...element}) : new CSimpleExpression();
-        def.uuid = element?.uuid ? element.uuid : def.uuid; 
-        return def;
-    }
-
     static createConstantExpression = (element: any): ConstantExpression => { 
         if (element && typeof element === 'string') {
             element = {expression: element};
@@ -2344,9 +2378,6 @@ export class CamelDefinitionApi {
         if (element?.constant !== undefined) { 
             def.constant = CamelDefinitionApi.createConstantExpression(element.constant); 
         }
-        if (element?.csimple !== undefined) { 
-            def.csimple = CamelDefinitionApi.createCSimpleExpression(element.csimple); 
-        }
         if (element?.datasonnet !== undefined) { 
             def.datasonnet = CamelDefinitionApi.createDatasonnetExpression(element.datasonnet); 
         }
@@ -2362,6 +2393,9 @@ export class CamelDefinitionApi {
         if (element?.hl7terser !== undefined) { 
             def.hl7terser = CamelDefinitionApi.createHl7TerserExpression(element.hl7terser); 
         }
+        if (element?.jactl !== undefined) { 
+            def.jactl = CamelDefinitionApi.createJactlExpression(element.jactl); 
+        }
         if (element?.java !== undefined) { 
             def.java = CamelDefinitionApi.createJavaExpression(element.java); 
         }
@@ -2443,6 +2477,15 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createJactlExpression = (element: any): JactlExpression => { 
+        if (element && typeof element === 'string') {
+            element = {expression: element};
+        }
+        const def = element ? new JactlExpression({...element}) : new JactlExpression();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        return def;
+    }
+
     static createJavaExpression = (element: any): JavaExpression => { 
         if (element && typeof element === 'string') {
             element = {expression: element};
@@ -2933,6 +2976,9 @@ export class CamelDefinitionApi {
         if (element?.grok !== undefined) { 
             def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok); 
         }
+        if (element?.groovyJson !== undefined) { 
+            def.groovyJson = CamelDefinitionApi.createGroovyJSonDataFormat(element.groovyJson); 
+        }
         if (element?.groovyXml !== undefined) { 
             def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml); 
         }
@@ -2966,12 +3012,18 @@ export class CamelDefinitionApi {
         if (element?.mimeMultipart !== undefined) { 
             def.mimeMultipart = CamelDefinitionApi.createMimeMultipartDataFormat(element.mimeMultipart); 
         }
+        if (element?.ocsf !== undefined) { 
+            def.ocsf = CamelDefinitionApi.createOcsfDataFormat(element.ocsf); 
+        }
         if (element?.parquetAvro !== undefined) { 
             def.parquetAvro = CamelDefinitionApi.createParquetAvroDataFormat(element.parquetAvro); 
         }
         if (element?.pgp !== undefined) { 
             def.pgp = CamelDefinitionApi.createPGPDataFormat(element.pgp); 
         }
+        if (element?.pqc !== undefined) { 
+            def.pqc = CamelDefinitionApi.createPQCDataFormat(element.pqc); 
+        }
         if (element?.protobuf !== undefined) { 
             def.protobuf = CamelDefinitionApi.createProtobufDataFormat(element.protobuf); 
         }
@@ -3096,6 +3148,7 @@ export class CamelDefinitionApi {
             case 'DataFormatsDefinitionDeserializer': return CamelDefinitionApi.createDataFormatsDefinitionDeserializer(newBody);
             case 'ErrorHandlerDeserializer': return CamelDefinitionApi.createErrorHandlerDeserializer(newBody);
             case 'OutputAwareFromDefinition': return CamelDefinitionApi.createOutputAwareFromDefinition(newBody);
+            case 'A2ASubTaskDefinition': return CamelDefinitionApi.createA2ASubTaskDefinition(newBody);
             case 'AggregateDefinition': return CamelDefinitionApi.createAggregateDefinition(newBody);
             case 'BeanDefinition': return CamelDefinitionApi.createBeanDefinition(newBody);
             case 'BeanFactoryDefinition': return CamelDefinitionApi.createBeanFactoryDefinition(newBody);
@@ -3205,6 +3258,7 @@ export class CamelDefinitionApi {
             case 'BeanPropertiesDefinition': return CamelDefinitionApi.createBeanPropertiesDefinition(newBody);
             case 'BeanPropertyDefinition': return CamelDefinitionApi.createBeanPropertyDefinition(newBody);
             case 'ComponentScanDefinition': return CamelDefinitionApi.createComponentScanDefinition(newBody);
+            case 'SSLContextParametersDefinition': return CamelDefinitionApi.createSSLContextParametersDefinition(newBody);
             case 'BatchResequencerConfig': return CamelDefinitionApi.createBatchResequencerConfig(newBody);
             case 'StreamResequencerConfig': return CamelDefinitionApi.createStreamResequencerConfig(newBody);
             case 'ASN1DataFormat': return CamelDefinitionApi.createASN1DataFormat(newBody);
@@ -3224,6 +3278,7 @@ export class CamelDefinitionApi {
             case 'FlatpackDataFormat': return CamelDefinitionApi.createFlatpackDataFormat(newBody);
             case 'ForyDataFormat': return CamelDefinitionApi.createForyDataFormat(newBody);
             case 'GrokDataFormat': return CamelDefinitionApi.createGrokDataFormat(newBody);
+            case 'GroovyJSonDataFormat': return CamelDefinitionApi.createGroovyJSonDataFormat(newBody);
             case 'GroovyXmlDataFormat': return CamelDefinitionApi.createGroovyXmlDataFormat(newBody);
             case 'GzipDeflaterDataFormat': return CamelDefinitionApi.createGzipDeflaterDataFormat(newBody);
             case 'HL7DataFormat': return CamelDefinitionApi.createHL7DataFormat(newBody);
@@ -3262,7 +3317,6 @@ export class CamelDefinitionApi {
             case 'NoErrorHandlerDefinition': return CamelDefinitionApi.createNoErrorHandlerDefinition(newBody);
             case 'RefErrorHandlerDefinition': return CamelDefinitionApi.createRefErrorHandlerDefinition(newBody);
             case 'SpringTransactionErrorHandlerDefinition': return CamelDefinitionApi.createSpringTransactionErrorHandlerDefinition(newBody);
-            case 'CSimpleExpression': return CamelDefinitionApi.createCSimpleExpression(newBody);
             case 'ConstantExpression': return CamelDefinitionApi.createConstantExpression(newBody);
             case 'DatasonnetExpression': return CamelDefinitionApi.createDatasonnetExpression(newBody);
             case 'ExchangePropertyExpression': return CamelDefinitionApi.createExchangePropertyExpression(newBody);
@@ -3270,6 +3324,7 @@ export class CamelDefinitionApi {
             case 'GroovyExpression': return CamelDefinitionApi.createGroovyExpression(newBody);
             case 'HeaderExpression': return CamelDefinitionApi.createHeaderExpression(newBody);
             case 'Hl7TerserExpression': return CamelDefinitionApi.createHl7TerserExpression(newBody);
+            case 'JactlExpression': return CamelDefinitionApi.createJactlExpression(newBody);
             case 'JavaExpression': return CamelDefinitionApi.createJavaExpression(newBody);
             case 'JavaScriptExpression': return CamelDefinitionApi.createJavaScriptExpression(newBody);
             case 'JqExpression': return CamelDefinitionApi.createJqExpression(newBody);
@@ -3342,12 +3397,12 @@ export class CamelDefinitionApi {
        delete newBody.dslName;
        switch (name) { 
             case 'ConstantExpression': return CamelDefinitionApi.createConstantExpression(newBody);
-            case 'CSimpleExpression': return CamelDefinitionApi.createCSimpleExpression(newBody);
             case 'DatasonnetExpression': return CamelDefinitionApi.createDatasonnetExpression(newBody);
             case 'ExchangePropertyExpression': return CamelDefinitionApi.createExchangePropertyExpression(newBody);
             case 'GroovyExpression': return CamelDefinitionApi.createGroovyExpression(newBody);
             case 'HeaderExpression': return CamelDefinitionApi.createHeaderExpression(newBody);
             case 'Hl7TerserExpression': return CamelDefinitionApi.createHl7TerserExpression(newBody);
+            case 'JactlExpression': return CamelDefinitionApi.createJactlExpression(newBody);
             case 'JavaExpression': return CamelDefinitionApi.createJavaExpression(newBody);
             case 'JqExpression': return CamelDefinitionApi.createJqExpression(newBody);
             case 'JavaScriptExpression': return CamelDefinitionApi.createJavaScriptExpression(newBody);
@@ -3390,6 +3445,7 @@ export class CamelDefinitionApi {
             case 'FlatpackDataFormat': return CamelDefinitionApi.createFlatpackDataFormat(newBody);
             case 'ForyDataFormat': return CamelDefinitionApi.createForyDataFormat(newBody);
             case 'GrokDataFormat': return CamelDefinitionApi.createGrokDataFormat(newBody);
+            case 'GroovyJSonDataFormat': return CamelDefinitionApi.createGroovyJSonDataFormat(newBody);
             case 'GroovyXmlDataFormat': return CamelDefinitionApi.createGroovyXmlDataFormat(newBody);
             case 'GzipDeflaterDataFormat': return CamelDefinitionApi.createGzipDeflaterDataFormat(newBody);
             case 'HL7DataFormat': return CamelDefinitionApi.createHL7DataFormat(newBody);
diff --git a/karavan-vscode/webview/karavan-core/api/CamelDefinitionApiExt.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionApiExt.ts
index 96fd385e..cf14f655 100644
--- a/karavan-vscode/webview/karavan-core/api/CamelDefinitionApiExt.ts
+++ b/karavan-vscode/webview/karavan-core/api/CamelDefinitionApiExt.ts
@@ -17,9 +17,9 @@
 import {CamelMetadataApi, ElementMeta, Languages, PropertyMeta} from '../model/CamelMetadata';
 import {CamelUtil} from './CamelUtil';
 import {
-    BeanFactoryDefinition,
+    BeanFactoryDefinition, DeleteDefinition,
     ExpressionDefinition,
-    FromDefinition,
+    FromDefinition, GetDefinition, HeadDefinition, PatchDefinition, PostDefinition, PutDefinition,
     RestDefinition,
     RouteConfigurationDefinition,
     RouteDefinition,
@@ -228,9 +228,9 @@ export class CamelDefinitionApiExt {
         return CamelDefinitionApiExt.checkIfHasId(integration, id, 0);
     };
 
-    static checkIfHasId = (obj: Object, id: string, counter: number): number => {
+    static checkIfHasId = (obj: object, id: string, counter: number): number => {
         for (const propName in obj) {
-            let prop = (obj as any)[propName];
+            const prop = (obj as any)[propName];
             if (propName === 'id' && id === prop) {
                 counter++;
                 counter = CamelDefinitionApiExt.checkIfHasId(prop, id, counter);
@@ -249,9 +249,9 @@ export class CamelDefinitionApiExt {
         return CamelDefinitionApiExt.findElementsById(integration, id, [])?.at(0);
     };
 
-    static findElementsById = (obj: Object, id: string, elements: CamelElement[]): CamelElement[] => {
+    static findElementsById = (obj: object, id: string, elements: CamelElement[]): CamelElement[] => {
         for (const propName in obj) {
-            let prop = (obj as any)[propName];
+            const prop = (obj as any)[propName];
             if (propName === 'id' && id === prop) {
                 elements.push(obj as CamelElement)
                 elements = CamelDefinitionApiExt.findElementsById(prop, id, elements);
@@ -508,26 +508,26 @@ export class CamelDefinitionApiExt {
         const flows: any[] = [];
         const methodFunctions: { [key: string]: (rest: RestDefinition, method: CamelElement) => void } = {
             GetDefinition: (rest: RestDefinition, method: CamelElement) => {
-                rest.get = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.get, method);
+                rest.get = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.get, method) as GetDefinition[];
             },
             PostDefinition: (rest: RestDefinition, method: CamelElement) => {
-                rest.post = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.post, method);
+                rest.post = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.post, method) as PostDefinition[];
             },
             PutDefinition: (rest: RestDefinition, method: CamelElement) => {
-                rest.put = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.put, method);
+                rest.put = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.put, method) as PutDefinition[];
             },
             PatchDefinition: (rest: RestDefinition, method: CamelElement) => {
-                rest.patch = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.patch, method);
+                rest.patch = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.patch, method) as PatchDefinition[];
             },
             DeleteDefinition: (rest: RestDefinition, method: CamelElement) => {
-                rest.delete = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.delete, method);
+                rest.delete = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.delete, method) as DeleteDefinition[];
             },
             HeadDefinition: (rest: RestDefinition, method: CamelElement) => {
-                rest.head = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.head, method);
+                rest.head = CamelDefinitionApiExt.addRestMethodToRestMethods(rest.head, method) as HeadDefinition[];
             },
         };
 
-        for (let flow of integration.spec.flows ?? []) {
+        for (const flow of integration.spec.flows ?? []) {
             if (flow.dslName === 'RestDefinition') {
                 if (flow.uuid !== restUuid) {
                     flows.push(flow);
diff --git a/karavan-vscode/webview/karavan-core/api/CamelDefinitionYaml.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionYaml.ts
index 5f3ac44d..3664a2c9 100644
--- a/karavan-vscode/webview/karavan-core/api/CamelDefinitionYaml.ts
+++ b/karavan-vscode/webview/karavan-core/api/CamelDefinitionYaml.ts
@@ -133,6 +133,8 @@ export class CamelDefinitionYaml {
             } else {
                 if (!CamelDefinitionYaml.isEmpty(value)) {
                     result[key] = value;
+                } else if (key === "expression"){
+                    result[key] = ""
                 }
             }
         }
@@ -174,7 +176,7 @@ export class CamelDefinitionYaml {
             const stepNameField = value.hasOwnProperty('stepName') ? 'stepName' : 'step-name';
             const stepName = value[stepNameField];
             const dslName = value.dslName;
-            let newValue: any = JSON.parse(JSON.stringify(value));
+            const newValue: any = JSON.parse(JSON.stringify(value));
             delete newValue.dslName;
             delete newValue[stepNameField];
 
diff --git a/karavan-vscode/webview/karavan-core/api/CamelDefinitionYamlStep.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionYamlStep.ts
index 648fef9a..81124209 100644
--- a/karavan-vscode/webview/karavan-core/api/CamelDefinitionYamlStep.ts
+++ b/karavan-vscode/webview/karavan-core/api/CamelDefinitionYamlStep.ts
@@ -26,6 +26,7 @@ import {
     DataFormatsDefinitionDeserializer,
     ErrorHandlerDeserializer,
     OutputAwareFromDefinition,
+    A2ASubTaskDefinition,
     AggregateDefinition,
     BeanDefinition,
     BeanFactoryDefinition,
@@ -135,6 +136,7 @@ import {
     BeanPropertiesDefinition,
     BeanPropertyDefinition,
     ComponentScanDefinition,
+    SSLContextParametersDefinition,
     BatchResequencerConfig,
     StreamResequencerConfig,
     ASN1DataFormat,
@@ -154,6 +156,7 @@ import {
     FlatpackDataFormat,
     ForyDataFormat,
     GrokDataFormat,
+    GroovyJSonDataFormat,
     GroovyXmlDataFormat,
     GzipDeflaterDataFormat,
     HL7DataFormat,
@@ -192,7 +195,6 @@ import {
     NoErrorHandlerDefinition,
     RefErrorHandlerDefinition,
     SpringTransactionErrorHandlerDefinition,
-    CSimpleExpression,
     ConstantExpression,
     DatasonnetExpression,
     ExchangePropertyExpression,
@@ -200,6 +202,7 @@ import {
     GroovyExpression,
     HeaderExpression,
     Hl7TerserExpression,
+    JactlExpression,
     JavaExpression,
     JavaScriptExpression,
     JqExpression,
@@ -601,6 +604,13 @@ export class CamelDefinitionYamlStep {
                def.convertVariableTo = CamelDefinitionYamlStep.readConvertVariableDefinition(element.convertVariableTo); 
             } 
         } 
+        if (element?.a2aSubTask !== undefined) { 
+            if (Array.isArray(element.a2aSubTask)) { 
+               def.a2aSubTask = CamelDefinitionYamlStep.readA2ASubTaskDefinition(element.a2aSubTask[0]); 
+            } else { 
+               def.a2aSubTask = CamelDefinitionYamlStep.readA2ASubTaskDefinition(element.a2aSubTask); 
+            } 
+        } 
         if (element?.setVariable !== undefined) { 
             if (Array.isArray(element.setVariable)) { 
                def.setVariable = CamelDefinitionYamlStep.readSetVariableDefinition(element.setVariable[0]); 
@@ -782,6 +792,14 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readA2ASubTaskDefinition = (element: any): A2ASubTaskDefinition => {
+        
+        let def = element ? new A2ASubTaskDefinition({...element}) : new A2ASubTaskDefinition();
+        def.steps = CamelDefinitionYamlStep.readSteps(element?.steps);
+
+        return def;
+    }
+
     static readAggregateDefinition = (element: any): AggregateDefinition => {
         
         let def = element ? new AggregateDefinition({...element}) : new AggregateDefinition();
@@ -1088,6 +1106,13 @@ export class CamelDefinitionYamlStep {
                def.datasonnet = CamelDefinitionYamlStep.readDatasonnetExpression(element.datasonnet); 
             } 
         } 
+        if (element?.jactl !== undefined) { 
+            if (Array.isArray(element.jactl)) { 
+               def.jactl = CamelDefinitionYamlStep.readJactlExpression(element.jactl[0]); 
+            } else { 
+               def.jactl = CamelDefinitionYamlStep.readJactlExpression(element.jactl); 
+            } 
+        } 
         if (element?.jq !== undefined) { 
             if (Array.isArray(element.jq)) { 
                def.jq = CamelDefinitionYamlStep.readJqExpression(element.jq[0]); 
@@ -1172,13 +1197,6 @@ export class CamelDefinitionYamlStep {
                def.wasm = CamelDefinitionYamlStep.readWasmExpression(element.wasm); 
             } 
         } 
-        if (element?.csimple !== undefined) { 
-            if (Array.isArray(element.csimple)) { 
-               def.csimple = CamelDefinitionYamlStep.readCSimpleExpression(element.csimple[0]); 
-            } else { 
-               def.csimple = CamelDefinitionYamlStep.readCSimpleExpression(element.csimple); 
-            } 
-        } 
         if (element?.exchangeProperty !== undefined) { 
             if (Array.isArray(element.exchangeProperty)) { 
                def.exchangeProperty = CamelDefinitionYamlStep.readExchangePropertyExpression(element.exchangeProperty[0]); 
@@ -1708,6 +1726,13 @@ export class CamelDefinitionYamlStep {
                def.univocityTsv = CamelDefinitionYamlStep.readUniVocityTsvDataFormat(element.univocityTsv); 
             } 
         } 
+        if (element?.groovyJson !== undefined) { 
+            if (Array.isArray(element.groovyJson)) { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson[0]); 
+            } else { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson); 
+            } 
+        } 
         if (element?.hl7 !== undefined) { 
             if (Array.isArray(element.hl7)) { 
                def.hl7 = CamelDefinitionYamlStep.readHL7DataFormat(element.hl7[0]); 
@@ -2282,7 +2307,7 @@ export class CamelDefinitionYamlStep {
     }
 
     static readSetExchangePatternDefinition = (element: any): SetExchangePatternDefinition => {
-        
+        if (element && typeof element === 'string') element = {pattern: element};
         let def = element ? new SetExchangePatternDefinition({...element}) : new SetExchangePatternDefinition();
 
         return def;
@@ -2855,6 +2880,13 @@ export class CamelDefinitionYamlStep {
                def.univocityTsv = CamelDefinitionYamlStep.readUniVocityTsvDataFormat(element.univocityTsv); 
             } 
         } 
+        if (element?.groovyJson !== undefined) { 
+            if (Array.isArray(element.groovyJson)) { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson[0]); 
+            } else { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson); 
+            } 
+        } 
         if (element?.hl7 !== undefined) { 
             if (Array.isArray(element.hl7)) { 
                def.hl7 = CamelDefinitionYamlStep.readHL7DataFormat(element.hl7[0]); 
@@ -3018,6 +3050,13 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readSSLContextParametersDefinition = (element: any): SSLContextParametersDefinition => {
+        
+        let def = element ? new SSLContextParametersDefinition({...element}) : new SSLContextParametersDefinition();
+
+        return def;
+    }
+
     static readBatchResequencerConfig = (element: any): BatchResequencerConfig => {
         
         let def = element ? new BatchResequencerConfig({...element}) : new BatchResequencerConfig();
@@ -3126,6 +3165,13 @@ export class CamelDefinitionYamlStep {
                def.tarFile = CamelDefinitionYamlStep.readTarFileDataFormat(element.tarFile); 
             } 
         } 
+        if (element?.pqc !== undefined) { 
+            if (Array.isArray(element.pqc)) { 
+               def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc[0]); 
+            } else { 
+               def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc); 
+            } 
+        } 
         if (element?.csv !== undefined) { 
             if (Array.isArray(element.csv)) { 
                def.csv = CamelDefinitionYamlStep.readCsvDataFormat(element.csv[0]); 
@@ -3196,6 +3242,13 @@ export class CamelDefinitionYamlStep {
                def.smooks = CamelDefinitionYamlStep.readSmooksDataFormat(element.smooks); 
             } 
         } 
+        if (element?.ocsf !== undefined) { 
+            if (Array.isArray(element.ocsf)) { 
+               def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf[0]); 
+            } else { 
+               def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf); 
+            } 
+        } 
         if (element?.mimeMultipart !== undefined) { 
             if (Array.isArray(element.mimeMultipart)) { 
                def.mimeMultipart = CamelDefinitionYamlStep.readMimeMultipartDataFormat(element.mimeMultipart[0]); 
@@ -3357,6 +3410,13 @@ export class CamelDefinitionYamlStep {
                def.univocityTsv = CamelDefinitionYamlStep.readUniVocityTsvDataFormat(element.univocityTsv); 
             } 
         } 
+        if (element?.groovyJson !== undefined) { 
+            if (Array.isArray(element.groovyJson)) { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson[0]); 
+            } else { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson); 
+            } 
+        } 
         if (element?.hl7 !== undefined) { 
             if (Array.isArray(element.hl7)) { 
                def.hl7 = CamelDefinitionYamlStep.readHL7DataFormat(element.hl7[0]); 
@@ -3466,6 +3526,13 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readGroovyJSonDataFormat = (element: any): GroovyJSonDataFormat => {
+        
+        let def = element ? new GroovyJSonDataFormat({...element}) : new GroovyJSonDataFormat();
+
+        return def;
+    }
+
     static readGroovyXmlDataFormat = (element: any): GroovyXmlDataFormat => {
         
         let def = element ? new GroovyXmlDataFormat({...element}) : new GroovyXmlDataFormat();
@@ -3766,13 +3833,6 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
-    static readCSimpleExpression = (element: any): CSimpleExpression => {
-        if (element && typeof element === 'string') element = {expression: element};
-        let def = element ? new CSimpleExpression({...element}) : new CSimpleExpression();
-
-        return def;
-    }
-
     static readConstantExpression = (element: any): ConstantExpression => {
         if (element && typeof element === 'string') element = {expression: element};
         let def = element ? new ConstantExpression({...element}) : new ConstantExpression();
@@ -3839,6 +3899,13 @@ export class CamelDefinitionYamlStep {
                def.datasonnet = CamelDefinitionYamlStep.readDatasonnetExpression(element.datasonnet); 
             } 
         } 
+        if (element?.jactl !== undefined) { 
+            if (Array.isArray(element.jactl)) { 
+               def.jactl = CamelDefinitionYamlStep.readJactlExpression(element.jactl[0]); 
+            } else { 
+               def.jactl = CamelDefinitionYamlStep.readJactlExpression(element.jactl); 
+            } 
+        } 
         if (element?.jq !== undefined) { 
             if (Array.isArray(element.jq)) { 
                def.jq = CamelDefinitionYamlStep.readJqExpression(element.jq[0]); 
@@ -3923,13 +3990,6 @@ export class CamelDefinitionYamlStep {
                def.wasm = CamelDefinitionYamlStep.readWasmExpression(element.wasm); 
             } 
         } 
-        if (element?.csimple !== undefined) { 
-            if (Array.isArray(element.csimple)) { 
-               def.csimple = CamelDefinitionYamlStep.readCSimpleExpression(element.csimple[0]); 
-            } else { 
-               def.csimple = CamelDefinitionYamlStep.readCSimpleExpression(element.csimple); 
-            } 
-        } 
         if (element?.exchangeProperty !== undefined) { 
             if (Array.isArray(element.exchangeProperty)) { 
                def.exchangeProperty = CamelDefinitionYamlStep.readExchangePropertyExpression(element.exchangeProperty[0]); 
@@ -3990,6 +4050,13 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readJactlExpression = (element: any): JactlExpression => {
+        if (element && typeof element === 'string') element = {expression: element};
+        let def = element ? new JactlExpression({...element}) : new JactlExpression();
+
+        return def;
+    }
+
     static readJavaExpression = (element: any): JavaExpression => {
         if (element && typeof element === 'string') element = {expression: element};
         let def = element ? new JavaExpression({...element}) : new JavaExpression();
@@ -4495,6 +4562,13 @@ export class CamelDefinitionYamlStep {
                def.tarFile = CamelDefinitionYamlStep.readTarFileDataFormat(element.tarFile); 
             } 
         } 
+        if (element?.pqc !== undefined) { 
+            if (Array.isArray(element.pqc)) { 
+               def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc[0]); 
+            } else { 
+               def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc); 
+            } 
+        } 
         if (element?.csv !== undefined) { 
             if (Array.isArray(element.csv)) { 
                def.csv = CamelDefinitionYamlStep.readCsvDataFormat(element.csv[0]); 
@@ -4565,6 +4639,13 @@ export class CamelDefinitionYamlStep {
                def.smooks = CamelDefinitionYamlStep.readSmooksDataFormat(element.smooks); 
             } 
         } 
+        if (element?.ocsf !== undefined) { 
+            if (Array.isArray(element.ocsf)) { 
+               def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf[0]); 
+            } else { 
+               def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf); 
+            } 
+        } 
         if (element?.mimeMultipart !== undefined) { 
             if (Array.isArray(element.mimeMultipart)) { 
                def.mimeMultipart = CamelDefinitionYamlStep.readMimeMultipartDataFormat(element.mimeMultipart[0]); 
@@ -4726,6 +4807,13 @@ export class CamelDefinitionYamlStep {
                def.univocityTsv = CamelDefinitionYamlStep.readUniVocityTsvDataFormat(element.univocityTsv); 
             } 
         } 
+        if (element?.groovyJson !== undefined) { 
+            if (Array.isArray(element.groovyJson)) { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson[0]); 
+            } else { 
+               def.groovyJson = CamelDefinitionYamlStep.readGroovyJSonDataFormat(element.groovyJson); 
+            } 
+        } 
         if (element?.hl7 !== undefined) { 
             if (Array.isArray(element.hl7)) { 
                def.hl7 = CamelDefinitionYamlStep.readHL7DataFormat(element.hl7[0]); 
@@ -4908,6 +4996,7 @@ export class CamelDefinitionYamlStep {
         const name = Object.getOwnPropertyNames(body)[0];
         const newBody = CamelUtil.camelizeBody(name, body[name], clone);
         switch (name) { 
+            case 'a2aSubTask': return CamelDefinitionYamlStep.readA2ASubTaskDefinition(newBody);
             case 'aggregate': return CamelDefinitionYamlStep.readAggregateDefinition(newBody);
             case 'bean': return CamelDefinitionYamlStep.readBeanDefinition(newBody);
             case 'doCatch': return CamelDefinitionYamlStep.readCatchDefinition(newBody);
diff --git a/karavan-vscode/webview/karavan-core/api/CamelUtil.ts b/karavan-vscode/webview/karavan-core/api/CamelUtil.ts
index 4ed02ae2..6f8731aa 100644
--- a/karavan-vscode/webview/karavan-core/api/CamelUtil.ts
+++ b/karavan-vscode/webview/karavan-core/api/CamelUtil.ts
@@ -33,7 +33,6 @@ import {CamelMetadataApi, SensitiveKeys} from '../model/CamelMetadata';
 import {CamelDefinitionApiExt} from './CamelDefinitionApiExt';
 import {v4 as uuidv4} from 'uuid';
 import {CamelDefinitionYaml} from './CamelDefinitionYaml';
-import {ProjectFile} from "@models/ProjectModels";
 import {KARAVAN_DOT_EXTENSION} from "../contants";
 
 export class CamelUtil {
@@ -393,10 +392,10 @@ export class CamelUtil {
         return CamelDefinitionYaml.integrationToYaml(integration);
     };
 
-    static hasRouteTemplateDefinitions = (file: ProjectFile): boolean => {
+    static hasRouteTemplateDefinitions = (fileName: string, code: string): boolean => {
         try {
-            if (file.name.endsWith(KARAVAN_DOT_EXTENSION.CAMEL_YAML)) {
-                const integration = CamelDefinitionYaml.yamlToIntegration("", file.code);
+            if (fileName.endsWith(KARAVAN_DOT_EXTENSION.CAMEL_YAML)) {
+                const integration = CamelDefinitionYaml.yamlToIntegration("", code);
                 const templates = integration.spec.flows?.filter(flow => flow.dslName === 'RouteTemplateDefinition');
                 return templates?.length !== undefined && templates?.length > 0;
             } else {
diff --git a/karavan-vscode/webview/karavan-core/api/ComponentApi.ts b/karavan-vscode/webview/karavan-core/api/ComponentApi.ts
index 46c2c40c..28afde8c 100644
--- a/karavan-vscode/webview/karavan-core/api/ComponentApi.ts
+++ b/karavan-vscode/webview/karavan-core/api/ComponentApi.ts
@@ -137,6 +137,9 @@ export class ComponentApi {
         if (def.dslName === 'ToDynamicDefinition') {
             return def;
         }
+        if (def.dslName === "InterceptSendToEndpointDefinition" && def.uri?.includes('*')) {
+            return def;
+        }
         const uriParts = ComponentApi.parseUri(def.uri);
         if (uriParts.length > 1 && !def.uri.startsWith('kamelet:')) {
             const uriValues = ComponentApi.getUriParts(def.uri);
diff --git a/karavan-vscode/webview/karavan-core/api/KameletApi.ts b/karavan-vscode/webview/karavan-core/api/KameletApi.ts
index d3e52254..e8e2b04d 100644
--- a/karavan-vscode/webview/karavan-core/api/KameletApi.ts
+++ b/karavan-vscode/webview/karavan-core/api/KameletApi.ts
@@ -14,13 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { KameletModel, Property } from '../model/KameletModels';
+import {KameletModel, Property} from '../model/KameletModels';
 import * as yaml from 'js-yaml';
 
-const CamelKamelets: KameletModel[] = [];
 const CustomKamelets: KameletModel[] = [];
 const ProjectKamelets: KameletModel[] = [];
-const BlockedKamelets: string[] = [];
 
 export class KameletApi {
     private constructor() {}
@@ -29,20 +27,6 @@ export class KameletApi {
         return CustomKamelets.map(k => k.metadata.name);
     };
 
-    static getProjectKameletNames = (): string[] => {
-        return ProjectKamelets.map(k => k.metadata.name);
-    };
-
-    static saveCustomKamelet = (yaml: string): void => {
-        const kamelet: KameletModel = KameletApi.yamlToKamelet(yaml);
-        const kameletIndex = CustomKamelets.findIndex((k: KameletModel) => k.metadata.name === kamelet.metadata.name);
-        if (kameletIndex === -1) {
-            CustomKamelets.push(kamelet);
-        } else {
-            CustomKamelets.splice(kameletIndex, 1, kamelet)
-        }
-    };
-
     static saveCustomKamelets = (kameletYamls: string[], clean: boolean = false): void => {
         const kamelets: KameletModel[] = kameletYamls?.filter(k => k?.trim().length > 0).map(text => KameletApi.yamlToKamelet(text)) || [];
         if (clean) CustomKamelets.length = 0;
@@ -63,16 +47,6 @@ export class KameletApi {
         );
     };
 
-    static saveProjectKamelet = (yaml: string): void => {
-        const kamelet: KameletModel = KameletApi.yamlToKamelet(yaml);
-        const kameletIndex = ProjectKamelets.findIndex((k: KameletModel) => k.metadata.name === kamelet.metadata.name);
-        if (kameletIndex === -1) {
-            ProjectKamelets.push(kamelet);
-        } else {
-            ProjectKamelets.splice(kameletIndex, 1, kamelet)
-        }
-    };
-
     static getKameletProperties = (kameletName: string): Property[] => {
         const kamelet: KameletModel | undefined = KameletApi.findKameletByName(kameletName);
         const properties: Property[] = [];
@@ -102,7 +76,7 @@ export class KameletApi {
     };
 
     static getAllKamelets = (): KameletModel[] => {
-        return [...ProjectKamelets, ...CustomKamelets, ...CamelKamelets].sort((a, b) => a.title().localeCompare(b.title(), undefined, { sensitivity: 'base' }));
+        return [...ProjectKamelets, ...CustomKamelets].sort((a, b) => a.title().localeCompare(b.title(), undefined, { sensitivity: 'base' }));
     };
 
     static jsonToKamelet = (json: string): KameletModel => {
@@ -112,7 +86,7 @@ export class KameletApi {
     };
 
     static findKameletByName = (name: string): KameletModel | undefined => {
-        for (const list of [ProjectKamelets, CustomKamelets, CamelKamelets]) {
+        for (const list of [ProjectKamelets, CustomKamelets]) {
             const found = list.find((k) => k.metadata.name === name);
             if (found) return found;
         }
@@ -127,34 +101,4 @@ export class KameletApi {
         const fromYaml = yaml.load(text);
         return KameletApi.jsonToKamelet(JSON.stringify(fromYaml));
     };
-
-    static saveCamelKamelets = (kameletYamls: string[], clean: boolean = false): void => {
-        const kamelets: KameletModel[] = kameletYamls.map(text => KameletApi.yamlToKamelet(text));
-        if (clean) CamelKamelets.length = 0;
-        CamelKamelets.push(
-            ...kamelets.sort((a, b) =>
-                a.spec.definition.title.localeCompare(b.spec.definition.title, undefined, { sensitivity: 'base' }),
-            ),
-        );
-    };
-
-    static saveBlockedKameletNames = (names: string[]): void => {
-        BlockedKamelets.length = 0;
-        BlockedKamelets.push(...names);
-    }
-
-    static saveBlockedKameletName = (name: string, checked: boolean) => {
-        const index = BlockedKamelets.indexOf(name);
-        if ( !checked && index === -1) {
-            BlockedKamelets.push(name);
-        }
-        else if ( checked && index > -1) {
-            BlockedKamelets.splice(index, 1);
-        }
-        return BlockedKamelets;
-    }
-
-    static getBlockedKameletNames = () => {
-        return BlockedKamelets;
-    }
 }
diff --git a/karavan-vscode/webview/karavan-core/api/TemplateApi.ts b/karavan-vscode/webview/karavan-core/api/TemplateApi.ts
index 191f6228..d1758e79 100644
--- a/karavan-vscode/webview/karavan-core/api/TemplateApi.ts
+++ b/karavan-vscode/webview/karavan-core/api/TemplateApi.ts
@@ -35,7 +35,7 @@ export class TemplateApi {
     };
 
     static generateCode = (name: string, beanName: string): string | undefined => {
-        let template: string | undefined = TemplateApi.getTemplate(name);
+        const template: string | undefined = TemplateApi.getTemplate(name);
         if (template) {
             return template.replaceAll('${NAME}', beanName);
         } else {
diff --git a/karavan-vscode/webview/karavan-core/api/TopologyUtils.ts b/karavan-vscode/webview/karavan-core/api/TopologyUtils.ts
index b9f2a2ba..467c064f 100644
--- a/karavan-vscode/webview/karavan-core/api/TopologyUtils.ts
+++ b/karavan-vscode/webview/karavan-core/api/TopologyUtils.ts
@@ -27,9 +27,12 @@ import {
     RouteConfigurationDefinition,
     RouteDefinition,
     SagaDefinition,
+    TemplatedRouteDefinition,
 } from '../model/CamelDefinition';
 import {CamelElement, Integration,} from '../model/IntegrationDefinition';
 import {
+    TopologyAsyncApiNode,
+    TopologyAsyncApiOperation,
     TopologyBeanNode,
     TopologyIncomingNode,
     TopologyOpenApiNode,
@@ -38,20 +41,18 @@ import {
     TopologyRestNode,
     TopologyRouteConfigurationNode,
     TopologyRouteNode,
+    TopologyStep,
 } from '../model/TopologyDefinition';
 import {ComponentApi, INTERNAL_COMPONENTS} from './ComponentApi';
 import {CamelDefinitionApiExt} from './CamelDefinitionApiExt';
 import {CamelDisplayUtil} from './CamelDisplayUtil';
 import {CamelUtil} from './CamelUtil';
-import {OPENAPI_FILE_NAME_JSON} from '../contants';
+import {LANDSCAPE_FILE_NAME_JSON, OPENAPI_FILE_NAME_JSON, X_APPLICATION_ID} from '../contants';
+import {CamelDefinitionYaml} from "@core/api/CamelDefinitionYaml";
+import {BeanUsageData, ExchangeDataUsage} from "@core/model/ExchangeDefinitions";
 
 const outgoingDefinitions: string[] = ['ToDefinition', 'KameletDefinition', 'ToDynamicDefinition', 'PollEnrichDefinition', 'EnrichDefinition', 'WireTapDefinition', 'SagaDefinition', 'PollDefinition'];
 
-export class ChildElement {
-    constructor(public name: string = '', public className: string = '', public multiple: boolean = false) {
-    }
-}
-
 export interface IncomingLink {
     name: string;
     fileName: string;
@@ -90,29 +91,41 @@ export class TopologyUtils {
 
     static getUniqueUri = (element: CamelElement): string => {
         const uri: string = (element as any).uri || '';
-        let result = uri.startsWith('kamelet') ? TopologyUtils.cutKameletUriSuffix(uri).concat(':') : uri.concat(':');
         const className = element.dslName;
-        if (['FromDefinition', 'ToDefinition', 'ToDynamicDefinition', 'WireTapDefinition'].includes(className)) {
-            if (!CamelUtil.isKameletComponent(element)) {
-                const requiredProperties = CamelUtil.getComponentProperties(element).filter(p => p.required);
-                for (const property of requiredProperties) {
-                    const value = CamelDefinitionApiExt.getParametersValue(element, property.name, property.kind === 'path');
-                    if (value !== undefined && property.type === 'string' && value.trim().length > 0) {
-                        result = result + property.name + '=' + value + '&';
+        const isSQL = ['FromDefinition', 'ToDefinition', 'ToDynamicDefinition', 'WireTapDefinition'].includes(className)
+            && !CamelUtil.isKameletComponent(element)
+            && uri === 'sql';
+        if (isSQL) {
+            const dataSource = CamelDefinitionApiExt.getParametersValue(element, "dataSource", false);
+            return uri.concat(':').concat(dataSource);
+        } else {
+            let result = uri.startsWith('kamelet') ? TopologyUtils.cutKameletUriSuffix(uri).concat(':') : uri.concat(':');
+            const className = element.dslName;
+            if (['FromDefinition', 'ToDefinition', 'ToDynamicDefinition', 'WireTapDefinition'].includes(className)) {
+                if (!CamelUtil.isKameletComponent(element)) {
+                    const requiredProperties = CamelUtil.getComponentProperties(element).filter(p => p.required);
+                    for (const property of requiredProperties) {
+                        const value = CamelDefinitionApiExt.getParametersValue(element, property.name, property.kind === 'path');
+                        if (value !== undefined) {
+                            const valueString = property.type === 'string' ? value?.trim() : value?.toString()?.trim();
+                            if (valueString?.length > 0) {
+                                result = result + property.name + '=' + valueString + '&';
+                            }
+                        }
                     }
-                }
-            } else {
-                const requiredProperties = CamelUtil.getKameletProperties(element, true);
-                for (const property of requiredProperties) {
-                    const value = CamelDefinitionApiExt.getParametersValue(element, property.id);
-                    if (value !== undefined && property.type === 'string' && value.toString().trim().length > 0) {
-                        result = result + property.id + '=' + value + '&';
+                } else {
+                    const requiredProperties = CamelUtil.getKameletProperties(element, true);
+                    for (const property of requiredProperties) {
+                        const value = CamelDefinitionApiExt.getParametersValue(element, property.id);
+                        if (value !== undefined && property.type === 'string' && value?.toString()?.trim().length > 0) {
+                            result = result + property.id + '=' + value + '&';
+                        }
                     }
                 }
             }
+            return result.endsWith('&') ? result.substring(0, result.length - 1) : result;
         }
-        return result.endsWith('&') ? result.substring(0, result.length - 1) : result;
-    };
+    }
 
     static hasDirectUri = (element: CamelElement): boolean => {
         return this.hasUriStartWith(element, 'direct');
@@ -219,6 +232,37 @@ export class TopologyUtils {
         return new TopologyOpenApiNode(OPENAPI_FILE_NAME_JSON, title, operations);
     };
 
+    static findTopologyAsyncApiNodes = (json: string, applicationName?: string): TopologyAsyncApiNode => {
+        const operations: TopologyAsyncApiOperation[] = [];
+        let title = 'AsyncAPI';
+
+        try {
+            const asyncapi = JSON.parse(json);
+            if (asyncapi.info && typeof asyncapi.info.title === "string") {
+                title = asyncapi.info.title;
+            }
+
+            if (asyncapi.operations) {
+                Object.keys(asyncapi.operations).forEach((operationId) => {
+                    const operation = asyncapi.operations[operationId];
+                    const xApplication: string = operation?.[X_APPLICATION_ID]
+                    if (applicationName === undefined || applicationName === xApplication) {
+                        operations.push(
+                            new TopologyAsyncApiOperation(
+                                operationId,
+                                operation.summary,
+                                operation.action,
+                                operation.channel?.$ref
+                            )
+                        );
+                    }
+                });
+            }
+        } catch (err) {
+            console.error(err);
+        }
+        return new TopologyAsyncApiNode(LANDSCAPE_FILE_NAME_JSON, title, operations);
+    };
 
     static findTopologyIncomingNodes = (integration: Integration[]): TopologyIncomingNode[] => {
         const result: TopologyIncomingNode[] = [];
@@ -260,15 +304,25 @@ export class TopologyUtils {
             const title = CamelDisplayUtil.getStepDescription(r.from);
             const type = TopologyUtils.isElementInternalComponent(r.from) ? 'internal' : 'external';
             const connectorType = TopologyUtils.getConnectorType(r.from);
-            let from = CamelUtil.cloneStep(r.from) as FromDefinition;
-            let uniqueUri = TopologyUtils.getUniqueUri(r.from);
+            const from = CamelUtil.cloneStep(r.from) as FromDefinition;
+            const uniqueUri = TopologyUtils.getUniqueUri(r.from);
             return new TopologyIncomingNode(id, type, connectorType, r.routeId, r.route?.group, title, r.fileName, from, uniqueUri);
         }) || [];
         result.push(...routeElements);
         return result;
     };
 
-    static findTopologyRouteNodes = (integration: Integration[]): TopologyRouteNode[] => {
+    static getUriLabel(uniqueUri: string) {
+        const parts = uniqueUri.split(':');
+        if (parts?.at(0) === "sql") {
+            return uniqueUri.replace('sql:', '')?.replace('#bean:', '');
+        }
+        const params = parts[1];
+        const elements = params.split("&");
+        return elements.map(element => element.split("=")[1]).join(':').trim();
+    }
+
+    static findTopologyRouteNodes = (integration: Integration[], isTemplated?: boolean): TopologyRouteNode[] => {
         const result: TopologyRouteNode[] = [];
         integration.forEach(i => {
             try {
@@ -276,15 +330,15 @@ export class TopologyUtils {
                 const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
                 const routeElements = routes?.map(r => {
                     const id = 'route-' + r.id;
-                    const title = r.note?.trim()?.length > 0 ? r.note : (r.description ? r.description : r.id);
-                    return new TopologyRouteNode(id, r.id, title, filename, r.from, r);
+                    const title = (r.description ? r.description : r.id);
+                    return new TopologyRouteNode(id, r.id, title, filename, r.from, r, (r as any).routeTemplateRef, undefined, isTemplated);
                 }) || [];
                 result.push(...routeElements);
                 const templates = i.spec.flows?.filter(flow => flow.dslName === 'RouteTemplateDefinition');
                 const templateElements = templates?.map(t => {
                     const r = t.route;
                     const id = 'route-' + r.id;
-                    const title = r.note?.trim()?.length > 0 ? r.note : (r.description ? r.description : r.id);
+                    const title = (r.description ? r.description : r.id);
                     return new TopologyRouteNode(id, r.id, title, filename, r.from, r, t.id, t.description);
                 }) || [];
                 result.push(...templateElements);
@@ -295,6 +349,43 @@ export class TopologyUtils {
         return result;
     };
 
+    static findTopologyTemplatedRouteNodes = (integrations: Integration[], routeTemplates: TopologyRouteNode[]): TopologyRouteNode[] => {
+        const templatedIntegrations: Integration[] = [];
+        const templates: any = {};
+        routeTemplates.forEach((template: TopologyRouteNode) => {
+            const i = Integration.createNew(template.templateId);
+            i.spec.flows?.push(template.route);
+            if (template.templateId) {
+                templates[template.templateId] = CamelDefinitionYaml.integrationToYaml(i);
+            }
+        })
+        integrations.forEach(integration => {
+            try {
+                const templatedRoutes = integration.spec.flows?.filter(flow => flow.dslName === 'TemplatedRouteDefinition');
+                templatedRoutes?.forEach((templatedRoute: TemplatedRouteDefinition) => {
+                    const yaml = templates[templatedRoute.routeTemplateRef];
+                    if (yaml) {
+                        const data = templatedRoute?.parameters
+                                        ? Object.fromEntries(templatedRoute.parameters.map(p => [p.name, p.value]))
+                                        : {};
+                        const code = TopologyUtils.replacePlaceholders(yaml, data);
+                        const i = CamelDefinitionYaml.yamlToIntegration(integration?.metadata.name, code);
+                        const route = i.spec.flows?.at(0) as RouteDefinition;
+                        if (route && i.spec.flows && i.spec.flows?.length > 0) {
+                            route.id = templatedRoute.routeId;
+                            (route as any).routeTemplateRef = templatedRoute.routeTemplateRef;
+                            i.spec.flows[0] = route;
+                        }
+                        templatedIntegrations.push(i);
+                    }
+                })
+            } catch (e) {
+                console.error(e);
+            }
+        });
+        return TopologyUtils.findTopologyRouteNodes(templatedIntegrations, true);
+    };
+
     static findTopologyRouteConfigurationNodes = (integration: Integration[]): TopologyRouteConfigurationNode[] => {
         const result: TopologyRouteConfigurationNode[] = [];
         integration.forEach(i => {
@@ -359,7 +450,7 @@ export class TopologyUtils {
                     const title = CamelDisplayUtil.getStepDescription(step);
                     const type = TopologyUtils.isElementInternalComponent(step) ? 'internal' : 'external';
                     const connectorType = TopologyUtils.getConnectorType(step);
-                    let uniqueUri = TopologyUtils.getUniqueUri(step);
+                    const uniqueUri = TopologyUtils.getUniqueUri(step);
                     if (
                         connectorType !== 'kamelet' ||
                         CamelUtil.getKamelet(e)?.metadata.labels['camel.apache.org/kamelet.type'] !== 'action'
@@ -442,12 +533,19 @@ export class TopologyUtils {
         const result: TopologyBeanNode[] = [];
         integrations.forEach(integration => {
             const beans = TopologyUtils.getBeans(integration);
-            const topologyBeans = beans.map((bean) => new TopologyBeanNode(bean.name, bean.name, integration.metadata.name));
+            const topologyBeans = beans.map((bean) => new TopologyBeanNode('bean-' + bean.name, bean.name, integration.metadata.name));
             result.push(...topologyBeans);
         })
         return result;
     }
 
+    static findTopologyJavaClassNodes = (fileNames: string[]): TopologyBeanNode[] => {
+        return fileNames?.filter(f => f.endsWith(".java")).map(f => {
+            const name = f?.replace(".java", "");
+            return new TopologyBeanNode('java-'+ name, name, f);
+        });
+    }
+
     static getBeans = (integration: Integration): BeanFactoryDefinition[] => {
         const result: BeanFactoryDefinition[] = [];
         const beans = integration.spec.flows?.filter((e: any) => e.dslName === 'Beans');
@@ -457,6 +555,72 @@ export class TopologyUtils {
         return result;
     }
 
+    static getAllBeans = (integrations: Integration[]): BeanFactoryDefinition[] => {
+        const result: BeanFactoryDefinition[] = [];
+        integrations.forEach(integration => {
+            const beans = TopologyUtils.getBeans(integration);
+            result.push(...beans);
+        })
+        return result;
+    }
+
+    static findTopologyBeanUseRouteIds = (integrations: Integration[], beans: TopologyBeanNode[]): BeanUsageData[] => {
+        const result: BeanUsageData[] = [];
+
+        const routes = TopologyUtils.findTopologyRouteNodes(integrations);
+        routes.forEach(route => {
+            const i = Integration.createNew("dummy");
+            i.spec.flows?.push(route);
+            const yaml = CamelDefinitionYaml.integrationToYaml(i);
+
+            beans.forEach(bean => {
+                const beanUsage: BeanUsageData = result.find(b => b.name === bean.name) || {name: bean.name, usages: []} as BeanUsageData;
+                if (yaml.includes(bean.name)) {
+                    const usages = beanUsage.usages?.map((usage) => usage.routeId);
+                    if (!usages?.includes(route.id)) {
+                        beanUsage.usages.push({routeId: route.routeId} as ExchangeDataUsage);
+                    }
+                }
+                result.push(beanUsage);
+            });
+        });
+        return result;
+    };
+
+    static beanUsedInBean = (bean: BeanFactoryDefinition, beanName: string): boolean => {
+        if (bean.properties) {
+            for (const property of Object.keys(bean.properties)) {
+                const value: string | undefined = bean.properties[property]?.toString();
+                if (value?.startsWith("#bean:") && value?.includes(beanName)) {
+                    return true; // Exits the entire function immediately
+                }
+            }
+        }
+        return false;
+    };
+
+    static findTopologyBean2Bean = (integrations: Integration[], beans: TopologyBeanNode[]): Record<string, string[]> => {
+        const result: Record<string, string[]> = {};
+
+        beans.forEach(bean => {
+            result[bean.id] = [];
+        });
+
+        const allBeans = TopologyUtils.getAllBeans(integrations);
+        beans.forEach(bean => {
+            allBeans.forEach(beanDefinition => {
+                if (beanDefinition?.name !== bean.name) {
+                    const isUsed = TopologyUtils.beanUsedInBean(beanDefinition, bean.name);
+                    if (isUsed) {
+                        result[bean.id].push("bean-" + beanDefinition.name);
+                    }
+                }
+            });
+        });
+        return result;
+    };
+
+
     static findOutgoingInStep = (step: CamelElement, result: CamelElement[]): CamelElement[] => {
         if (step !== undefined) {
             const el = (step as any);
@@ -563,27 +727,32 @@ export class TopologyUtils {
         TopologyUtils.findTopologyRestNodes(integrations).forEach(t => {
             t.rest?.get?.forEach(def => {
                 if (def.to) {
-                    data.set(def.to, [{name: 'get:' + (def.path || ''), fileName: t.fileName}])
+                    data.set(def.to, [{name: 'GET:' + (def.path || ''), fileName: t.fileName}])
                 }
             })
             t.rest?.post?.forEach(def => {
                 if (def.to) {
-                    data.set(def.to, [{name: 'post:' + (def.path || ''), fileName: t.fileName}])
+                    data.set(def.to, [{name: 'POST:' + (def.path || ''), fileName: t.fileName}])
+                }
+            })
+            t.rest?.put?.forEach(def => {
+                if (def.to) {
+                    data.set(def.to, [{name: 'PUT:' + (def.path || ''), fileName: t.fileName}])
                 }
             })
             t.rest?.delete?.forEach(def => {
                 if (def.to) {
-                    data.set(def.to, [{name: 'delete:' + (def.path || ''), fileName: t.fileName}])
+                    data.set(def.to, [{name: 'DELETE:' + (def.path || ''), fileName: t.fileName}])
                 }
             })
             t.rest?.patch?.forEach(def => {
                 if (def.to) {
-                    data.set(def.to, [{name: 'patch:' + (def.path || ''), fileName: t.fileName}])
+                    data.set(def.to, [{name: 'PATCH:' + (def.path || ''), fileName: t.fileName}])
                 }
             })
             t.rest?.head?.forEach(def => {
                 if (def.to) {
-                    data.set(def.to, [{name: 'head:' + (def.path || ''), fileName: t.fileName}])
+                    data.set(def.to, [{name: 'HEAD:' + (def.path || ''), fileName: t.fileName}])
                 }
             })
         });
@@ -603,4 +772,88 @@ export class TopologyUtils {
         }
         return data;
     }
+
+
+    static findStepChildren = (step: CamelElement): CamelElement[] => {
+        const result: CamelElement[] = [];
+        const anyStep = step as any;
+        if (anyStep?.steps?.length > 0) {
+            result.push(...anyStep.steps);
+        }
+        if (anyStep?.doCatch?.length > 0) {
+            result.push(...anyStep.doCatch);
+        }
+        if (anyStep?.when?.length > 0) {
+            result.push(...anyStep.when);
+        }
+        if (anyStep?.doFinally !== undefined) {
+            result.push(anyStep.doFinally);
+        }
+        if (anyStep?.otherwise !== undefined) {
+            result.push(anyStep.otherwise);
+        }
+        return result.map((c: any) => {
+            c.parentId = (step as any).id;
+            return c;
+        });
+    }
+    static findStepsInStep = (step: CamelElement, result: CamelElement[]): CamelElement[] => {
+        if (step !== undefined) {
+            const el = (step as any);
+            try {
+                if (el?.id !== undefined) {
+                    result.push(step);
+                }
+                const children = TopologyUtils.findStepChildren(step);
+                TopologyUtils.findStepsInSteps(children, result);
+            } catch (e) {
+                console.error(e);
+            }
+        }
+        return result;
+    };
+
+    static findStepsInSteps = (steps: CamelElement[], result: CamelElement[]): CamelElement[] => {
+        if (steps !== undefined && steps.length > 0) {
+            steps.forEach(step => TopologyUtils.findStepsInStep(step, result));
+        }
+        return result;
+    };
+
+    static findAllSteps = (integration: Integration): TopologyStep[] => {
+        const result: TopologyStep[] = [];
+        try {
+            const routes = integration.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition') || [];
+            const routeFromTemplates = integration.spec.flows?.filter(flow => flow.dslName === 'RouteTemplateDefinition').map(rt => rt.route) || [];
+            routes.concat(routeFromTemplates).forEach(route => {
+                const from: FromDefinition = route.from;
+                const steps = TopologyUtils.findStepsInStep(from, []);
+                steps.forEach((step: any) => {
+                    const id = step.id;
+                    const title = CamelDisplayUtil.getStepDescription(step);
+                    const hasSteps = (step as any).steps?.length > 0 || (step as any).when?.length > 0 || (step as any).otherwise;
+                    const parentId = (step as any).parentId;
+                    const routeId = (route as any).id;
+                    result.push({id, title, hasSteps, parentId, step, routeId} as TopologyStep);
+                });
+            });
+        } catch (e) {
+            console.error(e);
+        }
+        return result;
+    };
+
+    static replacePlaceholders(template: string, data: Record<string, any>): string {
+        // Regex: matches {{ followed by word characters/dots, then }}
+        // The 'g' flag ensures all occurrences are replaced.
+        const regex = /{{(.*?)}}/g;
+
+        return template.replace(regex, (match, key) => {
+            // Trim to handle potential whitespace like {{ user.name }}
+            const cleanKey = key.trim();
+
+            // Return the value if it exists, otherwise keep the original placeholder
+            return data[cleanKey] !== undefined ? String(data[cleanKey]) : match;
+        });
+    }
 }
diff --git a/karavan-vscode/webview/karavan-core/api/UriUtil.ts b/karavan-vscode/webview/karavan-core/api/UriUtil.ts
new file mode 100644
index 00000000..b3d1b0f2
--- /dev/null
+++ b/karavan-vscode/webview/karavan-core/api/UriUtil.ts
@@ -0,0 +1,117 @@
+interface ParsedComponent {
+    componentName: string;
+    params: Record<string, string>;
+}
+
+/**
+ * Parses the custom component string format into a structured object.
+ */
+function parseComponentString(str: string): ParsedComponent {
+    const colonIndex = str.indexOf(':');
+    let componentName = str;
+    let queryString = '';
+
+    if (colonIndex !== -1) {
+        componentName = str.slice(0, colonIndex);
+        queryString = str.slice(colonIndex + 1);
+    }
+
+    const params: Record<string, string> = {};
+    if (queryString) {
+        // Split by '&' to separate parameters
+        const pairs = queryString.split('&');
+        for (const pair of pairs) {
+            const eqIndex = pair.indexOf('=');
+            if (eqIndex !== -1) {
+                params[pair.slice(0, eqIndex)] = pair.slice(eqIndex + 1);
+            } else {
+                params[pair] = ''; // Handle keys missing an '='
+            }
+        }
+    }
+
+    return { componentName, params };
+}
+
+/**
+ * Recursively checks if a value matches a wildcard pattern.
+ * Supports '*' (exactly one word) and '#' (zero or more words).
+ */
+function matchWildcard(pattern: string, value: string): boolean {
+    if (pattern === value) return true;
+
+    const pTokens = pattern.split('.');
+    const vTokens = value.split('.');
+
+    function matchTokens(pi: number, vi: number): boolean {
+        // If both reached the end, it's a match
+        if (pi === pTokens.length && vi === vTokens.length) return true;
+
+        // If pattern ended but value didn't, no match
+        if (pi === pTokens.length) return false;
+
+        // Handle Hash (#) - Matches 0 or more words
+        if (pTokens[pi] === '#') {
+            // Option 1: # matches 0 words (move pattern forward, keep value index)
+            if (matchTokens(pi + 1, vi)) return true;
+
+            // Option 2: # matches 1 or more words (consume value token, keep pattern at #)
+            if (vi < vTokens.length && matchTokens(pi, vi + 1)) return true;
+
+            return false;
+        }
+
+        // If value ended but pattern still needs exact matches or '*', no match
+        if (vi === vTokens.length) return false;
+
+        // Handle Asterisk (*) - Matches exactly 1 word, or exact token match
+        if (pTokens[pi] === '*' || pTokens[pi] === vTokens[vi]) {
+            return matchTokens(pi + 1, vi + 1);
+        }
+
+        return false;
+    }
+
+    return matchTokens(0, 0);
+}
+
+/**
+ * Compares two component strings to check if they are equal based on the rules.
+ */
+export function compareUri(str1: string, str2: string): boolean {
+    const parsed1 = parseComponentString(str1);
+    const parsed2 = parseComponentString(str2);
+
+    // 1. Ensure the component names match exactly
+    if (parsed1.componentName !== parsed2.componentName) {
+        return false;
+    }
+
+    const keys1 = Object.keys(parsed1.params);
+    const keys2 = Object.keys(parsed2.params);
+
+    // 2. Ensure they have the exact same number of parameters
+    if (keys1.length !== keys2.length) {
+        return false;
+    }
+
+    // 3. Ensure all parameter keys match and their values are equal/match wildcards
+    for (const key of keys1) {
+        // Must contain the exact same keys regardless of sorting order
+        if (!Object.prototype.hasOwnProperty.call(parsed2.params, key)) {
+            return false;
+        }
+
+        const val1 = parsed1.params[key];
+        const val2 = parsed2.params[key];
+
+        // Check if val1 acts as a pattern for val2, OR if val2 acts as a pattern for val1
+        const isMatch = matchWildcard(val1, val2) || matchWildcard(val2, val1);
+
+        if (!isMatch) {
+            return false;
+        }
+    }
+
+    return true;
+}
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan-core/contants.ts b/karavan-vscode/webview/karavan-core/contants.ts
index 2d89d4b6..fc2762d7 100644
--- a/karavan-vscode/webview/karavan-core/contants.ts
+++ b/karavan-vscode/webview/karavan-core/contants.ts
@@ -21,9 +21,20 @@ export const KARAVAN_DOT_EXTENSION = {
 export const FILE_WORDS_SEPARATOR = '-'
 export const OPENAPI_FILE_NAME_JSON = 'openapi.json';
 export const OPENAPI_FILE_NAME_YAML = 'openapi.yaml';
+export const LANDSCAPE_FILE_NAME_JSON = 'landscape-asyncapi.json';
+export const LANDSCAPE_FILE_NAME_YAML = 'landscape-asyncapi.yaml';
 export const JSON_EXTENSION = ".json";
+export const MARKDOWN_EXTENSION = ".md";
+export const PROJECT_MD_FILE_NAME = "PROJECT.md";
+export const README_FILE_NAME = "README.md";
+export const JSON_ARGUMENTS_EXTENSION = ".arguments.json";
 export const JSON_SCHEMA_EXTENSION = ".schema.json";
+export const MCP_SERVER_EXTENSION = ".server.json";
 
 export const WIZARD_BEAN_TEMPLATE_FILENAME_PREFIX = "wizard-bean-";
+export const LANDSCAPE_TEMPLATE_FILENAME_PREFIX = "landscape-";
 export const OPENAPI_ROUTE_TEMPLATE_FILENAME = "openapi-route.camel.yaml";
-export const REST_CONFIGURATION_FILENAME = "rest-configuration.camel.yaml";
\ No newline at end of file
+export const OPENAPI_JSON_TEMPLATE_FILENAME = 'landscape-http-openapi.json';
+export const REST_CONFIGURATION_FILENAME = "rest-configuration.camel.yaml";
+
+export const X_APPLICATION_ID = "x-application-id";
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan-core/model/CamelDefinition.ts b/karavan-vscode/webview/karavan-core/model/CamelDefinition.ts
index 82ac19a3..50efe534 100644
--- a/karavan-vscode/webview/karavan-core/model/CamelDefinition.ts
+++ b/karavan-vscode/webview/karavan-core/model/CamelDefinition.ts
@@ -22,6 +22,7 @@ import {v4 as uuidv4} from 'uuid';
 import {CamelElement} from "./IntegrationDefinition";
 export class ProcessorDefinition extends CamelElement {
     stepName?: string = 'processor';
+    a2aSubTask?: A2ASubTaskDefinition;
     aggregate?: AggregateDefinition;
     bean?: BeanDefinition | string;
     doCatch?: CatchDefinition;
@@ -126,6 +127,7 @@ export class OutputAwareFromDefinition extends CamelElement {
     stepName?: string = 'outputAwareFrom';
     description?: string;
     id?: string = 'outputAwareFrom' + uuidv4().substring(0,4);
+    note?: string;
     parameters?: any = {};
     steps: CamelElement[] = [];
     uri: string = '';
@@ -136,6 +138,23 @@ export class OutputAwareFromDefinition extends CamelElement {
     }
 }
 
+export class A2ASubTaskDefinition extends CamelElement {
+    stepName?: string = 'a2ASubTask';
+    description?: string;
+    disabled?: boolean;
+    emitAfter?: string;
+    emitBefore?: string;
+    emitOnError?: string;
+    failIfNoTaskContext?: boolean;
+    id?: string = 'a2ASubTask' + uuidv4().substring(0,4);
+    note?: string;
+    steps?: CamelElement[] = [];
+    public constructor(init?: Partial<A2ASubTaskDefinition>) {
+        super('A2ASubTaskDefinition');
+        Object.assign(this, init);
+    }
+}
+
 export class AggregateDefinition extends CamelElement {
     stepName?: string = 'aggregate';
     id?: string = 'aggregate' + uuidv4().substring(0,4);
@@ -149,6 +168,7 @@ export class AggregateDefinition extends CamelElement {
     optimisticLockRetryPolicy?: OptimisticLockRetryPolicyDefinition;
     parallelProcessing?: boolean;
     optimisticLocking?: boolean;
+    optimisticLockingSyncRetry?: boolean;
     executorService?: string;
     timeoutCheckerExecutorService?: string;
     aggregateController?: string;
@@ -266,7 +286,7 @@ export class ClaimCheckDefinition extends CamelElement {
     note?: string;
     description?: string;
     disabled?: boolean;
-    operation?: string;
+    operation: string = '';
     key?: string;
     filter?: string;
     aggregationStrategy?: string;
@@ -372,6 +392,7 @@ export class DynamicRouterDefinition extends CamelElement {
     uriDelimiter?: string;
     ignoreInvalidEndpoints?: boolean;
     cacheSize?: number;
+    allowedSchemes?: string;
     public constructor(init?: Partial<DynamicRouterDefinition>) {
         super('DynamicRouterDefinition');
         Object.assign(this, init);
@@ -396,6 +417,7 @@ export class EnrichDefinition extends CamelElement {
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
     autoStartComponents?: boolean;
+    allowedSchemes?: string;
     public constructor(init?: Partial<EnrichDefinition>) {
         super('EnrichDefinition');
         Object.assign(this, init);
@@ -420,12 +442,12 @@ export class ErrorHandlerDefinition extends CamelElement {
 export class ExpressionSubElementDefinition extends CamelElement {
     stepName?: string = 'expressionSubElement';
     constant?: ConstantExpression | string;
-    csimple?: CSimpleExpression | string;
     datasonnet?: DatasonnetExpression | string;
     exchangeProperty?: ExchangePropertyExpression | string;
     groovy?: GroovyExpression | string;
     header?: HeaderExpression | string;
     hl7terser?: Hl7TerserExpression | string;
+    jactl?: JactlExpression | string;
     java?: JavaExpression | string;
     jq?: JqExpression | string;
     js?: JavaScriptExpression | string;
@@ -459,7 +481,6 @@ export class FaultToleranceConfigurationDefinition extends CamelElement {
     failureRatio?: number;
     timeoutEnabled?: boolean;
     timeoutDuration?: string;
-    timeoutPoolSize?: number;
     bulkheadEnabled?: boolean;
     bulkheadMaxConcurrentCalls?: number;
     bulkheadWaitingTaskQueue?: number;
@@ -600,7 +621,7 @@ export class InterceptSendToEndpointDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     uri: string = '';
-    skipSendToOriginalEndpoint?: string;
+    skipSendToOriginalEndpoint?: boolean;
     afterUri?: string;
     onWhen?: OnWhenDefinition;
     steps?: CamelElement[] = [];
@@ -612,6 +633,8 @@ export class InterceptSendToEndpointDefinition extends CamelElement {
 
 export class KameletDefinition extends CamelElement {
     stepName?: string = 'kamelet';
+    note?: string;
+    description?: string;
     name: string = '';
     parameters?: any = {};
     public constructor(init?: Partial<KameletDefinition>) {
@@ -700,6 +723,7 @@ export class MarshalDefinition extends CamelElement {
     flatpack?: FlatpackDataFormat;
     fory?: ForyDataFormat;
     grok?: GrokDataFormat;
+    groovyJson?: GroovyJSonDataFormat;
     groovyXml?: GroovyXmlDataFormat;
     gzipDeflater?: GzipDeflaterDataFormat;
     hl7?: HL7DataFormat;
@@ -968,6 +992,7 @@ export class PollEnrichDefinition extends CamelElement {
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
     autoStartComponents?: boolean;
+    allowedSchemes?: string;
     public constructor(init?: Partial<PollEnrichDefinition>) {
         super('PollEnrichDefinition');
         Object.assign(this, init);
@@ -1029,6 +1054,7 @@ export class RecipientListDefinition extends CamelElement {
     onPrepare?: string;
     cacheSize?: number;
     shareUnitOfWork?: boolean;
+    allowedSchemes?: string;
     public constructor(init?: Partial<RecipientListDefinition>) {
         super('RecipientListDefinition');
         Object.assign(this, init);
@@ -1161,18 +1187,22 @@ export class Resilience4jConfigurationDefinition extends CamelElement {
     throwExceptionWhenHalfOpenOrOpenState?: boolean;
     slidingWindowSize?: number;
     slidingWindowType?: string;
+    slidingWindowSynchronizationStrategy?: string;
     minimumNumberOfCalls?: number;
     writableStackTraceEnabled?: boolean;
-    waitDurationInOpenState?: number;
+    waitDurationInOpenState?: string;
     automaticTransitionFromOpenToHalfOpenEnabled?: boolean;
+    maxWaitDurationInHalfOpenState?: string;
     slowCallRateThreshold?: number;
-    slowCallDurationThreshold?: number;
+    slowCallDurationThreshold?: string;
     bulkheadEnabled?: boolean;
     bulkheadMaxConcurrentCalls?: number;
-    bulkheadMaxWaitDuration?: number;
+    bulkheadMaxWaitDuration?: string;
+    bulkheadFairCallHandlingEnabled?: boolean;
+    asynchronous?: boolean;
     timeoutEnabled?: boolean;
     timeoutExecutorService?: string;
-    timeoutDuration?: number;
+    timeoutDuration?: string;
     timeoutCancelRunningFuture?: boolean;
     micrometerEnabled?: boolean;
     recordException?: string[] = [];
@@ -1244,6 +1274,7 @@ export class RouteConfigurationContextRefDefinition extends CamelElement {
 export class RouteConfigurationDefinition extends CamelElement {
     stepName?: string = 'routeConfiguration';
     id?: string;
+    note?: string;
     description?: string;
     errorHandler?: ErrorHandlerDefinition;
     intercept?: InterceptDefinition[] = [];
@@ -1333,6 +1364,7 @@ export class RoutingSlipDefinition extends CamelElement {
     uriDelimiter?: string;
     ignoreInvalidEndpoints?: boolean;
     cacheSize?: number;
+    allowedSchemes?: string;
     public constructor(init?: Partial<RoutingSlipDefinition>) {
         super('RoutingSlipDefinition');
         Object.assign(this, init);
@@ -1405,7 +1437,7 @@ export class SetExchangePatternDefinition extends CamelElement {
     note?: string;
     description?: string;
     disabled?: boolean;
-    pattern?: string;
+    pattern: string = '';
     public constructor(init?: Partial<SetExchangePatternDefinition>) {
         super('SetExchangePatternDefinition');
         Object.assign(this, init);
@@ -1514,6 +1546,12 @@ export class SplitDefinition extends CamelElement {
     executorService?: string;
     onPrepare?: string;
     shareUnitOfWork?: boolean;
+    group?: number;
+    errorThreshold?: number;
+    maxFailedRecords?: number;
+    resumeStrategy?: string;
+    watermarkKey?: string;
+    watermarkExpression?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<SplitDefinition>) {
         super('SplitDefinition');
@@ -1551,6 +1589,7 @@ export class TemplatedRouteDefinition extends CamelElement {
     routeTemplateRef: string = '';
     routeId?: string;
     prefixId?: string;
+    group?: string;
     beans?: BeanFactoryDefinition[] = [];
     parameters?: TemplatedRouteParameterDefinition[] = [];
     public constructor(init?: Partial<TemplatedRouteDefinition>) {
@@ -1676,6 +1715,7 @@ export class ToDynamicDefinition extends CamelElement {
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
     autoStartComponents?: boolean;
+    allowedSchemes?: string;
     parameters?: any = {};
     public constructor(init?: Partial<ToDynamicDefinition>) {
         super('ToDynamicDefinition');
@@ -1790,6 +1830,7 @@ export class UnmarshalDefinition extends CamelElement {
     flatpack?: FlatpackDataFormat;
     fory?: ForyDataFormat;
     grok?: GrokDataFormat;
+    groovyJson?: GroovyJSonDataFormat;
     groovyXml?: GroovyXmlDataFormat;
     gzipDeflater?: GzipDeflaterDataFormat;
     hl7?: HL7DataFormat;
@@ -1877,11 +1918,11 @@ export class WireTapDefinition extends CamelElement {
     uri: string = '';
     variableSend?: string;
     variableReceive?: string;
-    pattern?: string;
     cacheSize?: number;
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
     autoStartComponents?: boolean;
+    allowedSchemes?: string;
     parameters?: any = {};
     public constructor(init?: Partial<WireTapDefinition>) {
         super('WireTapDefinition');
@@ -1937,6 +1978,40 @@ export class ComponentScanDefinition extends CamelElement {
     }
 }
 
+export class SSLContextParametersDefinition extends CamelElement {
+    stepName?: string = 'sSLContextParameters';
+    certAlias?: string;
+    cipherSuites?: string;
+    cipherSuitesExclude?: string;
+    cipherSuitesInclude?: string;
+    clientAuthentication?: string;
+    id?: string = 'sSLContextParameters' + uuidv4().substring(0,4);
+    keyManagerAlgorithm?: string;
+    keyManagerProvider?: string;
+    keyStore?: string;
+    keyStoreProvider?: string;
+    keyStoreType?: string;
+    keystorePassword?: string;
+    namedGroups?: string;
+    namedGroupsExclude?: string;
+    namedGroupsInclude?: string;
+    provider?: string;
+    secureRandomAlgorithm?: string;
+    secureRandomProvider?: string;
+    secureSocketProtocol?: string;
+    sessionTimeout?: string;
+    signatureSchemes?: string;
+    signatureSchemesExclude?: string;
+    signatureSchemesInclude?: string;
+    trustAllCertificates?: string;
+    trustStore?: string;
+    trustStorePassword?: string;
+    public constructor(init?: Partial<SSLContextParametersDefinition>) {
+        super('SSLContextParametersDefinition');
+        Object.assign(this, init);
+    }
+}
+
 export class BatchResequencerConfig extends CamelElement {
     batchSize?: number;
     batchTimeout?: string;
@@ -2047,7 +2122,7 @@ export class BeanioDataFormat extends CamelElement {
 export class BindyDataFormat extends CamelElement {
     dataFormatName?: string = 'bindy';
     id?: string = 'bindy' + uuidv4().substring(0,4);
-    type?: string;
+    type: string = '';
     classType?: string;
     defaultValueStringAsNull?: boolean;
     allowEmptyStream?: boolean;
@@ -2114,7 +2189,7 @@ export class CsvDataFormat extends CamelElement {
     nullString?: string;
     quoteDisabled?: boolean;
     quote?: string;
-    recordSeparatorDisabled?: string;
+    recordSeparatorDisabled?: boolean;
     recordSeparator?: string;
     skipHeaderRecord?: boolean;
     quoteMode?: string;
@@ -2161,6 +2236,7 @@ export class DataFormatsDefinition extends CamelElement {
     flatpack?: FlatpackDataFormat;
     fory?: ForyDataFormat;
     grok?: GrokDataFormat;
+    groovyJson?: GroovyJSonDataFormat;
     groovyXml?: GroovyXmlDataFormat;
     gzipDeflater?: GzipDeflaterDataFormat;
     hl7?: HL7DataFormat;
@@ -2172,8 +2248,10 @@ export class DataFormatsDefinition extends CamelElement {
     jsonApi?: JsonApiDataFormat;
     lzf?: LZFDataFormat;
     mimeMultipart?: MimeMultipartDataFormat;
+    ocsf?: OcsfDataFormat;
     parquetAvro?: ParquetAvroDataFormat | string;
     pgp?: PGPDataFormat;
+    pqc?: PQCDataFormat;
     protobuf?: ProtobufDataFormat | string;
     rss?: RssDataFormat;
     smooks?: SmooksDataFormat;
@@ -2305,6 +2383,16 @@ export class GrokDataFormat extends CamelElement {
     }
 }
 
+export class GroovyJSonDataFormat extends CamelElement {
+    dataFormatName?: string = 'groovyJson';
+    id?: string = 'groovyJson' + uuidv4().substring(0,4);
+    prettyPrint?: boolean;
+    public constructor(init?: Partial<GroovyJSonDataFormat>) {
+        super('GroovyJSonDataFormat');
+        Object.assign(this, init);
+    }
+}
+
 export class GroovyXmlDataFormat extends CamelElement {
     dataFormatName?: string = 'groovyXml';
     id?: string = 'groovyXml' + uuidv4().substring(0,4);
@@ -2329,6 +2417,7 @@ export class HL7DataFormat extends CamelElement {
     id?: string = 'hl7' + uuidv4().substring(0,4);
     parser?: string;
     validate?: boolean;
+    targetFormat?: string;
     public constructor(init?: Partial<HL7DataFormat>) {
         super('HL7DataFormat');
         Object.assign(this, init);
@@ -2481,15 +2570,15 @@ export class MimeMultipartDataFormat extends CamelElement {
 }
 
 export class OcsfDataFormat extends CamelElement {
-    dataFormatName?: string = 'null';
-    allowUnmarshallType?: boolean;
-    collectionType?: string;
-    id?: string;
+    dataFormatName?: string = 'ocsf';
+    id?: string = 'ocsf' + uuidv4().substring(0,4);
     objectMapper?: string;
-    prettyPrint?: boolean;
-    unmarshalType?: string;
     useDefaultObjectMapper?: boolean;
+    unmarshalType?: string;
+    collectionType?: string;
     useList?: boolean;
+    allowUnmarshallType?: boolean;
+    prettyPrint?: boolean;
     public constructor(init?: Partial<OcsfDataFormat>) {
         super('OcsfDataFormat');
         Object.assign(this, init);
@@ -2520,15 +2609,14 @@ export class PGPDataFormat extends CamelElement {
 }
 
 export class PQCDataFormat extends CamelElement {
-    dataFormatName?: string = 'null';
-    bufferSize?: number;
-    id?: string;
+    dataFormatName?: string = 'pqc';
+    id?: string = 'pqc' + uuidv4().substring(0,4);
     keyEncapsulationAlgorithm?: string;
-    keyGenerator?: string;
-    keyPair?: string;
-    provider?: string;
     symmetricKeyAlgorithm?: string;
     symmetricKeyLength?: number;
+    keyPair?: string;
+    provider?: string;
+    keyGenerator?: string;
     public constructor(init?: Partial<PQCDataFormat>) {
         super('PQCDataFormat');
         Object.assign(this, init);
@@ -2930,20 +3018,6 @@ export class SpringTransactionErrorHandlerDefinition extends CamelElement {
     }
 }
 
-export class CSimpleExpression extends CamelElement {
-    expressionName?: string = 'csimple';
-    id?: string = 'csimple' + uuidv4().substring(0,4);
-    expression: string = '';
-    trimResult?: boolean;
-    pretty?: boolean;
-    resultType?: string;
-    trim?: boolean;
-    public constructor(init?: Partial<CSimpleExpression>) {
-        super('CSimpleExpression');
-        Object.assign(this, init);
-    }
-}
-
 export class ConstantExpression extends CamelElement {
     expressionName?: string = 'constant';
     id?: string = 'constant' + uuidv4().substring(0,4);
@@ -2985,12 +3059,12 @@ export class ExchangePropertyExpression extends CamelElement {
 export class ExpressionDefinition extends CamelElement {
     stepName?: string = 'expression';
     constant?: ConstantExpression | string;
-    csimple?: CSimpleExpression | string;
     datasonnet?: DatasonnetExpression | string;
     exchangeProperty?: ExchangePropertyExpression | string;
     groovy?: GroovyExpression | string;
     header?: HeaderExpression | string;
     hl7terser?: Hl7TerserExpression | string;
+    jactl?: JactlExpression | string;
     java?: JavaExpression | string;
     jq?: JqExpression | string;
     js?: JavaScriptExpression | string;
@@ -3050,6 +3124,18 @@ export class Hl7TerserExpression extends CamelElement {
     }
 }
 
+export class JactlExpression extends CamelElement {
+    expressionName?: string = 'jactl';
+    id?: string = 'jactl' + uuidv4().substring(0,4);
+    expression: string = '';
+    resultType?: string;
+    trim?: boolean;
+    public constructor(init?: Partial<JactlExpression>) {
+        super('JactlExpression');
+        Object.assign(this, init);
+    }
+}
+
 export class JavaExpression extends CamelElement {
     expressionName?: string = 'java';
     id?: string = 'java' + uuidv4().substring(0,4);
@@ -3311,8 +3397,8 @@ export class FailoverLoadBalancerDefinition extends CamelElement {
     stepName?: string = 'failoverLoadBalancer';
     id?: string = 'failoverLoadBalancer' + uuidv4().substring(0,4);
     exception?: string[] = [];
-    roundRobin?: string;
-    sticky?: string;
+    roundRobin?: boolean;
+    sticky?: boolean;
     maximumFailoverAttempts?: string;
     public constructor(init?: Partial<FailoverLoadBalancerDefinition>) {
         super('FailoverLoadBalancerDefinition');
@@ -3411,7 +3497,7 @@ export class DeleteDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     path?: string;
-    to?: string;
+    to: string = '';
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3442,7 +3528,7 @@ export class GetDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     path?: string;
-    to?: string;
+    to: string = '';
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3473,7 +3559,7 @@ export class HeadDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     path?: string;
-    to?: string;
+    to: string = '';
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3554,7 +3640,7 @@ export class ParamDefinition extends CamelElement {
     stepName?: string = 'param';
     description?: string;
     name: string = '';
-    type?: string;
+    type: string = '';
     defaultValue?: string;
     required?: boolean;
     collectionFormat?: string;
@@ -3576,7 +3662,7 @@ export class PatchDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     path?: string;
-    to?: string;
+    to: string = '';
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3607,7 +3693,7 @@ export class PostDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     path?: string;
-    to?: string;
+    to: string = '';
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3638,7 +3724,7 @@ export class PutDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     path?: string;
-    to?: string;
+    to: string = '';
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3834,7 +3920,7 @@ export class SecurityDefinition extends CamelElement {
 export class LangChain4jCharacterTokenizerDefinition extends CamelElement {
     stepName?: string = 'langChain4jCharacterTokenizer';
     id?: string = 'langChain4jCharacterTokenizer' + uuidv4().substring(0,4);
-    tokenizerType?: string;
+    tokenizerType: string = '';
     maxTokens: number = 0;
     maxOverlap: number = 0;
     modelName?: string;
@@ -3847,7 +3933,7 @@ export class LangChain4jCharacterTokenizerDefinition extends CamelElement {
 export class LangChain4jLineTokenizerDefinition extends CamelElement {
     stepName?: string = 'langChain4jLineTokenizer';
     id?: string = 'langChain4jLineTokenizer' + uuidv4().substring(0,4);
-    tokenizerType?: string;
+    tokenizerType: string = '';
     maxTokens: number = 0;
     maxOverlap: number = 0;
     modelName?: string;
@@ -3860,7 +3946,7 @@ export class LangChain4jLineTokenizerDefinition extends CamelElement {
 export class LangChain4jParagraphTokenizerDefinition extends CamelElement {
     stepName?: string = 'langChain4jParagraphTokenizer';
     id?: string = 'langChain4jParagraphTokenizer' + uuidv4().substring(0,4);
-    tokenizerType?: string;
+    tokenizerType: string = '';
     maxTokens: number = 0;
     maxOverlap: number = 0;
     modelName?: string;
@@ -3873,7 +3959,7 @@ export class LangChain4jParagraphTokenizerDefinition extends CamelElement {
 export class LangChain4jSentenceTokenizerDefinition extends CamelElement {
     stepName?: string = 'langChain4jSentenceTokenizer';
     id?: string = 'langChain4jSentenceTokenizer' + uuidv4().substring(0,4);
-    tokenizerType?: string;
+    tokenizerType: string = '';
     maxTokens: number = 0;
     maxOverlap: number = 0;
     modelName?: string;
@@ -3889,7 +3975,7 @@ export class LangChain4jTokenizerDefinition extends CamelElement {
     maxOverlap: number = 0;
     maxTokens: number = 0;
     modelName?: string;
-    tokenizerType?: string;
+    tokenizerType: string = '';
     public constructor(init?: Partial<LangChain4jTokenizerDefinition>) {
         super('LangChain4jTokenizerDefinition');
         Object.assign(this, init);
@@ -3899,7 +3985,7 @@ export class LangChain4jTokenizerDefinition extends CamelElement {
 export class LangChain4jWordTokenizerDefinition extends CamelElement {
     stepName?: string = 'langChain4jWordTokenizer';
     id?: string = 'langChain4jWordTokenizer' + uuidv4().substring(0,4);
-    tokenizerType?: string;
+    tokenizerType: string = '';
     maxTokens: number = 0;
     maxOverlap: number = 0;
     modelName?: string;
@@ -3945,6 +4031,7 @@ export class DataFormatTransformerDefinition extends CamelElement {
     flatpack?: FlatpackDataFormat;
     fory?: ForyDataFormat;
     grok?: GrokDataFormat;
+    groovyJson?: GroovyJSonDataFormat;
     groovyXml?: GroovyXmlDataFormat;
     gzipDeflater?: GzipDeflaterDataFormat;
     hl7?: HL7DataFormat;
@@ -3956,8 +4043,10 @@ export class DataFormatTransformerDefinition extends CamelElement {
     jsonApi?: JsonApiDataFormat;
     lzf?: LZFDataFormat;
     mimeMultipart?: MimeMultipartDataFormat;
+    ocsf?: OcsfDataFormat;
     parquetAvro?: ParquetAvroDataFormat | string;
     pgp?: PGPDataFormat;
+    pqc?: PQCDataFormat;
     protobuf?: ProtobufDataFormat | string;
     rss?: RssDataFormat;
     smooks?: SmooksDataFormat;
diff --git a/karavan-vscode/webview/karavan-core/model/CamelMetadata.ts b/karavan-vscode/webview/karavan-core/model/CamelMetadata.ts
index cb68f110..3cd23930 100644
--- a/karavan-vscode/webview/karavan-core/model/CamelMetadata.ts
+++ b/karavan-vscode/webview/karavan-core/model/CamelMetadata.ts
@@ -126,102 +126,103 @@ export class CamelMetadataApi {
 }
 
 export const DataFormats: [string, string, string][] = [
-    ['asn1','ASN.1 File',"Encode and decode data structures using Abstract Syntax Notation One (ASN.1)."],
-    ['avro','Avro',"Serialize and deserialize messages using Apache Avro binary data format."],
-    ['barcode','Barcode',"Transform strings to various 1D/2D barcode bitmap formats and back."],
-    ['base64','Base64',"Encode and decode data using Base64."],
-    ['beanio','BeanIO',"Marshal and unmarshal Java beans to and from flat files (such as CSV, delimited, or fixed length formats)."],
-    ['bindy','Bindy',"Marshal and unmarshal Java beans from and to flat payloads (such as CSV, delimited, fixed length formats, or FIX messages)."],
-    ['cbor','CBOR',"Unmarshal a CBOR payload to POJO and back."],
-    ['crypto','Crypto (Java Cryptographic Extension)',"Encrypt and decrypt messages using Java Cryptography Extension (JCE)."],
-    ['csv','CSV',"Handle CSV (Comma Separated Values) payloads."],
-    ['custom','Custom',"Delegate to a custom org.apache.camel.spi.DataFormat implementation via Camel registry."],
-    ['dfdl','DFDL',"Transforms fixed format data such as EDI message from/to XML using a Data Format Description Language (DFDL)."],
-    ['fhirJson','FHIR JSon',"Marshall and unmarshall FHIR objects to/from JSON."],
-    ['fhirXml','FHIR XML',"Marshall and unmarshall FHIR objects to/from XML."],
-    ['flatpack','Flatpack',"Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library."],
+    ['asn1','ASN.1 File',"Encode and decode data structures using Abstract Syntax Notation One (ASN.1)"],
+    ['avro','Avro',"Serialize and deserialize messages using Apache Avro binary data format"],
+    ['barcode','Barcode',"Transform strings to various 1D/2D barcode bitmap formats and back"],
+    ['base64','Base64',"Encode and decode data using Base64"],
+    ['beanio','BeanIO',"Marshal and unmarshal Java beans to and from flat files (such as CSV, delimited, or fixed length formats)"],
+    ['bindy','Bindy',"Marshal and unmarshal Java beans from and to flat payloads (such as CSV, delimited, fixed length formats, or FIX messages)"],
+    ['cbor','CBOR',"Unmarshal a CBOR payload to POJO and back"],
+    ['crypto','Crypto (Java Cryptographic Extension)',"Encrypt and decrypt messages using Java Cryptography Extension (JCE)"],
+    ['csv','CSV',"Handle CSV (Comma Separated Values) payloads"],
+    ['custom','Custom',"Delegates to a custom DataFormat implementation looked up from the Camel registry by name"],
+    ['dfdl','DFDL',"Transforms fixed format data such as EDI message from/to XML using a Data Format Description Language (DFDL)"],
+    ['fhirJson','FHIR JSon',"Marshall and unmarshall FHIR objects to/from JSON"],
+    ['fhirXml','FHIR XML',"Marshall and unmarshall FHIR objects to/from XML"],
+    ['flatpack','Flatpack',"Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library"],
     ['fory','Fory',"Serialize and deserialize messages using Apache Fory"],
-    ['grok','Grok',"Unmarshal unstructured data to objects using Logstash based Grok patterns."],
-    ['groovyXml','Groovy XML',"Transform between XML and Groovy Node (Map structure) objects."],
-    ['gzipDeflater','GZip Deflater',"Compress and decompress messages using java.util.zip.GZIPStream."],
-    ['hl7','HL7',"Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec."],
-    ['ical','iCal',"Marshal and unmarshal iCal (.ics) documents to/from model objects."],
-    ['iso8583','ISO-8583',"Create, edit and read ISO-8583 messages."],
-    ['jacksonXml','Jackson XML',"Unmarshal an XML payloads to POJOs and back using XMLMapper extension of Jackson."],
-    ['jaxb','JAXB',"Unmarshal XML payloads to POJOs and back using JAXB2 XML marshalling standard."],
-    ['json','JSon',"Marshal POJOs to JSON and back."],
-    ['jsonApi','JSonApi',"Marshal and unmarshal JSON:API resources using JSONAPI-Converter library."],
-    ['lzf','LZF Deflate Compression',"Compress and decompress streams using LZF deflate algorithm."],
-    ['mimeMultipart','MIME Multipart',"Marshal Camel messages with attachments into MIME-Multipart messages and back."],
-    ['ocsf','OCSF',"Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to/from JSON."],
-    ['parquetAvro','Parquet File',"Parquet Avro serialization and de-serialization."],
-    ['pgp','PGP',"Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP."],
-    ['pqc','PQC (Post-Quantum Cryptography)',"Encrypt and decrypt messages using Post-Quantum Cryptography Key Encapsulation Mechanisms (KEM)."],
-    ['protobuf','Protobuf',"Serialize and deserialize Java objects using Google's Protocol buffers."],
-    ['rss','RSS',"Transform from ROME SyndFeed Java Objects to XML and vice-versa."],
-    ['smooks','Smooks',"Transform and bind XML as well as non-XML data, including EDI, CSV, JSON, and YAML using Smooks."],
-    ['soap','SOAP',"Marshal Java objects to SOAP messages and back."],
-    ['swiftMt','SWIFT MT',"Encode and decode SWIFT MT messages."],
-    ['swiftMx','SWIFT MX',"Encode and decode SWIFT MX messages."],
-    ['syslog','Syslog',"Marshall SyslogMessages to RFC3164 and RFC5424 messages and back."],
-    ['tarFile','Tar File',"Archive files into tarballs or extract files from tarballs."],
-    ['thrift','Thrift',"Serialize and deserialize messages using Apache Thrift binary data format."],
-    ['univocityCsv','uniVocity CSV',"Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers."],
-    ['univocityFixed','uniVocity Fixed Length',"Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers."],
-    ['univocityTsv','uniVocity TSV',"Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers."],
-    ['xmlSecurity','XML Security',"Encrypt and decrypt XML payloads using Apache Santuario."],
-    ['yaml','YAML',"Marshal and unmarshal Java objects to and from YAML."],
-    ['zipDeflater','Zip Deflater',"Compress and decompress streams using java.util.zip.Deflater and java.util.zip.Inflater."],
-    ['zipFile','Zip File',"Compression and decompress streams using java.util.zip.ZipStream."],
+    ['grok','Grok',"Unmarshal unstructured data to objects using Logstash based Grok patterns"],
+    ['groovyJson','Groovy JSon',"Transform between JSon and java.util.Map or java.util.List objects"],
+    ['groovyXml','Groovy XML',"Transform between XML and Groovy Node (Map structure) objects"],
+    ['gzipDeflater','GZip Deflater',"Compress and decompress messages using java.util.zip.GZIP*Stream"],
+    ['hl7','HL7',"Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec"],
+    ['ical','iCal',"Marshal and unmarshal iCal (*.ics) documents to/from model objects"],
+    ['iso8583','ISO-8583',"Create, edit and read ISO-8583 messages"],
+    ['jacksonXml','Jackson XML',"Unmarshal an XML payloads to POJOs and back using XMLMapper extension of Jackson"],
+    ['jaxb','JAXB',"Unmarshal XML payloads to POJOs and back using JAXB2 XML marshalling standard"],
+    ['json','JSon',"Marshal POJOs to JSON and back"],
+    ['jsonApi','JSonApi',"Marshal and unmarshal JSON:API resources using JSONAPI-Converter library"],
+    ['lzf','LZF Deflate Compression',"Compress and decompress streams using LZF deflate algorithm"],
+    ['mimeMultipart','MIME Multipart',"Marshal Camel messages with attachments into MIME-Multipart messages and back"],
+    ['ocsf','OCSF',"Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to/from JSON"],
+    ['parquetAvro','Parquet File',"Parquet Avro serialization and de-serialization"],
+    ['pgp','PGP (Pretty Good Privacy Cryptographic)',"Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP"],
+    ['pqc','PQC (Post-Quantum Cryptography)',"Encrypt and decrypt messages using Post-Quantum Cryptography Key Encapsulation Mechanisms (KEM)"],
+    ['protobuf','Protobuf',"Serialize and deserialize Java objects using Google's Protocol buffers"],
+    ['rss','RSS',"Transform from ROME SyndFeed Java Objects to XML and vice-versa"],
+    ['smooks','Smooks',"Transform and bind XML as well as non-XML data, including EDI, CSV, JSON, and YAML using Smooks"],
+    ['soap','SOAP',"Marshal Java objects to SOAP messages and back"],
+    ['swiftMt','SWIFT MT',"Encode and decode SWIFT MT messages"],
+    ['swiftMx','SWIFT MX',"Encode and decode SWIFT MX messages"],
+    ['syslog','Syslog',"Marshall SyslogMessages to RFC3164 and RFC5424 messages and back"],
+    ['tarFile','Tar File',"Archive files into tarballs or extract files from tarballs"],
+    ['thrift','Thrift',"Serialize and deserialize messages using Apache Thrift binary data format"],
+    ['univocityCsv','uniVocity CSV',"Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers"],
+    ['univocityFixed','uniVocity Fixed Length',"Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers"],
+    ['univocityTsv','uniVocity TSV',"Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers"],
+    ['xmlSecurity','XML Security',"Encrypt and decrypt XML payloads using Apache Santuario"],
+    ['yaml','YAML',"Marshal and unmarshal Java objects to and from YAML"],
+    ['zipDeflater','Zip Deflater',"Compress and decompress streams using java.util.zip.Deflater and java.util.zip.Inflater"],
+    ['zipFile','Zip File',"Compression and decompress streams using java.util.zip.Zip*Stream"],
 ]
 
 export const CamelDataFormatMetadata: ElementMeta[] = [
-    new ElementMeta('asn1', 'ASN1DataFormat', 'ASN.1 File', "Encode and decode data structures using Abstract Syntax Notation One (ASN.1).", 'dataformat,transformation,file', [
+    new ElementMeta('asn1', 'ASN1DataFormat', 'ASN.1 File', "Encode and decode data structures using Abstract Syntax Notation One (ASN.1)", 'dataformat,transformation,file', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('usingIterator', 'Using Iterator', "If the asn1 file has more than one entry, the setting this option to true, allows working with the splitter EIP, to split the data using an iterator in a streaming mode.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('usingIterator', 'Using Iterator', "If the asn1 file has more than one entry, the setting this option to true allows working with the splitter EIP to split each entry individually.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('avro', 'AvroDataFormat', 'Avro', "Serialize and deserialize messages using Apache Avro binary data format.", 'dataformat,transformation', [
+    new ElementMeta('avro', 'AvroDataFormat', 'Avro', "Serialize and deserialize messages using Apache Avro binary data format", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('instanceClassName', 'Instance Class Name', "Class name to use for marshal and unmarshalling", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('instanceClassName', 'Instance Class Name', "Class name to use for marshal and unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('library', 'Library', "Which Avro library to use.", 'string', 'ApacheAvro, Jackson', 'avroJackson', false, false, false, false, '', ''),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('include', 'Include', "If you want to marshal a pojo to JSON, and the pojo has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('include', 'Include', "If you want to marshal a pojo to JSON, and the pojo has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('allowJmsType', 'Allow Jms Type', "Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to use different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useList', 'Use List', "To unmarshal to a List of Map or a List of Pojo.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('moduleClassNames', 'Module Class Names', "To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class names. Multiple classes can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('moduleRefs', 'Module Refs', "To use custom Jackson modules referred from the Camel registry. Multiple modules can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling. This should only be enabled when desired to be used.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('timezone', 'Timezone', "If set then Jackson will use the Timezone when marshalling/unmarshalling.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will lookup for an objectMapper into the registry", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will lookup for an objectMapper into the registry.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('schemaResolver', 'Schema Resolver', "Optional schema resolver used to lookup schemas for the data in transit.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('barcode', 'BarcodeDataFormat', 'Barcode', "Transform strings to various 1D/2D barcode bitmap formats and back.", 'dataformat,transformation', [
+    new ElementMeta('barcode', 'BarcodeDataFormat', 'Barcode', "Transform strings to various 1D/2D barcode bitmap formats and back", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('barcodeFormat', 'Barcode Format', "Barcode format such as QR-Code", 'string', 'AZTEC, CODABAR, CODE_39, CODE_93, CODE_128, DATA_MATRIX, EAN_8, EAN_13, ITF, MAXICODE, PDF_417, QR_CODE, RSS_14, RSS_EXPANDED, UPC_A, UPC_E, UPC_EAN_EXTENSION', 'QR_CODE', false, false, false, false, '', ''),
-        new PropertyMeta('imageType', 'Image Type', "Image type of the barcode such as png", 'string', 'JPG, GIF, PNG', 'PNG', false, false, false, false, '', ''),
-        new PropertyMeta('width', 'Width', "Width of the barcode", 'number', '', '100', false, false, false, false, '', ''),
-        new PropertyMeta('height', 'Height', "Height of the barcode", 'number', '', '100', false, false, false, false, '', ''),
+        new PropertyMeta('barcodeFormat', 'Barcode Format', "Barcode format such as QR-Code.", 'string', 'AZTEC, CODABAR, CODE_39, CODE_93, CODE_128, DATA_MATRIX, EAN_8, EAN_13, ITF, MAXICODE, PDF_417, QR_CODE, RSS_14, RSS_EXPANDED, UPC_A, UPC_E, UPC_EAN_EXTENSION', 'QR_CODE', false, false, false, false, '', ''),
+        new PropertyMeta('imageType', 'Image Type', "Image type of the barcode such as png.", 'string', 'JPG, GIF, PNG', 'PNG', false, false, false, false, '', ''),
+        new PropertyMeta('width', 'Width', "Width of the barcode.", 'number', '', '100', false, false, false, false, '', ''),
+        new PropertyMeta('height', 'Height', "Height of the barcode.", 'number', '', '100', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('base64', 'Base64DataFormat', 'Base64', "Encode and decode data using Base64.", 'dataformat,transformation', [
+    new ElementMeta('base64', 'Base64DataFormat', 'Base64', "Encode and decode data using Base64", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('lineLength', 'Line Length', "To specific a maximum line length for the encoded data. By default 76 is used.", 'number', '', '76', false, false, false, false, '', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separators to use. Uses new line characters (CRLF) by default.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('urlSafe', 'Url Safe', "Instead of emitting '' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode operations. Decoding seamlessly handles both modes. Is by default false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separators to use. By default \r\n is used.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('urlSafe', 'Url Safe', "Instead of emitting and / we emit - and _ respectively. urlSafe is only applied to encode operations. Decoding seamlessly handles both modes.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('beanio', 'BeanioDataFormat', 'BeanIO', "Marshal and unmarshal Java beans to and from flat files (such as CSV, delimited, or fixed length formats).", 'dataformat,transformation,csv', [
+    new ElementMeta('beanio', 'BeanioDataFormat', 'BeanIO', "Marshal and unmarshal Java beans to and from flat files (such as CSV, delimited, or fixed length formats)", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('mapping', 'Mapping', "The BeanIO mapping file. Is by default loaded from the classpath. You can prefix with file:, http:, or classpath: to denote from where to load the mapping file.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('streamName', 'Stream Name', "The name of the stream to use.", 'string', '', '', true, false, false, false, '', ''),
@@ -229,85 +230,85 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('ignoreUnexpectedRecords', 'Ignore Unexpected Records', "Whether to ignore unexpected records.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('ignoreInvalidRecords', 'Ignore Invalid Records', "Whether to ignore invalid records.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('encoding', 'Encoding', "The charset to use. Is by default the JVM platform default charset.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('beanReaderErrorHandlerType', 'Bean Reader Error Handler Type', "To use a custom org.apache.camel.dataformat.beanio.BeanIOErrorHandler as error handler while parsing. Configure the fully qualified class name of the error handler. Notice the options ignoreUnidentifiedRecords, ignoreUnexpectedRecords, and ignoreInvalidRecords may not be in use when you use a custom error handler.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('unmarshalSingleObject', 'Unmarshal Single Object', "This options controls whether to unmarshal as a list of objects or as a single object only. The former is the default mode, and the latter is only intended in special use-cases where beanio maps the Camel message to a single POJO bean.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('beanReaderErrorHandlerType', 'Bean Reader Error Handler Type', "To use a custom org.apache.camel.dataformat.beanio.BeanIOErrorHandler as error handler while parsing. Configure the fully qualified class name of the error handler.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('unmarshalSingleObject', 'Unmarshal Single Object', "This option controls whether to unmarshal as a list of objects or as a single object only.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('bindy', 'BindyDataFormat', 'Bindy', "Marshal and unmarshal Java beans from and to flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).", 'dataformat,transformation,csv', [
+    new ElementMeta('bindy', 'BindyDataFormat', 'Bindy', "Marshal and unmarshal Java beans from and to flat payloads (such as CSV, delimited, fixed length formats, or FIX messages)", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('type', 'Type', "Whether to use Csv, Fixed, or KeyValue.", 'string', 'Csv, Fixed, KeyValue', '', true, false, false, false, '', ''),
         new PropertyMeta('classType', 'Class Type', "Name of model class to use.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('defaultValueStringAsNull', 'Default Value String As Null', "To change the default value for string types to be null instead of an empty string.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('allowEmptyStream', 'Allow Empty Stream', "Whether to allow empty streams in the unmarshal process. If true, no exception will be thrown when a body without records is provided.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('unwrapSingleInstance', 'Unwrap Single Instance', "When unmarshalling should a single instance be unwrapped and returned instead of wrapped in a java.util.List.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('locale', 'Locale', "To configure a default locale to use, such as us for united states. To use the JVM platform default locale then use the name default", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('locale', 'Locale', "To configure a default locale to use, such as us for united states. To use the JVM platform default locale then use the name default.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('cbor', 'CBORDataFormat', 'CBOR', "Unmarshal a CBOR payload to POJO and back.", 'dataformat,transformation,json', [
+    new ElementMeta('cbor', 'CBORDataFormat', 'CBOR', "Unmarshal a CBOR payload to POJO and back", 'dataformat,transformation,json', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing CBOR ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson CBOR ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to use different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useList', 'Use List', "To unmarshal to a List of Map or a List of Pojo.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson CBOR is allowed to attempt to use the CamelCBORUnmarshalType header during the unmarshalling. This should only be enabled when desired to be used.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson CBOR is allowed to attempt to use the CamelCBORUnmarshalType header during the unmarshalling.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('prettyPrint', 'Pretty Print', "To enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('allowJmsType', 'Allow Jms Type', "Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('crypto', 'CryptoDataFormat', 'Crypto (Java Cryptographic Extension)', "Encrypt and decrypt messages using Java Cryptography Extension (JCE).", 'dataformat,transformation,security', [
+    new ElementMeta('crypto', 'CryptoDataFormat', 'Crypto (Java Cryptographic Extension)', "Encrypt and decrypt messages using Java Cryptography Extension (JCE)", 'dataformat,transformation,security', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('algorithm', 'Algorithm', "The JCE algorithm name indicating the cryptographic algorithm that will be used.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('key', 'Key', "Refers to the secret key to lookup from the register to use.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('cryptoProvider', 'Crypto Provider', "The name of the JCE Security Provider that should be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('initVector', 'Init Vector', "Refers to a byte array containing the Initialization Vector that will be used to initialize the Cipher.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('algorithmParameterSpec', 'Algorithm Parameter Spec', "A JCE AlgorithmParameterSpec used to initialize the Cipher. Will lookup the type using the given name as a java.security.spec.AlgorithmParameterSpec type.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('algorithmParameterSpec', 'Algorithm Parameter Spec', "A JCE AlgorithmParameterSpec used to initialize the Cipher.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('bufferSize', 'Buffer Size', "The size of the buffer used in the signature process.", 'number', '', '4096', false, false, false, false, '', ''),
         new PropertyMeta('macAlgorithm', 'Mac Algorithm', "The JCE algorithm name indicating the Message Authentication algorithm.", 'string', '', 'HmacSHA1', false, false, false, false, '', ''),
         new PropertyMeta('shouldAppendHMAC', 'Should Append HMAC', "Flag indicating that a Message Authentication Code should be calculated and appended to the encrypted data.", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('inline', 'Inline', "Flag indicating that the configured IV should be inlined into the encrypted data stream. Is by default false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('csv', 'CsvDataFormat', 'CSV', "Handle CSV (Comma Separated Values) payloads.", 'dataformat,transformation,csv', [
+    new ElementMeta('csv', 'CsvDataFormat', 'CSV', "Handle CSV (Comma Separated Values) payloads", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('format', 'Format', "The format to use.", 'string', 'DEFAULT, EXCEL, INFORMIX_UNLOAD, INFORMIX_UNLOAD_CSV, MONGODB_CSV, MONGODB_TSV, MYSQL, ORACLE, POSTGRESQL_CSV, POSTGRESQL_TEXT, RFC4180', 'DEFAULT', false, false, false, false, '', ''),
         new PropertyMeta('commentMarkerDisabled', 'Comment Marker Disabled', "Disables the comment marker of the reference format.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('commentMarker', 'Comment Marker', "Sets the comment marker of the reference format.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('delimiter', 'Delimiter', "Sets the delimiter to use. The default value is , (comma)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('escapeDisabled', 'Escape Disabled', "Use for disabling using escape character", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('escape', 'Escape', "Sets the escape character to use", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('headerDisabled', 'Header Disabled', "Use for disabling headers", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('delimiter', 'Delimiter', "The delimiter to use. The default value is , (comma).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('escapeDisabled', 'Escape Disabled', "Whether to disable the escape character.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('escape', 'Escape', "Sets the escape character to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('headerDisabled', 'Header Disabled', "Whether to disable headers.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('header', 'Header', "To configure the CSV headers. Multiple headers can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('allowMissingColumnNames', 'Allow Missing Column Names', "Whether to allow missing column names.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('ignoreEmptyLines', 'Ignore Empty Lines', "Whether to ignore empty lines.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreSurroundingSpaces', 'Ignore Surrounding Spaces', "Whether to ignore surrounding spaces", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('nullStringDisabled', 'Null String Disabled', "Used to disable null strings", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('nullString', 'Null String', "Sets the null string", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('quoteDisabled', 'Quote Disabled', "Used to disable quotes", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('quote', 'Quote', "Sets the quote to use which by default is double-quote character", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('recordSeparatorDisabled', 'Record Separator Disabled', "Used for disabling record separator", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('recordSeparator', 'Record Separator', "Sets the record separator (aka new line) which by default is new line characters (CRLF)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('skipHeaderRecord', 'Skip Header Record', "Whether to skip the header record in the output", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('quoteMode', 'Quote Mode', "Sets the quote mode", 'string', 'ALL, ALL_NON_NULL, MINIMAL, NON_NUMERIC, NONE', '', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreHeaderCase', 'Ignore Header Case', "Sets whether or not to ignore case when accessing header names.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Sets whether or not to trim leading and trailing blanks.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('trailingDelimiter', 'Trailing Delimiter', "Sets whether or not to add a trailing delimiter.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('marshallerFactoryRef', 'Marshaller Factory Ref', "Sets the implementation of the CsvMarshallerFactory interface which is able to customize marshalling/unmarshalling behavior by extending CsvMarshaller or creating it from scratch.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ignoreSurroundingSpaces', 'Ignore Surrounding Spaces', "Whether to ignore surrounding spaces.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('nullStringDisabled', 'Null String Disabled', "Whether to disable null string handling.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('nullString', 'Null String', "Sets the null string.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('quoteDisabled', 'Quote Disabled', "Whether to disable quoting.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('quote', 'Quote', "The quote character to use. The default is double-quote character.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('recordSeparatorDisabled', 'Record Separator Disabled', "Whether to disable the record separator.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('recordSeparator', 'Record Separator', "The record separator (aka new line) which by default is new line characters (CRLF).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('skipHeaderRecord', 'Skip Header Record', "Whether to skip the header record in the output.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('quoteMode', 'Quote Mode', "Sets the quote mode.", 'string', 'ALL, ALL_NON_NULL, MINIMAL, NON_NUMERIC, NONE', '', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreHeaderCase', 'Ignore Header Case', "Whether to ignore case when accessing header names.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim leading and trailing blanks.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('trailingDelimiter', 'Trailing Delimiter', "Whether to add a trailing delimiter.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('marshallerFactoryRef', 'Marshaller Factory Ref', "Sets the implementation of the CsvMarshallerFactory interface which is able to customize marshalling/unmarshalling behavior.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useMaps', 'Use Maps', "Whether the unmarshalling should produce maps (HashMap)for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('useMaps', 'Use Maps', "Whether the unmarshalling should produce maps (HashMap) for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('useOrderedMaps', 'Use Ordered Maps', "Whether the unmarshalling should produce ordered maps (LinkedHashMap) for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('recordConverterRef', 'Record Converter Ref', "Refers to a custom CsvRecordConverter to lookup from the registry to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('captureHeaderRecord', 'Capture Header Record', "Whether the unmarshalling should capture the header record and store it in the message header", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('captureHeaderRecord', 'Capture Header Record', "Whether the unmarshalling should capture the header record and store it in the message header.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('custom', 'CustomDataFormat', 'Custom', "Delegate to a custom org.apache.camel.spi.DataFormat implementation via Camel registry.", 'dataformat,transformation', [
+    new ElementMeta('custom', 'CustomDataFormat', 'Custom', "Delegates to a custom DataFormat implementation looked up from the Camel registry by name", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ref', 'Ref', "Reference to the custom org.apache.camel.spi.DataFormat to lookup from the Camel registry.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to the custom DataFormat to lookup from the Camel registry.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Configure data formats.", 'dataformat,transformation', [
+    new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Container for defining data format configurations", 'dataformat,transformation', [
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('barcode', 'barcode', "barcode", 'BarcodeDataFormat', '', '', false, false, false, true, '', ''),
@@ -324,6 +325,7 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('groovyJson', 'groovyJson', "groovyJson", 'GroovyJSonDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
@@ -335,8 +337,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('jsonApi', 'jsonApi', "jsonApi", 'JsonApiDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('lzf', 'lzf', "lzf", 'LZFDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('mimeMultipart', 'mimeMultipart', "mimeMultipart", 'MimeMultipartDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('ocsf', 'ocsf', "ocsf", 'OcsfDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('parquetAvro', 'parquetAvro', "parquetAvro", 'ParquetAvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('pgp', 'pgp', "pgp", 'PGPDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('pqc', 'pqc', "pqc", 'PQCDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('protobuf', 'protobuf', "protobuf", 'ProtobufDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('rss', 'rss', "rss", 'RssDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('smooks', 'smooks', "smooks", 'SmooksDataFormat', '', '', false, false, false, true, '', ''),
@@ -355,67 +359,67 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('dfdl', 'DfdlDataFormat', 'DFDL', "Transforms fixed format data such as EDI message from/to XML using a Data Format Description Language (DFDL).", 'dataformat,transformation', [
+    new ElementMeta('dfdl', 'DfdlDataFormat', 'DFDL', "Transforms fixed format data such as EDI message from/to XML using a Data Format Description Language (DFDL)", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('schemaUri', 'Schema Uri', "The path to the DFDL schema file.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('rootElement', 'Root Element', "The root element name of the schema to use. If not specified, the first root element in the schema will be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('rootNamespace', 'Root Namespace', "The root namespace of the schema to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('fhirJson', 'FhirJsonDataFormat', 'FHIR JSon', "Marshall and unmarshall FHIR objects to/from JSON.", 'dataformat,transformation,health,json', [
+    new ElementMeta('fhirJson', 'FhirJsonDataFormat', 'FHIR JSon', "Marshall and unmarshall FHIR objects to/from JSON", 'dataformat,transformation,health,json', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fhirVersion', 'Fhir Version', "The version of FHIR to use. Possible values are: DSTU2,DSTU2_HL7ORG,DSTU2_1,DSTU3,R4,R5", 'string', 'DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5', 'R4', false, false, false, false, '', ''),
-        new PropertyMeta('fhirContext', 'Fhir Context', "To use a custom fhir context. Reference to object of type ca.uhn.fhir.context.FhirContext", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('prettyPrint', 'Pretty Print', "Sets the pretty print flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements instead of condensing output as much as possible.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('parserErrorHandler', 'Parser Error Handler', "Registers an error handler which will be invoked when any parse errors are found. Reference to object of type ca.uhn.fhir.parser.IParserErrorHandler", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('fhirVersion', 'Fhir Version', "The version of FHIR to use. Possible values are: DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5.", 'string', 'DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5', 'R4', false, false, false, false, '', ''),
+        new PropertyMeta('fhirContext', 'Fhir Context', "To use a custom fhir context. Reference to object of type ca.uhn.fhir.context.FhirContext.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('prettyPrint', 'Pretty Print', "Sets the pretty print flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('parserErrorHandler', 'Parser Error Handler', "Registers an error handler which will be invoked when any parse errors are found. Reference to object of type ca.uhn.fhir.parser.IParserErrorHandler.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parserOptions', 'Parser Options', "Sets the parser options object which will be used to supply default options to newly created parsers. Reference to object of type ca.uhn.fhir.context.ParserOptions.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('preferTypes', 'Prefer Types', "If set (FQN class names), when parsing resources the parser will try to use the given types when possible, in the order that they are provided (from highest to lowest priority). For example, if a custom type which declares to implement the Patient resource is passed in here, and the parser is parsing a Bundle containing a Patient resource, the parser will use the given custom type. Multiple class names can be separated by comma.",  [...]
-        new PropertyMeta('forceResourceId', 'Force Resource Id', "When encoding, force this resource ID to be encoded as the resource ID. Reference to object of type org.hl7.fhir.instance.model.api.IIdType", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('preferTypes', 'Prefer Types', "If set (FQN class names), when parsing resources the parser will try to use the given types when possible. Multiple class names can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('forceResourceId', 'Force Resource Id', "When encoding, force this resource ID to be encoded as the resource ID. Reference to object of type org.hl7.fhir.instance.model.api.IIdType.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('serverBaseUrl', 'Server Base Url', "Sets the server's base URL used by this parser. If a value is set, resource references will be turned into relative references if they are provided as absolute URLs but have a base matching the given base.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('omitResourceId', 'Omit Resource Id', "If set to true (default is false) the ID of any resources being encoded will not be included in the output. Note that this does not apply to contained resources, only to root resources. In other words, if this is set to true, contained resources will still have local IDs but the outer/containing ID will not have an ID.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('encodeElementsAppliesToChildResourcesOnly', 'Encode Elements Applies To Child Resources Only', "If set to true (default is false), the values supplied to setEncodeElements(Set) will not be applied to the root resource (typically a Bundle), but will be applied to any sub-resources contained within it (i.e. search result resources in that bundle)", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('encodeElements', 'Encode Elements', "If provided, specifies the elements which should be encoded, to the exclusion of all others. Multiple elements can be separated by comma when using String parameter. Valid values for this field would include: Patient - Encode patient and all its children Patient.name - Encode only the patient's name Patient.name.family - Encode only the patient's family name .text - Encode the text element on any resource (only the very first [...]
-        new PropertyMeta('dontEncodeElements', 'Dont Encode Elements', "If provided, specifies the elements which should NOT be encoded. Multiple elements can be separated by comma when using String parameter. Valid values for this field would include: Patient - Don't encode patient and all its children Patient.name - Don't encode the patient's name Patient.name.family - Don't encode the patient's family name .text - Don't encode the text element on any resource (only the very first posi [...]
-        new PropertyMeta('stripVersionsFromReferences', 'Strip Versions From References', "If set to true (which is the default), resource references containing a version will have the version removed when the resource is encoded. This is generally good behaviour because in most situations, references from one resource to another should be to the resource by ID, not by ID and version. In some cases though, it may be desirable to preserve the version in resource links. In that case, this  [...]
-        new PropertyMeta('overrideResourceIdWithBundleEntryFullUrl', 'Override Resource Id With Bundle Entry Full Url', "If set to true (which is the default), the Bundle.entry.fullUrl will override the Bundle.entry.resource's resource id if the fullUrl is defined. This behavior happens when parsing the source data into a Bundle object. Set this to false if this is not the desired behavior (e.g. the client code wishes to perform additional validation checks between the fullUrl and the re [...]
+        new PropertyMeta('omitResourceId', 'Omit Resource Id', "If set to true (default is false) the ID of any resources being encoded will not be included in the output.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('encodeElementsAppliesToChildResourcesOnly', 'Encode Elements Applies To Child Resources Only', "If set to true (default is false), the values supplied to setEncodeElements will not be applied to the root resource (typically a Bundle), but will be applied to any sub-resources contained within it.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('encodeElements', 'Encode Elements', "If provided, specifies the elements which should be encoded, to the exclusion of all others. Multiple elements can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('dontEncodeElements', 'Dont Encode Elements', "If provided, specifies the elements which should NOT be encoded. Multiple elements can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('stripVersionsFromReferences', 'Strip Versions From References', "If set to true (which is the default), resource references containing a version will have the version removed when the resource is encoded.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('overrideResourceIdWithBundleEntryFullUrl', 'Override Resource Id With Bundle Entry Full Url', "If set to true (which is the default), the Bundle.entry.fullUrl will override the Bundle.entry.resource's resource id if the fullUrl is defined.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('summaryMode', 'Summary Mode', "If set to true (default is false) only elements marked by the FHIR specification as being summary elements will be included.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('suppressNarratives', 'Suppress Narratives', "If set to true (default is false), narratives will not be included in the encoded values.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('dontStripVersionsFromReferencesAtPaths', 'Dont Strip Versions From References At Paths', "If supplied value(s), any resource references at the specified paths will have their resource versions encoded instead of being automatically stripped during the encoding process. This setting has no effect on the parsing process. Multiple elements can be separated by comma when using String parameter. This method provides a finer-grained level of control than setStripVersi [...]
+        new PropertyMeta('dontStripVersionsFromReferencesAtPaths', 'Dont Strip Versions From References At Paths', "If supplied value(s), any resource references at the specified paths will have their resource versions encoded instead of being automatically stripped during the encoding process. Multiple elements can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('fhirXml', 'FhirXmlDataFormat', 'FHIR XML', "Marshall and unmarshall FHIR objects to/from XML.", 'dataformat,transformation,health,xml', [
+    new ElementMeta('fhirXml', 'FhirXmlDataFormat', 'FHIR XML', "Marshall and unmarshall FHIR objects to/from XML", 'dataformat,transformation,health,xml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fhirVersion', 'Fhir Version', "The version of FHIR to use. Possible values are: DSTU2,DSTU2_HL7ORG,DSTU2_1,DSTU3,R4,R5", 'string', 'DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5', 'R4', false, false, false, false, '', ''),
-        new PropertyMeta('fhirContext', 'Fhir Context', "To use a custom fhir context. Reference to object of type ca.uhn.fhir.context.FhirContext", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('prettyPrint', 'Pretty Print', "Sets the pretty print flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements instead of condensing output as much as possible.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('parserErrorHandler', 'Parser Error Handler', "Registers an error handler which will be invoked when any parse errors are found. Reference to object of type ca.uhn.fhir.parser.IParserErrorHandler", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('fhirVersion', 'Fhir Version', "The version of FHIR to use. Possible values are: DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5.", 'string', 'DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5', 'R4', false, false, false, false, '', ''),
+        new PropertyMeta('fhirContext', 'Fhir Context', "To use a custom fhir context. Reference to object of type ca.uhn.fhir.context.FhirContext.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('prettyPrint', 'Pretty Print', "Sets the pretty print flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('parserErrorHandler', 'Parser Error Handler', "Registers an error handler which will be invoked when any parse errors are found. Reference to object of type ca.uhn.fhir.parser.IParserErrorHandler.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parserOptions', 'Parser Options', "Sets the parser options object which will be used to supply default options to newly created parsers. Reference to object of type ca.uhn.fhir.context.ParserOptions.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('preferTypes', 'Prefer Types', "If set (FQN class names), when parsing resources the parser will try to use the given types when possible, in the order that they are provided (from highest to lowest priority). For example, if a custom type which declares to implement the Patient resource is passed in here, and the parser is parsing a Bundle containing a Patient resource, the parser will use the given custom type. Multiple class names can be separated by comma.",  [...]
-        new PropertyMeta('forceResourceId', 'Force Resource Id', "When encoding, force this resource ID to be encoded as the resource ID. Reference to object of type org.hl7.fhir.instance.model.api.IIdType", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('preferTypes', 'Prefer Types', "If set (FQN class names), when parsing resources the parser will try to use the given types when possible. Multiple class names can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('forceResourceId', 'Force Resource Id', "When encoding, force this resource ID to be encoded as the resource ID. Reference to object of type org.hl7.fhir.instance.model.api.IIdType.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('serverBaseUrl', 'Server Base Url', "Sets the server's base URL used by this parser. If a value is set, resource references will be turned into relative references if they are provided as absolute URLs but have a base matching the given base.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('omitResourceId', 'Omit Resource Id', "If set to true (default is false) the ID of any resources being encoded will not be included in the output. Note that this does not apply to contained resources, only to root resources. In other words, if this is set to true, contained resources will still have local IDs but the outer/containing ID will not have an ID.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('encodeElementsAppliesToChildResourcesOnly', 'Encode Elements Applies To Child Resources Only', "If set to true (default is false), the values supplied to setEncodeElements(Set) will not be applied to the root resource (typically a Bundle), but will be applied to any sub-resources contained within it (i.e. search result resources in that bundle)", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('encodeElements', 'Encode Elements', "If provided, specifies the elements which should be encoded, to the exclusion of all others. Multiple elements can be separated by comma when using String parameter. Valid values for this field would include: Patient - Encode patient and all its children Patient.name - Encode only the patient's name Patient.name.family - Encode only the patient's family name .text - Encode the text element on any resource (only the very first [...]
-        new PropertyMeta('dontEncodeElements', 'Dont Encode Elements', "If provided, specifies the elements which should NOT be encoded. Multiple elements can be separated by comma when using String parameter. Valid values for this field would include: Patient - Don't encode patient and all its children Patient.name - Don't encode the patient's name Patient.name.family - Don't encode the patient's family name .text - Don't encode the text element on any resource (only the very first posi [...]
-        new PropertyMeta('stripVersionsFromReferences', 'Strip Versions From References', "If set to true (which is the default), resource references containing a version will have the version removed when the resource is encoded. This is generally good behaviour because in most situations, references from one resource to another should be to the resource by ID, not by ID and version. In some cases though, it may be desirable to preserve the version in resource links. In that case, this  [...]
-        new PropertyMeta('overrideResourceIdWithBundleEntryFullUrl', 'Override Resource Id With Bundle Entry Full Url', "If set to true (which is the default), the Bundle.entry.fullUrl will override the Bundle.entry.resource's resource id if the fullUrl is defined. This behavior happens when parsing the source data into a Bundle object. Set this to false if this is not the desired behavior (e.g. the client code wishes to perform additional validation checks between the fullUrl and the re [...]
+        new PropertyMeta('omitResourceId', 'Omit Resource Id', "If set to true (default is false) the ID of any resources being encoded will not be included in the output.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('encodeElementsAppliesToChildResourcesOnly', 'Encode Elements Applies To Child Resources Only', "If set to true (default is false), the values supplied to setEncodeElements will not be applied to the root resource (typically a Bundle), but will be applied to any sub-resources contained within it.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('encodeElements', 'Encode Elements', "If provided, specifies the elements which should be encoded, to the exclusion of all others. Multiple elements can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('dontEncodeElements', 'Dont Encode Elements', "If provided, specifies the elements which should NOT be encoded. Multiple elements can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('stripVersionsFromReferences', 'Strip Versions From References', "If set to true (which is the default), resource references containing a version will have the version removed when the resource is encoded.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('overrideResourceIdWithBundleEntryFullUrl', 'Override Resource Id With Bundle Entry Full Url', "If set to true (which is the default), the Bundle.entry.fullUrl will override the Bundle.entry.resource's resource id if the fullUrl is defined.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('summaryMode', 'Summary Mode', "If set to true (default is false) only elements marked by the FHIR specification as being summary elements will be included.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('suppressNarratives', 'Suppress Narratives', "If set to true (default is false), narratives will not be included in the encoded values.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('dontStripVersionsFromReferencesAtPaths', 'Dont Strip Versions From References At Paths', "If supplied value(s), any resource references at the specified paths will have their resource versions encoded instead of being automatically stripped during the encoding process. This setting has no effect on the parsing process. Multiple elements can be separated by comma when using String parameter. This method provides a finer-grained level of control than setStripVersi [...]
+        new PropertyMeta('dontStripVersionsFromReferencesAtPaths', 'Dont Strip Versions From References At Paths', "If supplied value(s), any resource references at the specified paths will have their resource versions encoded instead of being automatically stripped during the encoding process. Multiple elements can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('flatpack', 'FlatpackDataFormat', 'Flatpack', "Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library.", 'dataformat,transformation,csv', [
+    new ElementMeta('flatpack', 'FlatpackDataFormat', 'Flatpack', "Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('definition', 'Definition', "The flatpack pzmap configuration file. Can be omitted in simpler situations, but its preferred to use the pzmap.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fixed', 'Fixed', "Delimited or fixed. Is by default false = delimited", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('delimiter', 'Delimiter', "The delimiter char (could be ; , or similar)", 'string', '', ',', false, false, false, false, '', ''),
+        new PropertyMeta('fixed', 'Fixed', "Delimited or fixed. Is by default false = delimited.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('delimiter', 'Delimiter', "The delimiter char (could be ; , or similar).", 'string', '', ',', false, false, false, false, '', ''),
         new PropertyMeta('ignoreFirstRecord', 'Ignore First Record', "Whether the first line is ignored for delimited files (for the column headers). Is by default true.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('allowShortLines', 'Allow Short Lines', "Allows for lines to be shorter than expected and ignores the extra characters", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowShortLines', 'Allow Short Lines', "Allows for lines to be shorter than expected and ignores the extra characters.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('ignoreExtraColumns', 'Ignore Extra Columns', "Allows for lines to be longer than expected and ignores the extra characters.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('textQualifier', 'Text Qualifier', "If the text is qualified with a character. Uses quote character by default.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('parserFactory', 'Parser Factory', "References to a custom parser factory to lookup in the registry", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('parserFactory', 'Parser Factory', "References to a custom parser factory to lookup in the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
     new ElementMeta('fory', 'ForyDataFormat', 'Fory', "Serialize and deserialize messages using Apache Fory", 'dataformat,transformation', [
@@ -426,625 +430,652 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('allowAutoWiredFory', 'Allow Auto Wired Fory', "Whether to auto-discover Fory from the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('grok', 'GrokDataFormat', 'Grok', "Unmarshal unstructured data to objects using Logstash based Grok patterns.", 'dataformat,transformation', [
+    new ElementMeta('grok', 'GrokDataFormat', 'Grok', "Unmarshal unstructured data to objects using Logstash based Grok patterns", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('pattern', 'Pattern', "The grok pattern to match lines of input", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('flattened', 'Flattened', "Turns on flattened mode. In flattened mode the exception is thrown when there are multiple pattern matches with same key.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('allowMultipleMatchesPerLine', 'Allow Multiple Matches Per Line', "If false, every line of input is matched for pattern only once. Otherwise the line can be scanned multiple times when non-terminal pattern is used.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('namedOnly', 'Named Only', "Whether to capture named expressions only or not (i.e. %{IP:ip} but not ${IP})", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('pattern', 'Pattern', "The grok pattern to match lines of input.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('flattened', 'Flattened', "Whether to use flattened mode. In flattened mode an exception is thrown when there are multiple pattern matches with the same key.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowMultipleMatchesPerLine', 'Allow Multiple Matches Per Line', "Whether to allow multiple matches per line. If false, every line of input is matched for the pattern only once. Otherwise the line can be scanned multiple times when a non-terminal pattern is used.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('namedOnly', 'Named Only', "Whether to capture named expressions only or not (i.e. %{IP:ip} but not ${IP}).", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('groovyXml', 'GroovyXmlDataFormat', 'Groovy XML', "Transform between XML and Groovy Node (Map structure) objects.", 'dataformat,transformation,xml', [
+    new ElementMeta('groovyJson', 'GroovyJSonDataFormat', 'Groovy JSon', "Transform between JSon and java.util.Map or java.util.List objects", 'dataformat,transformation,json', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('attributeMapping', 'Attribute Mapping', "To turn on or off attribute mapping. When enabled then keys that start with _ or character will be mapped to an XML attribute, and vise versa. This rule is what Jackson and other XML or JSon libraries uses.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('prettyPrint', 'Pretty Print', "Whether to pretty print output nicely formatted.", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('gzipDeflater', 'GzipDeflaterDataFormat', 'GZip Deflater', "Compress and decompress messages using java.util.zip.GZIPStream.", 'dataformat,transformation', [
+    new ElementMeta('groovyXml', 'GroovyXmlDataFormat', 'Groovy XML', "Transform between XML and Groovy Node (Map structure) objects", 'dataformat,transformation,xml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('attributeMapping', 'Attribute Mapping', "Whether to enable attribute mapping. When enabled, keys that start with _ or character will be mapped to an XML attribute, and vice versa.", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('hl7', 'HL7DataFormat', 'HL7', "Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec.", 'dataformat,transformation,health', [
+    new ElementMeta('gzipDeflater', 'GzipDeflaterDataFormat', 'GZip Deflater', "Compress and decompress messages using java.util.zip.GZIP*Stream", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('parser', 'Parser', "To use a custom HL7 parser", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('validate', 'Validate', "Whether to validate the HL7 message Is by default true.", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('ical', 'IcalDataFormat', 'iCal', "Marshal and unmarshal iCal (.ics) documents to/from model objects.", 'dataformat,transformation', [
+    new ElementMeta('hl7', 'HL7DataFormat', 'HL7', "Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec", 'dataformat,transformation,health', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('validating', 'Validating', "Whether to validate.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('parser', 'Parser', "To use a custom HL7 parser.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('validate', 'Validate', "Whether to validate the HL7 message.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('targetFormat', 'Target Format', "The target format for marshal output and unmarshal result type. By default, marshal encodes to HL7 ER7 and unmarshal returns a HAPI Message object. If set to XML, marshal encodes to HL7 XML and unmarshal returns an XML DOM Document.", 'string', 'XML', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('iso8583', 'Iso8583DataFormat', 'ISO-8583', "Create, edit and read ISO-8583 messages.", 'dataformat,transformation,finance', [
+    new ElementMeta('ical', 'IcalDataFormat', 'iCal', "Marshal and unmarshal iCal (*.ics) documents to/from model objects", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('validating', 'Validating', "Whether to validate the iCal document.", 'boolean', '', 'false', false, false, false, false, '', ''),
+    ], [
+    ]),
+    new ElementMeta('iso8583', 'Iso8583DataFormat', 'ISO-8583', "Create, edit and read ISO-8583 messages", 'dataformat,transformation,finance', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('configFile', 'Config File', "The j8583 configuration file to load from classpath", 'string', '', 'j8583-config.xml', false, false, false, false, '', ''),
         new PropertyMeta('isoType', 'Iso Type', "The default ISO-Type to use", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('allowAutoWiredMessageFormat', 'Allow Auto Wired Message Format', "Whether to auto-discover com.solab.iso8583.MessageFactory from the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('jacksonXml', 'JacksonXMLDataFormat', 'Jackson XML', "Unmarshal an XML payloads to POJOs and back using XMLMapper extension of Jackson.", 'dataformat,transformation,xml', [
+    new ElementMeta('jacksonXml', 'JacksonXMLDataFormat', 'Jackson XML', "Unmarshal an XML payloads to POJOs and back using XMLMapper extension of Jackson", 'dataformat,transformation,xml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('xmlMapper', 'Xml Mapper', "Lookup and use the existing XmlMapper with the given id.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('prettyPrint', 'Pretty Print', "To enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling. This should only be enabled when desired to be used.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('include', 'Include', "If you want to marshal a pojo to JSON, and the pojo has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowJmsType', 'Allow Jms Type', "Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to use different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useList', 'Use List', "To unmarshal to a List of Map or a List of Pojo.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('prettyPrint', 'Pretty Print', "Whether to enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "Whether to allow Jackson to use the CamelJacksonUnmarshalType header during unmarshalling. Should only be enabled when desired.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('include', 'Include', "If you want to marshal a POJO to JSON, and the POJO has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowJmsType', 'Allow Jms Type', "Whether to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows using different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useList', 'Use List', "Whether to unmarshal to a List of Map or a List of Pojo.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('timezone', 'Timezone', "If set then Jackson will use the Timezone when marshalling/unmarshalling.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableJaxbAnnotationModule', 'Enable Jaxb Annotation Module', "Whether to enable the JAXB annotations module when using jackson. When enabled then JAXB annotations can be used by Jackson.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableJaxbAnnotationModule', 'Enable Jaxb Annotation Module', "Whether to enable the JAXB annotations module when using Jackson. When enabled then JAXB annotations can be used by Jackson.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('moduleClassNames', 'Module Class Names', "To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class names. Multiple classes can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('moduleRefs', 'Module Refs', "To use custom Jackson modules referred from the Camel registry. Multiple modules can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from SerializationFeature, DeserializationFeature, or MapperFeature. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from SerializationFeature, DeserializationFeature, or MapperFeature. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('maxStringLength', 'Max String Length', "Sets the maximum string length (in chars or bytes, depending on input context). The default is 20,000,000. This limit is not exact, the limit is applied when we increase internal buffer sizes and an exception will happen at sizes greater than this limit. Some text values that are a little bigger than the limit may be treated as valid but no text values with sizes less than or equal to this limit will be treated as invalid. [...]
+        new PropertyMeta('maxStringLength', 'Max String Length', "Maximum allowed string length when deserializing (in chars or bytes, depending on input context). The default is 20,000,000.", 'number', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('jaxb', 'JaxbDataFormat', 'JAXB', "Unmarshal XML payloads to POJOs and back using JAXB2 XML marshalling standard.", 'dataformat,transformation,xml', [
+    new ElementMeta('jaxb', 'JaxbDataFormat', 'JAXB', "Unmarshal XML payloads to POJOs and back using JAXB2 XML marshalling standard", 'dataformat,transformation,xml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('contextPath', 'Context Path', "Package name where your JAXB classes are located.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('contextPathIsClassName', 'Context Path Is Class Name', "This can be set to true to mark that the contextPath is referring to a classname and not a package name.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('schema', 'Schema', "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('schemaSeverityLevel', 'Schema Severity Level', "Sets the schema severity level to use when validating against a schema. This level determines the minimum severity error that triggers JAXB to stop continue parsing. The default value of 0 (warning) means that any error (warning, error or fatal error) will trigger JAXB to stop. There are the following three levels: 0=warning, 1=error, 2=fatal error.", 'string', '0, 1, 2', '0', false, false, false, false, '', ''),
+        new PropertyMeta('schema', 'Schema', "To validate against an existing schema. You can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the comma character.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('schemaSeverityLevel', 'Schema Severity Level', "Sets the schema severity level to use when validating against a schema. The default value of 0 (warning) means that any error will trigger JAXB to stop. There are the following three levels: 0=warning, 1=error, 2=fatal error.", 'string', '0, 1, 2', '0', false, false, false, false, '', ''),
         new PropertyMeta('prettyPrint', 'Pretty Print', "To enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('objectFactory', 'Object Factory', "Whether to allow using ObjectFactory classes to create the POJO classes during marshalling. This only applies to POJO classes that has not been annotated with JAXB and providing jaxb.index descriptor files.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('objectFactory', 'Object Factory', "Whether to allow using ObjectFactory classes to create the POJO classes during marshalling.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('ignoreJAXBElement', 'Ignore JAXBElement', "Whether to ignore JAXBElement elements - only needed to be set to false in very special use-cases.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('mustBeJAXBElement', 'Must Be JAXBElement', "Whether marhsalling must be java objects with JAXB annotations. And if not then it fails. This option can be set to false to relax that, such as when the data is already in XML format.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('filterNonXmlChars', 'Filter Non Xml Chars', "To ignore non xml characheters and replace them with an empty space.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fragment', 'Fragment', "To turn on marshalling XML fragment trees. By default JAXB looks for XmlRootElement annotation on given class to operate on whole XML tree. This is useful but not always - sometimes generated code does not have XmlRootElement annotation, sometimes you need unmarshall only part of tree. In that case you can use partial unmarshalling. To enable this behaviours you need set property partClass. Camel will pass this class to JAXB's unmarshaler [...]
-        new PropertyMeta('partClass', 'Part Class', "Name of class used for fragment parsing. See more details at the fragment option.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('partNamespace', 'Part Namespace', "XML namespace to use for fragment parsing. See more details at the fragment option.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('mustBeJAXBElement', 'Must Be JAXBElement', "Whether marshalling must be java objects with JAXB annotations. And if not then it fails. This option can be set to false to relax that, such as when the data is already in XML format.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('filterNonXmlChars', 'Filter Non Xml Chars', "To ignore non xml characters and replace them with an empty space.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('fragment', 'Fragment', "To turn on marshalling XML fragment trees. This is useful when generated code does not have XmlRootElement annotation and you need to unmarshall only part of the tree.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('partClass', 'Part Class', "Name of class used for fragment parsing.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('partNamespace', 'Part Namespace', "XML namespace to use for fragment parsing.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('namespacePrefix', 'Namespace Prefix', "When marshalling using JAXB or SOAP then the JAXB implementation will automatically assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('xmlStreamWriterWrapper', 'Xml Stream Writer Wrapper', "To use a custom xml stream writer.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('schemaLocation', 'Schema Location', "To define the location of the schema", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('noNamespaceSchemaLocation', 'No Namespace Schema Location', "To define the location of the namespaceless schema", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('schemaLocation', 'Schema Location', "To define the location of the schema.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('noNamespaceSchemaLocation', 'No Namespace Schema Location', "To define the location of the namespaceless schema.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('jaxbProviderProperties', 'Jaxb Provider Properties', "Refers to a custom java.util.Map to lookup in the registry containing custom JAXB provider properties to be used with the JAXB marshaller.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('accessExternalSchemaProtocols', 'Access External Schema Protocols', "Only in use if schema validation has been enabled. Restrict access to the protocols specified for external reference set by the schemaLocation attribute, Import and Include element. Examples of protocols are file, http, jar:file. empty, false or none to deny all access to external references; a specific protocol, such as file, to give permission to only the protocol; the keyword all to grant pe [...]
+        new PropertyMeta('accessExternalSchemaProtocols', 'Access External Schema Protocols', "Only in use if schema validation has been enabled. Restrict access to the protocols specified for external reference set by the schemaLocation attribute, Import and Include element.", 'string', '', '', false, false, false, false, 'security', ''),
     ], [
     ]),
-    new ElementMeta('jsonApi', 'JsonApiDataFormat', 'JSonApi', "Marshal and unmarshal JSON:API resources using JSONAPI-Converter library.", 'dataformat,transformation', [
+    new ElementMeta('jsonApi', 'JsonApiDataFormat', 'JSonApi', "Marshal and unmarshal JSON:API resources using JSONAPI-Converter library", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('dataFormatTypes', 'Data Format Types', "The classes to take into account for the marshalling. Multiple classes can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('mainFormatType', 'Main Format Type', "The class to take into account while unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('json', 'JsonDataFormat', 'JSon', "Marshal POJOs to JSON and back.", 'dataformat,transformation,json', [
+    new ElementMeta('json', 'JsonDataFormat', 'JSon', "Marshal POJOs to JSON and back", 'dataformat,transformation,json', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will look for an objectMapper to use from the registry", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will look for an objectMapper to use from the registry.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('prettyPrint', 'Pretty Print', "To enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('library', 'Library', "Which json library to use.", 'string', 'Fastjson, Gson, Jackson, Jsonb', 'Jackson', false, false, false, false, '', ''),
         new PropertyMeta('combineUnicodeSurrogates', 'Combine Unicode Surrogates', "Force generator that outputs JSON content to combine surrogate pairs (if any) into 4-byte characters. This should be preferred when using 4-byte characters such as Japanese.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('include', 'Include', "If you want to marshal a pojo to JSON, and the pojo has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('include', 'Include', "If you want to marshal a POJO to JSON, and the POJO has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('allowJmsType', 'Allow Jms Type', "Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows using different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useList', 'Use List', "To unmarshal to a List of Map or a List of Pojo.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('moduleClassNames', 'Module Class Names', "To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class names. Multiple classes can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('moduleRefs', 'Module Refs', "To use custom Jackson modules referred from the Camel registry. Multiple modules can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling. This should only be enabled when desired to be used.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('timezone', 'Timezone', "If set then Jackson will use the Timezone when marshalling/unmarshalling. This option will have no effect on the others Json DataFormat, like gson and fastjson.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timezone', 'Timezone', "If set then Jackson will use the Timezone when marshalling/unmarshalling.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('schemaResolver', 'Schema Resolver', "Optional schema resolver used to lookup schemas for the data in transit.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('namingStrategy', 'Naming Strategy', "If set then Jackson will use the the defined Property Naming Strategy.Possible values are: LOWER_CAMEL_CASE, LOWER_DOT_CASE, LOWER_CASE, KEBAB_CASE, SNAKE_CASE and UPPER_CAMEL_CASE", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('dateFormatPattern', 'Date Format Pattern', "To configure the date format while marshall or unmarshall Date fields in JSON using Gson", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('maxStringLength', 'Max String Length', "Jackson. Sets the maximum string length (in chars or bytes, depending on input context). The default is 20,000,000. This limit is not exact, the limit is applied when we increase internal buffer sizes and an exception will happen at sizes greater than this limit. Some text values that are a little bigger than the limit may be treated as valid but no text values with sizes less than or equal to this limit will be treated as [...]
+        new PropertyMeta('maxStringLength', 'Max String Length', "Sets the maximum string length (in chars or bytes, depending on input context). The default is 20,000,000.", 'number', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('lzf', 'LZFDataFormat', 'LZF Deflate Compression', "Compress and decompress streams using LZF deflate algorithm.", 'dataformat,transformation', [
+    new ElementMeta('lzf', 'LZFDataFormat', 'LZF Deflate Compression', "Compress and decompress streams using LZF deflate algorithm", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('usingParallelCompression', 'Using Parallel Compression', "Enable encoding (compress) using multiple processing cores.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('usingParallelCompression', 'Using Parallel Compression', "Whether to enable encoding (compress) using multiple processing cores.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('mimeMultipart', 'MimeMultipartDataFormat', 'MIME Multipart', "Marshal Camel messages with attachments into MIME-Multipart messages and back.", 'dataformat,transformation', [
+    new ElementMeta('mimeMultipart', 'MimeMultipartDataFormat', 'MIME Multipart', "Marshal Camel messages with attachments into MIME-Multipart messages and back", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('multipartSubType', 'Multipart Sub Type', "Specify the subtype of the MIME Multipart. Default is mixed.", 'string', '', 'mixed', false, false, false, false, '', ''),
-        new PropertyMeta('multipartWithoutAttachment', 'Multipart Without Attachment', "Defines whether a message without attachment is also marshaled into a MIME Multipart (with only one body part). Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headersInline', 'Headers Inline', "Defines whether the MIME-Multipart headers are part of the message body (true) or are set as Camel headers (false). Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('includeHeaders', 'Include Headers', "A regex that defines which Camel headers are also included as MIME headers into the MIME multipart. This will only work if headersInline is set to true. Default is to include no headers", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('binaryContent', 'Binary Content', "Defines whether the content of binary parts in the MIME multipart is binary (true) or Base-64 encoded (false) Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('multipartSubType', 'Multipart Sub Type', "Specify the subtype of the MIME Multipart.", 'string', '', 'mixed', false, false, false, false, '', ''),
+        new PropertyMeta('multipartWithoutAttachment', 'Multipart Without Attachment', "Whether a message without attachment is also marshaled into a MIME Multipart (with only one body part).", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headersInline', 'Headers Inline', "Whether the MIME-Multipart headers are part of the message body (true) or are set as Camel headers (false).", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('includeHeaders', 'Include Headers', "A regex that defines which Camel headers are also included as MIME headers into the MIME multipart. This only works if headersInline is set to true.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('binaryContent', 'Binary Content', "Whether the content of binary parts in the MIME multipart is binary (true) or Base-64 encoded (false).", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('pgp', 'PGPDataFormat', 'PGP', "Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP.", 'dataformat,transformation,security', [
+    new ElementMeta('ocsf', 'OcsfDataFormat', 'OCSF', "Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to/from JSON", 'dataformat,transformation,json,security', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('keyUserid', 'Key Userid', "The user ID of the key in the PGP keyring used during encryption. Can also be only a part of a user ID. For example, if the user ID is Test User then you can use the part Test User or to address the user ID.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('signatureKeyUserid', 'Signature Key Userid', "User ID of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption). During the signature verification process the specified User ID restricts the public keys from the public keyring which can be used for the verification. If no User ID is specified for the signature verficiation then any public key in the public keyring can be used for the verification. Can also b [...]
+        new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the OCSF event type to use when unmarshalling. Defaults to OcsfEvent.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows using different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useList', 'Use List', "Whether to unmarshal to a List of OCSF events.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "Whether to allow the unmarshal type to be specified via the CamelOcsfUnmarshalType header.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('prettyPrint', 'Pretty Print', "Whether to enable pretty printing output nicely formatted.", 'boolean', '', 'false', false, false, false, false, '', ''),
+    ], [
+    ]),
+    new ElementMeta('pgp', 'PGPDataFormat', 'PGP (Pretty Good Privacy Cryptographic)', "Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP", 'dataformat,transformation,security', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('keyUserid', 'Key Userid', "The user ID of the key in the PGP keyring used during encryption. Can also be only a part of a user ID.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('signatureKeyUserid', 'Signature Key Userid', "User ID of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption).", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('password', 'Password', "Password used when opening the private key (not used for encryption).", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('signaturePassword', 'Signature Password', "Password used when opening the private key used for signing (during encryption).", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('keyFileName', 'Key File Name', "Filename of the keyring; must be accessible as a classpath resource (but you can specify a location in the file system by using the file: prefix).", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('signatureKeyFileName', 'Signature Key File Name', "Filename of the keyring to use for signing (during encryption) or for signature verification (during decryption); must be accessible as a classpath resource (but you can specify a location in the file system by using the file: prefix).", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('signatureKeyRing', 'Signature Key Ring', "Keyring used for signing/verifying as byte array. You can not set the signatureKeyFileName and signatureKeyRing at the same time.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('signatureKeyRing', 'Signature Key Ring', "Keyring used for signing/verifying as byte array. You cannot set the signatureKeyFileName and signatureKeyRing at the same time.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('armored', 'Armored', "This option will cause PGP to base64 encode the encrypted text, making it available for copy/paste, etc.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('integrity', 'Integrity', "Adds an integrity check/sign into the encryption file. The default value is true.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('provider', 'Provider', "Java Cryptography Extension (JCE) provider, default is Bouncy Castle (BC). Alternatively you can use, for example, the IAIK JCE provider; in this case the provider must be registered beforehand and the Bouncy Castle provider must not be registered beforehand. The Sun JCE provider does not work.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('algorithm', 'Algorithm', "Symmetric key encryption algorithm; possible values are defined in org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags; for example 2 (= TRIPLE DES), 3 (= CAST5), 4 (= BLOWFISH), 6 (= DES), 7 (= AES_128). Only relevant for encrypting.", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('compressionAlgorithm', 'Compression Algorithm', "Compression algorithm; possible values are defined in org.bouncycastle.bcpg.CompressionAlgorithmTags; for example 0 (= UNCOMPRESSED), 1 (= ZIP), 2 (= ZLIB), 3 (= BZIP2). Only relevant for encrypting.", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('hashAlgorithm', 'Hash Algorithm', "Signature hash algorithm; possible values are defined in org.bouncycastle.bcpg.HashAlgorithmTags; for example 2 (= SHA1), 8 (= SHA256), 9 (= SHA384), 10 (= SHA512), 11 (=SHA224). Only relevant for signing.", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('signatureVerificationOption', 'Signature Verification Option', "Controls the behavior for verifying the signature during unmarshaling. There are 4 values possible: optional: The PGP message may or may not contain signatures; if it does contain signatures, then a signature verification is executed. required: The PGP message must contain at least one signature; if this is not the case an exception (PGPException) is thrown. A signature verification is executed. ign [...]
+        new PropertyMeta('integrity', 'Integrity', "Adds an integrity check/sign into the encryption file.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('provider', 'Provider', "Java Cryptography Extension (JCE) provider, default is Bouncy Castle (BC). Alternatively you can use, for example, the IAIK JCE provider.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('algorithm', 'Algorithm', "Symmetric key encryption algorithm; possible values are defined in org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags. Only relevant for encrypting.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('compressionAlgorithm', 'Compression Algorithm', "Compression algorithm; possible values are defined in org.bouncycastle.bcpg.CompressionAlgorithmTags. Only relevant for encrypting.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('hashAlgorithm', 'Hash Algorithm', "Signature hash algorithm; possible values are defined in org.bouncycastle.bcpg.HashAlgorithmTags. Only relevant for signing.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('signatureVerificationOption', 'Signature Verification Option', "Controls the behavior for verifying the signature during unmarshaling. Possible values: optional, required, ignore, no_signature_allowed.", 'string', '', '', false, false, false, false, '', ''),
+    ], [
+    ]),
+    new ElementMeta('pqc', 'PQCDataFormat', 'PQC (Post-Quantum Cryptography)', "Encrypt and decrypt messages using Post-Quantum Cryptography Key Encapsulation Mechanisms (KEM)", 'dataformat,transformation,security', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('keyEncapsulationAlgorithm', 'Key Encapsulation Algorithm', "The Post-Quantum KEM algorithm to use for key encapsulation.", 'string', 'MLKEM, BIKE, HQC, CMCE, SABER, FRODO, NTRU, NTRULPRime, SNTRUPrime, KYBER', 'MLKEM', false, false, false, false, '', ''),
+        new PropertyMeta('symmetricKeyAlgorithm', 'Symmetric Key Algorithm', "The symmetric encryption algorithm to use with the shared secret. Only algorithms that support authenticated encryption (AEAD) are allowed: AES, ARIA, CAMELLIA, CAST6, DSTU7624, GOST3412_2015, SEED and SM4 are encrypted with GCM, and CHACHA7539 with ChaCha20-Poly1305.", 'string', 'AES, ARIA, CAMELLIA, CAST6, DSTU7624, GOST3412_2015, SEED, SM4, CHACHA7539', 'AES', false, false, false, false, '', ''),
+        new PropertyMeta('symmetricKeyLength', 'Symmetric Key Length', "The length (in bits) of the symmetric key.", 'number', '', '128', false, false, false, false, '', ''),
+        new PropertyMeta('keyPair', 'Key Pair', "Refers to the KeyPair to lookup from the registry to use for KEM operations.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('provider', 'Provider', "The JCE security provider to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('keyGenerator', 'Key Generator', "Refers to a custom KeyGenerator to lookup from the registry for KEM operations.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('parquetAvro', 'ParquetAvroDataFormat', 'Parquet File', "Parquet Avro serialization and de-serialization.", 'dataformat,transformation,file', [
+    new ElementMeta('parquetAvro', 'ParquetAvroDataFormat', 'Parquet File', "Parquet Avro serialization and de-serialization", 'dataformat,transformation,file', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('compressionCodecName', 'Compression Codec Name', "Compression codec to use when marshalling.", 'string', 'UNCOMPRESSED, SNAPPY, GZIP, LZO, BROTLI, LZ4, ZSTD, LZ4_RAW', 'GZIP', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class to use when (un)marshalling. If omitted, parquet files are converted into Avro's GenericRecords for unmarshalling and input objects are assumed as GenericRecords for marshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class to use when (un)marshalling. If omitted, parquet files are converted into Avro GenericRecords for unmarshalling and input objects are assumed as GenericRecords for marshalling.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator of records or read all the records at once.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('protobuf', 'ProtobufDataFormat', 'Protobuf', "Serialize and deserialize Java objects using Google's Protocol buffers.", 'dataformat,transformation', [
+    new ElementMeta('protobuf', 'ProtobufDataFormat', 'Protobuf', "Serialize and deserialize Java objects using Google's Protocol buffers", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('instanceClass', 'Instance Class', "Name of class to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('instanceClass', 'Instance Class', "Name of class to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will lookup for an objectMapper into the registry", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will lookup for an objectMapper into the registry.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('library', 'Library', "Which Protobuf library to use.", 'string', 'GoogleProtobuf, Jackson', 'GoogleProtobuf', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('include', 'Include', "If you want to marshal a pojo to JSON, and the pojo has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('jsonView', 'Json View', "When marshalling a POJO to JSON you might want to exclude certain fields from the JSON output. With Jackson you can use JSON views to accomplish this. This option is to refer to the class which has JsonView annotations.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('include', 'Include', "If you want to marshal a pojo to JSON, and the pojo has some fields with null values. And you want to skip these null values, you can set this option to NON_NULL.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('allowJmsType', 'Allow Jms Type', "Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to use different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('collectionType', 'Collection Type', "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows using different collection types than java.util.Collection based as default.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('useList', 'Use List', "To unmarshal to a List of Map or a List of Pojo.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('moduleClassNames', 'Module Class Names', "To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class names. Multiple classes can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('moduleRefs', 'Module Refs', "To use custom Jackson modules referred from the Camel registry. Multiple modules can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling. This should only be enabled when desired to be used.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowUnmarshallType', 'Allow Unmarshall Type', "If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('timezone', 'Timezone', "If set then Jackson will use the Timezone when marshalling/unmarshalling.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('schemaResolver', 'Schema Resolver', "Optional schema resolver used to lookup schemas for the data in transit.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('contentTypeFormat', 'Content Type Format', "Defines a content type format in which protobuf message will be serialized/deserialized from(to) the Java been. The format can either be native or json for either native protobuf or json fields representation. The default value is native.", 'string', 'native, json', 'native', false, false, false, false, '', ''),
+        new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('contentTypeFormat', 'Content Type Format', "Defines a content type format in which protobuf message will be serialized/deserialized from(to) the Java been. The format can either be native or json for either native protobuf or json fields representation.", 'string', 'native, json', 'native', false, false, false, false, '', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('rss', 'RssDataFormat', 'RSS', "Transform from ROME SyndFeed Java Objects to XML and vice-versa.", 'dataformat,transformation', [
+    new ElementMeta('rss', 'RssDataFormat', 'RSS', "Transform from ROME SyndFeed Java Objects to XML and vice-versa", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('smooks', 'SmooksDataFormat', 'Smooks', "Transform and bind XML as well as non-XML data, including EDI, CSV, JSON, and YAML using Smooks.", 'dataformat,transformation', [
+    new ElementMeta('smooks', 'SmooksDataFormat', 'Smooks', "Transform and bind XML as well as non-XML data, including EDI, CSV, JSON, and YAML using Smooks", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('smooksConfig', 'Smooks Config', "Path to the Smooks configuration file.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('soap', 'SoapDataFormat', 'SOAP', "Marshal Java objects to SOAP messages and back.", 'dataformat,transformation,xml', [
+    new ElementMeta('soap', 'SoapDataFormat', 'SOAP', "Marshal Java objects to SOAP messages and back", 'dataformat,transformation,xml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('contextPath', 'Context Path', "Package name where your JAXB classes are located.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('elementNameStrategy', 'Element Name Strategy', "Refers to an element strategy to lookup from the registry. An element name strategy is used for two purposes. The first is to find a xml element name for a given object and soap action when marshaling the object into a SOAP message. The second is to find an Exception class for a given soap fault name. The following three element strategy class name is provided out of the box. QNameStrategy - Uses a fixed qName that [...]
-        new PropertyMeta('version', 'Version', "SOAP version should either be 1.1 or 1.2. Is by default 1.1", 'string', '1.1, 1.2', '1.1', false, false, false, false, '', ''),
-        new PropertyMeta('namespacePrefix', 'Namespace Prefix', "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('schema', 'Schema', "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreUnmarshalledHeaders', 'Ignore Unmarshalled Headers', "Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST header which allows to inspect any problematic header.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('elementNameStrategy', 'Element Name Strategy', "Refers to an element strategy to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('version', 'Version', "SOAP version should either be 1.1 or 1.2. Is by default 1.1.", 'string', '1.1, 1.2', '1.1', false, false, false, false, '', ''),
+        new PropertyMeta('namespacePrefix', 'Namespace Prefix', "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('schema', 'Schema', "To validate against an existing schema. You can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreUnmarshalledHeaders', 'Ignore Unmarshalled Headers', "Whether to ignore headers that were not unmarshalled.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('swiftMt', 'SwiftMtDataFormat', 'SWIFT MT', "Encode and decode SWIFT MT messages.", 'dataformat,transformation,finance', [
+    new ElementMeta('swiftMt', 'SwiftMtDataFormat', 'SWIFT MT', "Encode and decode SWIFT MT messages", 'dataformat,transformation,finance', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('writeInJson', 'Write In Json', "Whether to marshal messages in JSON format.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('swiftMx', 'SwiftMxDataFormat', 'SWIFT MX', "Encode and decode SWIFT MX messages.", 'dataformat,transformation,finance', [
+    new ElementMeta('swiftMx', 'SwiftMxDataFormat', 'SWIFT MX', "Encode and decode SWIFT MX messages", 'dataformat,transformation,finance', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('writeInJson', 'Write In Json', "Whether to marshal messages in JSON format.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('readMessageId', 'Read Message Id', "The type of MX message to produce when unmarshalling an input stream. If not set, it will be automatically detected from the namespace used.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('readConfig', 'Read Config', "Refers to a specific configuration to use when unmarshalling an input stream to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('writeConfig', 'Write Config', "Refers to a specific configuration to use when marshalling a message to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('syslog', 'SyslogDataFormat', 'Syslog', "Marshall SyslogMessages to RFC3164 and RFC5424 messages and back.", 'dataformat,transformation,monitoring', [
+    new ElementMeta('syslog', 'SyslogDataFormat', 'Syslog', "Marshall SyslogMessages to RFC3164 and RFC5424 messages and back", 'dataformat,transformation,monitoring', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('tarFile', 'TarFileDataFormat', 'Tar File', "Archive files into tarballs or extract files from tarballs.", 'dataformat,transformation,file', [
+    new ElementMeta('tarFile', 'TarFileDataFormat', 'Tar File', "Archive files into tarballs or extract files from tarballs", 'dataformat,transformation,file', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('usingIterator', 'Using Iterator', "If the tar file has more than one entry, the setting this option to true, allows working with the splitter EIP, to split the data using an iterator in a streaming mode.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('allowEmptyDirectory', 'Allow Empty Directory', "If the tar file has more than one entry, setting this option to true, allows to get the iterator even if the directory is empty", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('preservePathElements', 'Preserve Path Elements', "If the file name contains path elements, setting this option to true, allows the path to be maintained in the tar file.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('maxDecompressedSize', 'Max Decompressed Size', "Set the maximum decompressed size of a tar file (in bytes). The default value if not specified corresponds to 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable setting a maximum decompressed size.", 'number', '', '1073741824', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('usingIterator', 'Using Iterator', "Whether to use an iterator to split tar entries when the tar file has more than one entry, for use with the splitter EIP in streaming mode.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowEmptyDirectory', 'Allow Empty Directory', "Whether to allow getting the iterator even if the directory is empty, when the tar file has more than one entry.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('preservePathElements', 'Preserve Path Elements', "Whether to preserve path elements when the file name contains path elements in the tar file.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('maxDecompressedSize', 'Max Decompressed Size', "The maximum decompressed size of a tar file (in bytes). An IOException is thrown if the decompressed size exceeds this amount. Set to -1 to disable.", 'number', '', '1073741824', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('thrift', 'ThriftDataFormat', 'Thrift', "Serialize and deserialize messages using Apache Thrift binary data format.", 'dataformat,transformation', [
+    new ElementMeta('thrift', 'ThriftDataFormat', 'Thrift', "Serialize and deserialize messages using Apache Thrift binary data format", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('instanceClass', 'Instance Class', "Name of class to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('contentTypeFormat', 'Content Type Format', "Defines a content type format in which thrift message will be serialized/deserialized from(to) the Java been. The format can either be native or json for either native binary thrift, json or simple json fields representation. The default value is binary.", 'string', 'binary, json, sjson', 'binary', false, false, false, false, '', ''),
+        new PropertyMeta('instanceClass', 'Instance Class', "Name of class to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('contentTypeFormat', 'Content Type Format', "The content type format in which thrift message will be serialized/deserialized. The format can be native binary, json, or simple json.", 'string', 'binary, json, sjson', 'binary', false, false, false, false, '', ''),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('univocityCsv', 'UniVocityCsvDataFormat', 'uniVocity CSV', "Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers.", 'dataformat,transformation,csv', [
+    new ElementMeta('univocityCsv', 'UniVocityCsvDataFormat', 'uniVocity CSV', "Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('delimiter', 'Delimiter', "The delimiter of values", 'string', '', ',', false, false, false, false, '', ''),
+        new PropertyMeta('delimiter', 'Delimiter', "The delimiter of values.", 'string', '', ',', false, false, false, false, '', ''),
         new PropertyMeta('quoteAllFields', 'Quote All Fields', "Whether or not all values must be quoted when writing them.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('quote', 'Quote', "The quote symbol.", 'string', '', '"', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('quoteEscape', 'Quote Escape', "The quote escape symbol", 'string', '', '"', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value. The default value is null", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('quoteEscape', 'Quote Escape', "The quote escape symbol.", 'string', '', '"', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('numberOfRecordsToRead', 'Number Of Records To Read', "The maximum number of record to read.", 'number', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files. The default value is a new line character.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('comment', 'Comment', "The comment symbol.", 'string', '', '#', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('univocityFixed', 'UniVocityFixedDataFormat', 'uniVocity Fixed Length', "Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers.", 'dataformat,transformation,csv', [
+    new ElementMeta('univocityFixed', 'UniVocityFixedDataFormat', 'uniVocity Fixed Length', "Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('padding', 'Padding', "The padding character. The default value is a space", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('skipTrailingCharsUntilNewline', 'Skip Trailing Chars Until Newline', "Whether or not the trailing characters until new line must be ignored. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('recordEndsOnNewline', 'Record Ends On Newline', "Whether or not the record ends on new line. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value. The default value is null", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('padding', 'Padding', "The padding character. The default value is a space.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('skipTrailingCharsUntilNewline', 'Skip Trailing Chars Until Newline', "Whether to skip trailing characters until a new line is found.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('recordEndsOnNewline', 'Record Ends On Newline', "Whether the record ends on a new line.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('numberOfRecordsToRead', 'Number Of Records To Read', "The maximum number of record to read.", 'number', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files. The default value is a new line character.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('comment', 'Comment', "The comment symbol.", 'string', '', '#', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('univocityTsv', 'UniVocityTsvDataFormat', 'uniVocity TSV', "Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers.", 'dataformat,transformation,csv', [
+    new ElementMeta('univocityTsv', 'UniVocityTsvDataFormat', 'uniVocity TSV', "Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers", 'dataformat,transformation,csv', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('escapeChar', 'Escape Char', "The escape character.", 'string', '', '\\', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value. The default value is null", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('numberOfRecordsToRead', 'Number Of Records To Read', "The maximum number of record to read.", 'number', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files. The default value is a new line character.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('comment', 'Comment', "The comment symbol.", 'string', '', '#', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('xmlSecurity', 'XMLSecurityDataFormat', 'XML Security', "Encrypt and decrypt XML payloads using Apache Santuario.", 'dataformat,transformation,xml', [
+    new ElementMeta('xmlSecurity', 'XMLSecurityDataFormat', 'XML Security', "Encrypt and decrypt XML payloads using Apache Santuario", 'dataformat,transformation,security,xml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('xmlCipherAlgorithm', 'Xml Cipher Algorithm', "The cipher algorithm to be used for encryption/decryption of the XML message content. The available choices are: XMLCipher.TRIPLEDES XMLCipher.AES_128 XMLCipher.AES_128_GCM XMLCipher.AES_192 XMLCipher.AES_192_GCM XMLCipher.AES_256 XMLCipher.AES_256_GCM XMLCipher.SEED_128 XMLCipher.CAMELLIA_128 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256 The default value is XMLCipher.AES_256_GCM", 'string', 'TRIPLEDES, AES_128, AES [...]
-        new PropertyMeta('passPhrase', 'Pass Phrase', "A String used as passPhrase to encrypt/decrypt content. The passPhrase has to be provided. The passPhrase needs to be put together in conjunction with the appropriate encryption algorithm. For example using TRIPLEDES the passPhase can be a Only another 24 Byte key", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('passPhraseByte', 'Pass Phrase Byte', "A byte used as passPhrase to encrypt/decrypt content. The passPhrase has to be provided. The passPhrase needs to be put together in conjunction with the appropriate encryption algorithm. For example using TRIPLEDES the passPhase can be a Only another 24 Byte key", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('xmlCipherAlgorithm', 'Xml Cipher Algorithm', "The cipher algorithm to be used for encryption/decryption of the XML message content.", 'string', 'TRIPLEDES, AES_128, AES_128_GCM, AES_192, AES_192_GCM, AES_256, AES_256_GCM, SEED_128, CAMELLIA_128, CAMELLIA_192, CAMELLIA_256', 'AES-256-GCM', false, false, false, false, '', ''),
+        new PropertyMeta('passPhrase', 'Pass Phrase', "A String used as passPhrase to encrypt/decrypt content.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('passPhraseByte', 'Pass Phrase Byte', "A byte used as passPhrase to encrypt/decrypt content.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('secureTag', 'Secure Tag', "The XPath reference to the XML Element selected for encryption/decryption. If no tag is specified, the entire payload is encrypted/decrypted.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('secureTagContents', 'Secure Tag Contents', "A boolean value to specify whether the XML Element is to be encrypted or the contents of the XML Element. false = Element Level. true = Element Content Level.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('keyCipherAlgorithm', 'Key Cipher Algorithm', "The cipher algorithm to be used for encryption/decryption of the asymmetric key. The available choices are: XMLCipher.RSA_v1dot5 XMLCipher.RSA_OAEP XMLCipher.RSA_OAEP_11 The default value is XMLCipher.RSA_OAEP", 'string', 'RSA_v1dot5, RSA_OAEP, RSA_OAEP_11', 'RSA_OAEP', false, false, false, false, '', ''),
+        new PropertyMeta('secureTagContents', 'Secure Tag Contents', "A boolean value to specify whether the XML Element is to be encrypted or the contents of the XML Element. false = Element Level, true = Element Content Level.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('keyCipherAlgorithm', 'Key Cipher Algorithm', "The cipher algorithm to be used for encryption/decryption of the asymmetric key.", 'string', 'RSA_v1dot5, RSA_OAEP, RSA_OAEP_11', 'RSA_OAEP', false, false, false, false, '', ''),
         new PropertyMeta('recipientKeyAlias', 'Recipient Key Alias', "The key alias to be used when retrieving the recipient's public or private key from a KeyStore when performing asymmetric key encryption or decryption.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('keyOrTrustStoreParameters', 'Key Or Trust Store Parameters', "Refers to a KeyStore instance to lookup in the registry, which is used for configuration options for creating and loading a KeyStore instance that represents the sender's trustStore or recipient's keyStore.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('keyPassword', 'Key Password', "The password to be used for retrieving the private key from the KeyStore. This key is used for asymmetric decryption.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('digestAlgorithm', 'Digest Algorithm', "The digest algorithm to use with the RSA OAEP algorithm. The available choices are: XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512 The default value is XMLCipher.SHA1", 'string', 'SHA1, SHA256, SHA512', 'SHA1', false, false, false, false, '', ''),
-        new PropertyMeta('mgfAlgorithm', 'Mgf Algorithm', "The MGF Algorithm to use with the RSA OAEP algorithm. The available choices are: EncryptionConstants.MGF1_SHA1 EncryptionConstants.MGF1_SHA256 EncryptionConstants.MGF1_SHA512 The default value is EncryptionConstants.MGF1_SHA1", 'string', 'MGF1_SHA1, MGF1_SHA256, MGF1_SHA512', 'MGF1_SHA1', false, false, false, false, '', ''),
+        new PropertyMeta('digestAlgorithm', 'Digest Algorithm', "The digest algorithm to use with the RSA OAEP algorithm.", 'string', 'SHA1, SHA256, SHA512', 'SHA1', false, false, false, false, '', ''),
+        new PropertyMeta('mgfAlgorithm', 'Mgf Algorithm', "The MGF Algorithm to use with the RSA OAEP algorithm.", 'string', 'MGF1_SHA1, MGF1_SHA256, MGF1_SHA512', 'MGF1_SHA1', false, false, false, false, '', ''),
         new PropertyMeta('addKeyValueForEncryptedKey', 'Add Key Value For Encrypted Key', "Whether to add the public key used to encrypt the session key as a KeyValue in the EncryptedKey structure or not.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('namespace', 'Namespace', "Refers to a Map XML Namespaces of prefix - uri mappings", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('namespace', 'Namespace', "Refers to a Map of XML Namespaces of prefix to uri mappings.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('yaml', 'YAMLDataFormat', 'YAML', "Marshal and unmarshal Java objects to and from YAML.", 'dataformat,transformation,yaml', [
+    new ElementMeta('yaml', 'YAMLDataFormat', 'YAML', "Marshal and unmarshal Java objects to and from YAML", 'dataformat,transformation,yaml', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('library', 'Library', "Which yaml library to use. By default it is SnakeYAML", 'string', 'SnakeYAML', 'SnakeYAML', false, false, false, false, '', ''),
-        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('library', 'Library', "Which yaml library to use. By default it is SnakeYAML.", 'string', 'SnakeYAML', 'SnakeYAML', false, false, false, false, '', ''),
+        new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('_constructor', 'Constructor', "BaseConstructor to construct incoming documents.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('representer', 'Representer', "Representer to emit outgoing objects.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('dumperOptions', 'Dumper Options', "DumperOptions to configure outgoing objects.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('resolver', 'Resolver', "Resolver to detect implicit type", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useApplicationContextClassLoader', 'Use Application Context Class Loader', "Use ApplicationContextClassLoader as custom ClassLoader", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('resolver', 'Resolver', "Resolver to detect implicit type.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useApplicationContextClassLoader', 'Use Application Context Class Loader', "Use ApplicationContextClassLoader as custom ClassLoader.", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('prettyFlow', 'Pretty Flow', "Force the emitter to produce a pretty YAML document when using the flow style.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('allowAnyType', 'Allow Any Type', "Allow any class to be un-marshaled", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowAnyType', 'Allow Any Type', "Allow any class to be un-marshaled.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('typeFilter', 'Type Filter', "Set the types SnakeYAML is allowed to un-marshall. Multiple types can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('maxAliasesForCollections', 'Max Aliases For Collections', "Set the maximum amount of aliases allowed for collections.", 'number', '', '50', false, false, false, false, 'advanced', ''),
         new PropertyMeta('allowRecursiveKeys', 'Allow Recursive Keys', "Set whether recursive keys are allowed.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('zipDeflater', 'ZipDeflaterDataFormat', 'Zip Deflater', "Compress and decompress streams using java.util.zip.Deflater and java.util.zip.Inflater.", 'dataformat,transformation', [
+    new ElementMeta('zipDeflater', 'ZipDeflaterDataFormat', 'Zip Deflater', "Compress and decompress streams using java.util.zip.Deflater and java.util.zip.Inflater", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('compressionLevel', 'Compression Level', "To specify a specific compression between 0-9. -1 is default compression, 0 is no compression, and 9 is the best compression.", 'string', '-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9', '-1', false, false, false, false, '', ''),
+        new PropertyMeta('compressionLevel', 'Compression Level', "Compression level to use (0-9). -1 is default compression, 0 is no compression, and 9 is the best compression.", 'string', '-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9', '-1', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('zipFile', 'ZipFileDataFormat', 'Zip File', "Compression and decompress streams using java.util.zip.ZipStream.", 'dataformat,transformation,file', [
+    new ElementMeta('zipFile', 'ZipFileDataFormat', 'Zip File', "Compression and decompress streams using java.util.zip.Zip*Stream", 'dataformat,transformation,file', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('usingIterator', 'Using Iterator', "If the zip file has more than one entry, the setting this option to true, allows working with the splitter EIP, to split the data using an iterator in a streaming mode.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('allowEmptyDirectory', 'Allow Empty Directory', "If the zip file has more than one entry, setting this option to true, allows to get the iterator even if the directory is empty", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('allowEmptyDirectory', 'Allow Empty Directory', "If the zip file has more than one entry, setting this option to true, allows to get the iterator even if the directory is empty.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('preservePathElements', 'Preserve Path Elements', "If the file name contains path elements, setting this option to true, allows the path to be maintained in the zip file.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('maxDecompressedSize', 'Max Decompressed Size', "Set the maximum decompressed size of a zip file (in bytes). The default value if not specified corresponds to 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable setting a maximum decompressed size.", 'number', '', '1073741824', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('maxDecompressedSize', 'Max Decompressed Size', "Set the maximum decompressed size of a zip file (in bytes). The default value if not specified corresponds to 1 gigabyte. Set to -1 to disable setting a maximum decompressed size.", 'number', '', '1073741824', false, false, false, false, 'advanced', ''),
     ], [
     ]),
 ]
 
 export const Languages: [string, string, string][] = [
-    ['constant','Constant',"A fixed value set only once during the route startup."],
-    ['csimple','CSimple',"Evaluate a compiled simple expression."],
-    ['datasonnet','DataSonnet',"To use DataSonnet scripts for message transformations."],
-    ['exchangeProperty','ExchangeProperty',"Gets a property from the Exchange."],
-    ['groovy','Groovy',"Evaluates a Groovy script."],
-    ['header','Header',"Gets a header from the Exchange."],
-    ['hl7terser','HL7 Terser',"Get the value of a HL7 message field specified by terse location specification syntax."],
-    ['java','Java',"Evaluates a Java (Java compiled once at runtime) expression."],
-    ['jq','JQ',"Evaluates a JQ expression against a JSON message body."],
-    ['js','JavaScript',"Evaluates a JavaScript expression."],
-    ['jsonpath','JSONPath',"Evaluates a JSONPath expression against a JSON message body."],
-    ['language','Language',"Evaluates a custom language."],
-    ['method','Bean Method',"Calls a Java bean method."],
-    ['mvel','MVEL',"Evaluates a MVEL template."],
-    ['ognl','OGNL',"Evaluates an OGNL expression (Apache Commons OGNL)."],
-    ['python','Python',"Evaluates a Python expression."],
-    ['ref','Ref',"Uses an existing expression from the registry."],
-    ['simple','Simple',"Evaluates a Camel simple expression."],
-    ['spel','SpEL',"Evaluates a Spring expression (SpEL)."],
-    ['tokenize','Tokenize',"Tokenize text payloads using delimiter patterns."],
+    ['constant','Constant',"A fixed value set only once during the route startup"],
+    ['csimple','CSimple',"Evaluate a compiled simple expression"],
+    ['datasonnet','DataSonnet',"To use DataSonnet scripts for message transformations"],
+    ['exchangeProperty','ExchangeProperty',"Gets a property from the Exchange"],
+    ['groovy','Groovy',"Evaluates a Groovy script"],
+    ['header','Header',"Gets a header from the Exchange"],
+    ['hl7terser','HL7 Terser',"Get the value of a HL7 message field specified by terse location specification syntax"],
+    ['jactl','Jactl',"Evaluates a Jactl script"],
+    ['java','Java',"Evaluates a Java (Java compiled once at runtime) expression"],
+    ['jq','JQ',"Evaluates a JQ expression against a JSON message body"],
+    ['js','JavaScript',"Evaluates a JavaScript expression"],
+    ['jsonpath','JSONPath',"Evaluates a JSONPath expression against a JSON message body"],
+    ['language','Language',"Evaluates a custom language"],
+    ['method','Bean Method',"Calls a Java bean method"],
+    ['mvel','MVEL',"Evaluates a MVEL template"],
+    ['ognl','OGNL',"Evaluates an OGNL expression (Apache Commons OGNL)"],
+    ['python','Python',"Evaluates a Python expression"],
+    ['ref','Ref',"Uses an existing expression from the registry"],
+    ['simple','Simple',"Evaluates a Camel simple expression"],
+    ['spel','SpEL',"Evaluates a Spring expression (SpEL)"],
+    ['tokenize','Tokenize',"Tokenize text payloads using delimiter patterns"],
     ['variable','Variable',"Gets a variable"],
-    ['wasm','Wasm',"Call a wasm (web assembly) function."],
-    ['xpath','XPath',"Evaluates an XPath expression against an XML payload."],
-    ['xquery','XQuery',"Evaluates an XQuery expressions against an XML payload."],
-    ['xtokenize','XML Tokenize',"Tokenize XML payloads."],
+    ['wasm','Wasm',"Call a wasm (web assembly) function"],
+    ['xpath','XPath',"Evaluates an XPath expression against an XML payload"],
+    ['xquery','XQuery',"Evaluates an XQuery expressions against an XML payload"],
+    ['xtokenize','XML Tokenize',"Tokenize XML payloads"],
 ]
 
 export const CamelLanguageMetadata: ElementMeta[] = [
-    new ElementMeta('csimple', 'CSimpleExpression', 'CSimple', "Evaluate a compiled simple expression.", 'language,java', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('trimResult', 'Trim Result', "Whether to trim the returned values when this language are in use. For example the output result may contain unwanted line breaks at the beginning and end such as when using Java DSL with multi-line blocks. Is default false to be backwards compatible with existing behavior.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('pretty', 'Pretty', "To pretty format the output (only JSon or XML supported)", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-    ], [
-    ]),
-    new ElementMeta('constant', 'ConstantExpression', 'Constant', "A fixed value set only once during the route startup.", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-    ], [
-    ]),
-    new ElementMeta('datasonnet', 'DatasonnetExpression', 'DataSonnet', "To use DataSonnet scripts for message transformations.", 'language,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('bodyMediaType', 'Body Media Type', "The String representation of the message's body MediaType", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('outputMediaType', 'Output Media Type', "The String representation of the MediaType to output", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('constant', 'ConstantExpression', 'Constant', "A fixed value set only once during the route startup", 'language,core', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    ], [
+    ]),
+    new ElementMeta('datasonnet', 'DatasonnetExpression', 'DataSonnet', "To use DataSonnet scripts for message transformations", 'language,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('bodyMediaType', 'Body Media Type', "The media type of the message body, such as application/json.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('outputMediaType', 'Output Media Type', "The media type to use for the output result.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('exchangeProperty', 'ExchangePropertyExpression', 'ExchangeProperty', "Gets a property from the Exchange.", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('exchangeProperty', 'ExchangePropertyExpression', 'ExchangeProperty', "Gets a property from the Exchange", 'language,core', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('groovy', 'GroovyExpression', 'Groovy', "Evaluates a Groovy script.", 'language,script', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('groovy', 'GroovyExpression', 'Groovy', "Evaluates a Groovy script", 'language,script', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('header', 'HeaderExpression', 'Header', "Gets a header from the Exchange.", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('header', 'HeaderExpression', 'Header', "Gets a header from the Exchange", 'language,core', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('hl7terser', 'Hl7TerserExpression', 'HL7 Terser', "Get the value of a HL7 message field specified by terse location specification syntax.", 'language,hl7', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('hl7terser', 'Hl7TerserExpression', 'HL7 Terser', "Get the value of a HL7 message field specified by terse location specification syntax", 'language,hl7', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    ], [
+    ]),
+    new ElementMeta('jactl', 'JactlExpression', 'Jactl', "Evaluates a Jactl script", 'language,script', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('java', 'JavaExpression', 'Java', "Evaluates a Java (Java compiled once at runtime) expression.", 'language', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('java', 'JavaExpression', 'Java', "Evaluates a Java (Java compiled once at runtime) expression", 'language', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('preCompile', 'Pre Compile', "Whether the expression should be pre compiled once during initialization phase. If this is turned off, then the expression is reloaded and compiled on each evaluation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('singleQuotes', 'Single Quotes', "Whether single quotes can be used as replacement for double quotes. This is convenient when you need to work with strings inside strings.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('js', 'JavaScriptExpression', 'JavaScript', "Evaluates a JavaScript expression.", 'language,javascript', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('js', 'JavaScriptExpression', 'JavaScript', "Evaluates a JavaScript expression", 'language,javascript', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('jq', 'JqExpression', 'JQ', "Evaluates a JQ expression against a JSON message body.", 'language,json', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('jq', 'JqExpression', 'JQ', "Evaluates a JQ expression against a JSON message body", 'language,json', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('jsonpath', 'JsonPathExpression', 'JSONPath', "Evaluates a JSONPath expression against a JSON message body.", 'language,json', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('jsonpath', 'JsonPathExpression', 'JSONPath', "Evaluates a JSONPath expression against a JSON message body", 'language,json', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('suppressExceptions', 'Suppress Exceptions', "Whether to suppress exceptions such as PathNotFoundException.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('allowSimple', 'Allow Simple', "Whether to allow in inlined Simple exceptions in the JSONPath expression", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowSimple', 'Allow Simple', "Whether to allow in inlined Simple exceptions in the JSONPath expression.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('allowEasyPredicate', 'Allow Easy Predicate', "Whether to allow using the easy predicate parser to pre-parse predicates.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('writeAsString', 'Write As String', "Whether to write the output of each row/element as a JSON String value instead of a Map/POJO value.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('unpackArray', 'Unpack Array', "Whether to unpack a single element json-array into an object.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('option', 'Option', "To configure additional options on JSONPath. Multiple values can be separated by comma.", 'string', 'DEFAULT_PATH_LEAF_TO_NULL, ALWAYS_RETURN_LIST, AS_PATH_LIST, SUPPRESS_EXCEPTIONS, REQUIRE_PROPERTIES', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('language', 'LanguageExpression', 'Language', "Evaluates a custom language.", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('language', 'Language', "The name of the language to use", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('language', 'LanguageExpression', 'Language', "Evaluates a custom language", 'language,core', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('language', 'Language', "The name of the language to use.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('method', 'MethodCallExpression', 'Bean Method', "Calls a Java bean method.", 'language,core,java', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ref', 'Ref', "Reference to an existing bean (bean id) to lookup in the registry", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('method', 'Method', "Name of method to call", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('beanType', 'Bean Type', "Class name (fully qualified) of the bean to use Will lookup in registry and if there is a single instance of the same type, then the existing bean is used, otherwise a new bean is created (requires a default no-arg constructor).", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance  [...]
+    new ElementMeta('method', 'MethodCallExpression', 'Bean Method', "Calls a Java bean method", 'language,core,java', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to an existing bean (bean id) to lookup in the registry.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('method', 'Method', "Name of method to call.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('beanType', 'Bean Type', "Class name (fully qualified) of the bean to use. Will lookup in registry and if there is a single instance of the same type, then the existing bean is used, otherwise a new bean is created (requires a default no-arg constructor).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint.", 'string', 'Singleton, Request, Prototype', 'Singleton', false, false, false, false, 'advanced', ''),
         new PropertyMeta('validate', 'Validate', "Whether to validate the bean has the configured method.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('mvel', 'MvelExpression', 'MVEL', "Evaluates a MVEL template.", 'language,java', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('mvel', 'MvelExpression', 'MVEL', "Evaluates a MVEL template", 'language,java', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('python', 'PythonExpression', 'Python', "Evaluates a Python expression.", 'language,python', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('python', 'PythonExpression', 'Python', "Evaluates a Python expression", 'language,python', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('ref', 'RefExpression', 'Ref', "Uses an existing expression from the registry.", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('ref', 'RefExpression', 'Ref', "Uses an existing expression from the registry", 'language,core', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('simple', 'SimpleExpression', 'Simple', "Evaluates a Camel simple expression.", 'language,core,java', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('trimResult', 'Trim Result', "Whether to trim the returned values when this language are in use. For example the output result may contain unwanted line breaks at the beginning and end such as when using Java DSL with multi-line blocks. Is default false to be backwards compatible with existing behavior.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('pretty', 'Pretty', "To pretty format the output (only JSon or XML supported)", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('nested', 'Nested', "If the result is a nested simple expression should this expression be evaluated as well", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('simple', 'SimpleExpression', 'Simple', "Evaluates a Camel simple expression", 'language,core,java', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('trimResult', 'Trim Result', "Whether to trim the returned values when this language is in use.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('pretty', 'Pretty', "To pretty format the output (only JSon or XML supported).", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('nested', 'Nested', "If the result is a nested simple expression should this expression be evaluated as well.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('spel', 'SpELExpression', 'SpEL', "Evaluates a Spring expression (SpEL).", 'language,spring', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    new ElementMeta('spel', 'SpELExpression', 'SpEL', "Evaluates a Spring expression (SpEL)", 'language,spring', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('tokenize', 'TokenizerExpression', 'Tokenize', "Tokenize text payloads using delimiter patterns.", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('tokenize', 'TokenizerExpression', 'Tokenize', "Tokenize text payloads using delimiter patterns", 'language,core', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('token', 'Token', "The (start) token to use as tokenizer, for example you can use the new line token. You can use simple language as the token to support dynamic tokens.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('endToken', 'End Token', "The end token to use as tokenizer if using start/end token pairs. You can use simple language as the token to support dynamic tokens.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('inheritNamespaceTagName', 'Inherit Namespace Tag Name', "To inherit namespaces from a root/parent tag name when using XML You can use simple language as the tag name to support dynamic names.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('regex', 'Regex', "If the token is a regular expression pattern. The default value is false", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('inheritNamespaceTagName', 'Inherit Namespace Tag Name', "To inherit namespaces from a root/parent tag name when using XML. You can use simple language as the tag name to support dynamic names.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('regex', 'Regex', "If the token is a regular expression pattern.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('xml', 'Xml', "Whether the input is XML messages. This option must be set to true if working with XML payloads.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('includeTokens', 'Include Tokens', "Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property must also be configured (to use pair mode). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('includeTokens', 'Include Tokens', "Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property must also be configured (to use pair mode).", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('group', 'Group', "To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('groupDelimiter', 'Group Delimiter', "Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('skipFirst', 'Skip First', "To skip the very first element", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('skipFirst', 'Skip First', "To skip the very first element.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
     new ElementMeta('variable', 'VariableExpression', 'Variable', "Gets a variable", 'language,core', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('wasm', 'WasmExpression', 'Wasm', "Call a wasm (web assembly) function.", 'language', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('wasm', 'WasmExpression', 'Wasm', "Call a wasm (web assembly) function", 'language', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('module', 'Module', "Set the module (the distributable, loadable, and executable unit of code in WebAssembly) resource that provides the expression function.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('xtokenize', 'XMLTokenizerExpression', 'XML Tokenize', "Tokenize XML payloads.", 'language,core,xml', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('mode', 'Mode', "The extraction mode. The available extraction modes are: i - injecting the contextual namespace bindings into the extracted token (default) w - wrapping the extracted token in its ancestor context u - unwrapping the extracted token to its child content t - extracting the text content of the specified element", 'string', 'i, w, u, t', 'i', false, false, false, false, '', ''),
-        new PropertyMeta('group', 'Group', "To group N parts together", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix - uri mappings", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
+    new ElementMeta('xtokenize', 'XMLTokenizerExpression', 'XML Tokenize', "Tokenize XML payloads", 'language,core,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('mode', 'Mode', "The extraction mode. The available extraction modes are: i - injecting the contextual namespace bindings into the extracted token (default), w - wrapping the extracted token in its ancestor context, u - unwrapping the extracted token to its child content, t - extracting the text content of the specified element.", 'string', 'i, w, u, t', 'i', false, false, false, false, '', ''),
+        new PropertyMeta('group', 'Group', "To group N parts together.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix to uri mappings.", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('xpath', 'XPathExpression', 'XPath', "Evaluates an XPath expression against an XML payload.", 'language,core,xml', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('documentType', 'Document Type', "Name of class for document type The default value is org.w3c.dom.Document", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('xpath', 'XPathExpression', 'XPath', "Evaluates an XPath expression against an XML payload", 'language,core,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('documentType', 'Document Type', "Name of class for document type. The default value is org.w3c.dom.Document.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('resultQName', 'Result QName', "Sets the output type supported by XPath.", 'string', 'NUMBER, STRING, BOOLEAN, NODESET, NODE', 'NODESET', false, false, false, false, '', ''),
         new PropertyMeta('saxon', 'Saxon', "Whether to use Saxon.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('factoryRef', 'Factory Ref', "References to a custom XPathFactory to lookup in the registry", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('objectModel', 'Object Model', "The XPath object model to use", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logNamespaces', 'Log Namespaces', "Whether to log namespaces which can assist during troubleshooting", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('threadSafety', 'Thread Safety', "Whether to enable thread-safety for the returned result of the xpath expression. This applies to when using NODESET as the result type, and the returned set has multiple elements. In this situation there can be thread-safety issues if you process the NODESET concurrently such as from a Camel Splitter EIP in parallel processing mode. This option prevents concurrency issues by doing defensive copies of the nodes. It is recommended  [...]
-        new PropertyMeta('preCompile', 'Pre Compile', "Whether to enable pre-compiling the xpath expression during initialization phase. pre-compile is enabled by default. This can be used to turn off, for example in cases the compilation phase is desired at the starting phase, such as if the application is ahead of time compiled (for example with camel-quarkus) which would then load the xpath factory of the built operating system, and not a JVM runtime.", 'boolean', '', 'true', false, f [...]
-        new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix - uri mappings", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
+        new PropertyMeta('factoryRef', 'Factory Ref', "References to a custom XPathFactory to lookup in the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('objectModel', 'Object Model', "The XPath object model to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logNamespaces', 'Log Namespaces', "Whether to log namespaces which can assist during troubleshooting.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('threadSafety', 'Thread Safety', "Whether to enable thread-safety for the returned result of the xpath expression. This applies to when using NODESET as the result type, and the returned set has multiple elements.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('preCompile', 'Pre Compile', "Whether to enable pre-compiling the xpath expression during initialization phase. pre-compile is enabled by default.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix to uri mappings.", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('xquery', 'XQueryExpression', 'XQuery', "Evaluates an XQuery expressions against an XML payload.", 'language,xml', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('configurationRef', 'Configuration Ref', "Reference to a saxon configuration instance in the registry to use for xquery (requires camel-saxon). This may be needed to add custom functions to a saxon configuration, so these custom functions can be used in xquery expressions.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix - uri mappings", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
+    new ElementMeta('xquery', 'XQueryExpression', 'XQuery', "Evaluates an XQuery expressions against an XML payload", 'language,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('configurationRef', 'Configuration Ref', "Reference to a saxon configuration instance in the registry to use for xquery (requires camel-saxon).", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix to uri mappings.", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
         new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resultType', 'Result Type', "The class of the result type (type from output).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
     ], [
     ]),
 ]
 
 export const CamelModelMetadata: ElementMeta[] = [
-    new ElementMeta('aggregate', 'AggregateDefinition', 'Aggregate', "Aggregates many messages into a single message", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for aggregation. The Exchange which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the ignoreBadCorrelationKeys option.", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('completionPredicate', 'Completion Predicate', "A Predicate to indicate when an aggregated exchange is complete. If this is not specified and the AggregationStrategy object implements Predicate, the aggregationStrategy object will be used as the completionPredicate.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
-        new PropertyMeta('completionTimeoutExpression', 'Completion Timeout Expression', "Time in millis that an aggregated exchange should be inactive before its complete (timeout). This option can be set as either a fixed value or using an Expression which allows you to evaluate a timeout dynamically - will use Long as result. If both are set Camel will fallback to use the fixed value if the Expression result was null or 0. You cannot use this option together with completionInterval, o [...]
-        new PropertyMeta('completionSizeExpression', 'Completion Size Expression', "Number of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an Expression which allows you to evaluate a size dynamically - will use Integer as result. If both are set Camel will fallback to use the fixed value if the Expression result was null or 0.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
-        new PropertyMeta('optimisticLockRetryPolicy', 'Optimistic Lock Retry Policy', "Allows to configure retry settings when using optimistic locking.", 'OptimisticLockRetryPolicyDefinition', '', '', false, false, false, true, 'advanced', ''),
-        new PropertyMeta('parallelProcessing', 'Parallel Processing', "When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Camel should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('optimisticLocking', 'Optimistic Locking', "Turns on using optimistic locking, which requires the aggregationRepository being used, is supporting this by implementing org.apache.camel.spi.OptimisticLockingAggregationRepository .", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('executorService', 'Executor Service', "If using parallelProcessing you can specify a custom thread pool to be used. In fact also if you are not using parallelProcessing this custom thread pool is used to send out aggregated exchanges as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('timeoutCheckerExecutorService', 'Timeout Checker Executor Service', "If using either of the completionTimeout, completionTimeoutExpression, or completionInterval options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregateController', 'Aggregate Controller', "To use a org.apache.camel.processor.aggregate.AggregateController to allow external sources to control this aggregator.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregationRepository', 'Aggregation Repository', "The AggregationRepository to use. Sets the custom aggregate repository to use. Will by default use org.apache.camel.processor.aggregate.MemoryAggregationRepository", 'string', '', '', false, false, false, false, '', 'org.apache.camel.spi.AggregationRepository'),
-        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "The AggregationStrategy to use. For example to lookup a bean with the name foo, the value is simply just #bean:foo. Configuring an AggregationStrategy is required, and is used to merge the incoming Exchange with the existing already merged exchanges. At first call the oldExchange parameter is null. On subsequent invocations the oldExchange contains the merged exchanges and newExchange is of course the new incoming E [...]
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using beans as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used for the very first aggregation. If this option is true then null values is used as the oldExchange (at the very first aggregation), when using beans as the AggregationStrategy.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('completionSize', 'Completion Size', "Number of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an Expression which allows you to evaluate a size dynamically - will use Integer as result. If both are set Camel will fallback to use the fixed value if the Expression result was null or 0.", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('completionInterval', 'Completion Interval', "A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('completionTimeout', 'Completion Timeout', "Time in millis that an aggregated exchange should be inactive before its complete (timeout). This option can be set as either a fixed value or using an Expression which allows you to evaluate a timeout dynamically - will use Long as result. If both are set Camel will fallback to use the fixed value if the Expression result was null or 0. You cannot use this option together with completionInterval, only one of the two ca [...]
-        new PropertyMeta('completionTimeoutCheckerInterval', 'Completion Timeout Checker Interval', "Interval in millis that is used by the background task that checks for timeouts ( org.apache.camel.TimeoutMap ). By default the timeout checker runs every second. The timeout is an approximation and there is no guarantee that the a timeout is triggered exactly after the timeout value. It is not recommended to use very low timeout values or checker intervals.", 'string', '', '1000', false, [...]
-        new PropertyMeta('completionFromBatchConsumer', 'Completion From Batch Consumer', "Enables the batch completion mode where we aggregate from a org.apache.camel.BatchConsumer and aggregate the total number of exchanges the org.apache.camel.BatchConsumer has reported as total by checking the exchange property org.apache.camel.Exchange#BATCH_COMPLETE when its complete. This option cannot be used together with discardOnAggregationFailure. Important: When using this option, you should [...]
-        new PropertyMeta('completionOnNewCorrelationGroup', 'Completion On New Correlation Group', "Enables completion on all previous groups when a new incoming correlation group. This can for example be used to complete groups with same correlation keys when they are in consecutive order. Notice when this is enabled then only 1 correlation group can be in progress as when a new correlation group starts, then the previous groups is forced completed.", 'boolean', '', 'false', false, fals [...]
-        new PropertyMeta('eagerCheckCompletion', 'Eager Check Completion', "Use eager completion checking which means that the completionPredicate will use the incoming Exchange. As opposed to without eager completion checking the completionPredicate will use the aggregated Exchange.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreInvalidCorrelationKeys', 'Ignore Invalid Correlation Keys', "If a correlation key cannot be successfully evaluated it will be ignored by logging a DEBUG and then just ignore the incoming Exchange.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('closeCorrelationKeyOnCompletion', 'Close Correlation Key On Completion', "Closes a correlation key when its complete. Any late received exchanges which has a correlation key that has been closed, it will be defined and a ClosedCorrelationKeyException is thrown.", 'number', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('discardOnCompletionTimeout', 'Discard On Completion Timeout', "Discards the aggregated message on completion timeout. This means on timeout the aggregated message is dropped and not sent out of the aggregator.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('discardOnAggregationFailure', 'Discard On Aggregation Failure', "Discards the aggregated message when aggregation failed (an exception was thrown from AggregationStrategy . This means the partly aggregated message is dropped and not sent out of the aggregator. This option cannot be used together with completionFromBatchConsumer.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('forceCompletionOnStop', 'Force Completion On Stop', "Indicates to complete all current aggregated exchanges when the context is stopped", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('completeAllOnStop', 'Complete All On Stop', "Indicates to wait to complete all current and partial (pending) aggregated exchanges when the context is stopped. This also means that we will wait for all pending exchanges which are stored in the aggregation repository to complete so the repository is empty before we can stop. You may want to enable this when using the memory based aggregation repository that is memory based only, and do not store data on disk. When [...]
+    new ElementMeta('aggregate', 'AggregateDefinition', 'Aggregate', "Collects and combines related messages into a single message using a correlation expression and an aggregation strategy. Messages are grouped into buckets by correlation key and released when a completion condition is met.", 'aggregate,eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for aggregation. Exchanges with the same correlation key are aggregated together. If the correlation key cannot be evaluated an Exception is thrown.", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('completionPredicate', 'Completion Predicate', "A predicate to indicate when an aggregated exchange is complete. If not specified and the AggregationStrategy implements Predicate, it will be used as the completionPredicate.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('completionTimeoutExpression', 'Completion Timeout Expression', "Time in millis that an aggregated exchange should be inactive before its complete (timeout), evaluated as an expression allowing dynamic timeout values.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('completionSizeExpression', 'Completion Size Expression', "Number of messages aggregated before the aggregation is complete, evaluated as an expression allowing dynamic size values.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('optimisticLockRetryPolicy', 'Optimistic Lock Retry Policy', "Configures retry settings when using optimistic locking.", 'OptimisticLockRetryPolicyDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('parallelProcessing', 'Parallel Processing', "When completed exchanges are sent out of the aggregator, this option indicates whether Camel should use a thread pool with multiple threads for concurrency.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('optimisticLocking', 'Optimistic Locking', "Turns on optimistic locking, which requires the aggregation repository to implement OptimisticLockingAggregationRepository.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('optimisticLockingSyncRetry', 'Optimistic Locking Sync Retry', "When optimistic locking is enabled, retries happen synchronously in the same thread instead of being scheduled on a background thread. This preserves transaction context for repositories that require single-thread transactional guarantees.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('executorService', 'Executor Service', "Reference to a custom thread pool to use for parallel processing and sending out aggregated exchanges.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeoutCheckerExecutorService', 'Timeout Checker Executor Service', "Reference to a custom thread pool for the background completion timeout checker.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregateController', 'Aggregate Controller', "Reference to an AggregateController to allow external sources to control this aggregator.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationRepository', 'Aggregation Repository', "Reference to the AggregationRepository to use. By default uses MemoryAggregationRepository.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.spi.AggregationRepository'),
+        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "The AggregationStrategy to use. Required. Merges each incoming exchange with the existing already merged exchanges. At first call the oldExchange parameter is null.", 'string', '', '', true, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "The method name to use when using a POJO as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If true then null is used as the oldExchange at the very first aggregation, when using POJOs as the AggregationStrategy.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('completionSize', 'Completion Size', "Number of messages aggregated before the aggregation is complete. Can also be set as an expression via completionSizeExpression.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('completionInterval', 'Completion Interval', "A repeating period by which the aggregator will complete all current aggregated exchanges. Cannot be used together with completionTimeout.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('completionTimeout', 'Completion Timeout', "Time that an aggregated exchange should be inactive before its complete (timeout). Cannot be used together with completionInterval.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('completionTimeoutCheckerInterval', 'Completion Timeout Checker Interval', "Interval in millis for the background task that checks for completion timeouts. Default is 1000 (1 second).", 'string', '', '1000', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('completionFromBatchConsumer', 'Completion From Batch Consumer', "Enables batch completion mode where aggregation completes based on the total number of exchanges reported by a batch consumer. Cannot be used together with discardOnAggregationFailure.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('completionOnNewCorrelationGroup', 'Completion On New Correlation Group', "Enables completion on all previous groups when a new incoming correlation group starts. Only one correlation group can be in progress at a time.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('eagerCheckCompletion', 'Eager Check Completion', "If enabled then the completion predicate evaluates against the incoming exchange. Otherwise it evaluates against the aggregated exchange.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreInvalidCorrelationKeys', 'Ignore Invalid Correlation Keys', "If enabled then a correlation key that cannot be evaluated is logged and ignored, instead of throwing an exception.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('closeCorrelationKeyOnCompletion', 'Close Correlation Key On Completion', "Closes a correlation key when its complete. Late arriving exchanges with a closed correlation key will throw a ClosedCorrelationKeyException. The value is the maximum cache size of closed keys. Use 0 for unbounded.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('discardOnCompletionTimeout', 'Discard On Completion Timeout', "If enabled then the aggregated message is discarded (dropped) on completion timeout instead of being sent out of the aggregator.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('discardOnAggregationFailure', 'Discard On Aggregation Failure', "If enabled then the partly aggregated message is discarded when aggregation failed (an exception was thrown from AggregationStrategy). Cannot be used together with completionFromBatchConsumer.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('forceCompletionOnStop', 'Force Completion On Stop', "If enabled then all current aggregated exchanges are completed when the context is stopped.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('completeAllOnStop', 'Complete All On Stop', "If enabled then waits to complete all current and partial (pending) aggregated exchanges when the context is stopped, ensuring the aggregation repository is empty before shutdown.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelAggregatedSize', 'Aggregated Size', 'producer', 'int', "Number of exchanges that was grouped together."),
@@ -1055,49 +1086,49 @@ export const CamelModelMetadata: ElementMeta[] = [
         new ExchangePropertyMeta('CamelAggregationCompleteAllGroups', 'Aggregation Complete All Groups', 'consumer', 'boolean', "Input property. Set to true to force completing all the groups (excluding this message). This allows to overrule any existing completion predicates, sizes, timeouts etc, and complete the group. This message is considered a signal message only, the message headers/contents will not be processed otherwise. Instead use CamelAggregationCompleteAllGroupsInclusive if [...]
         new ExchangePropertyMeta('CamelAggregationCompleteAllGroupsInclusive', 'Aggregation Complete All Groups Inclusive', 'consumer', 'boolean', "Input property. Set to true to force completing all the groups (including this message). This allows to overrule any existing completion predicates, sizes, timeouts etc, and complete the group."),
     ]),
-    new ElementMeta('bean', 'BeanDefinition', 'Bean', "Calls a Java bean", 'eip,endpoint', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('ref', 'Ref', "Sets a reference to an existing bean to use, which is looked up from the registry", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('method', 'Method', "Sets the method name on the bean to use", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('beanType', 'Bean Type', "Sets the class name (fully qualified) of the bean to use", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance  [...]
+    new ElementMeta('bean', 'BeanDefinition', 'Bean', "Invokes a method on a Java bean, with automatic parameter binding from the message body, headers, and exchange properties", 'eip,endpoint', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ref', 'Ref', "A reference to an existing bean to use, which is looked up from the registry.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('method', 'Method', "The method name on the bean to invoke.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('beanType', 'Bean Type', "The class name (fully qualified) of the bean to use.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint.", 'string', 'Singleton, Request, Prototype', 'Singleton', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('doCatch', 'CatchDefinition', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('exception', 'Exception', "The exception(s) to catch.", 'string', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('onWhen', 'On When', "Used for triggering doCatch in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
+    new ElementMeta('doCatch', 'CatchDefinition', 'Do Catch', "Catches specific exceptions within a doTry block, allowing fine-grained exception handling within the route", 'error,errorhandling', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('exception', 'Exception', "The exception class names (fully qualified) to catch.", 'string', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('onWhen', 'On When', "An additional predicate that must evaluate to true for this doCatch to trigger. Allows fine-grained control over which exceptions are caught based on the exchange state.", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelExceptionCaught', 'Exception Caught', 'producer', 'java.lang.Exception', "Stores the caught exception due to a processing error of the current Exchange"),
         new ExchangePropertyMeta('CamelFailureEndpoint', 'Failure Endpoint', 'producer', 'String', "Endpoint URI where the Exchange failed during processing"),
         new ExchangePropertyMeta('CamelFailureRouteId', 'Failure Route Id', 'producer', 'String', "Route ID where the Exchange failed during processing"),
     ]),
-    new ElementMeta('choice', 'ChoiceDefinition', 'Choice', "Route messages based on a series of predicates", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('when', 'When', "Sets the when nodes", 'WhenDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('otherwise', 'Otherwise', "Sets the otherwise node", 'OtherwiseDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('precondition', 'Precondition', "Indicates whether this Choice EIP is in precondition mode or not. If so its branches (when/otherwise) are evaluated during startup to keep at runtime only the branch that matched.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('choice', 'ChoiceDefinition', 'Choice', "Routes messages to different steps based on a series of conditions (predicates), similar to if-elseif-else in Java. Each condition is evaluated in order until one matches.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('when', 'When', "The when clauses (predicates) to evaluate. The first when clause that matches determines which route branch to follow.", 'WhenDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('otherwise', 'Otherwise', "The otherwise clause to execute when none of the when predicates matched.", 'OtherwiseDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('precondition', 'Precondition', "If enabled then the choice is evaluated at route initialization time (precondition). Only when predicates with property placeholders or simple expressions using only property placeholders are supported.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('circuitBreaker', 'CircuitBreakerDefinition', 'Circuit Breaker', "Route messages in a fault tolerance way using Circuit Breaker", 'eip,routing,error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('configuration', 'Configuration', "Refers to a circuit breaker configuration (such as resillience4j, or microprofile-fault-tolerance) to use for configuring the circuit breaker EIP.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('resilience4jConfiguration', 'Resilience4j Configuration', "Configures the circuit breaker to use Resilience4j with the given configuration.", 'Resilience4jConfigurationDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('faultToleranceConfiguration', 'Fault Tolerance Configuration', "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration.", 'FaultToleranceConfigurationDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('onFallback', 'On Fallback', "The fallback route path to execute that does not go over the network. This should be a static or cached result that can immediately be returned upon failure. If the fallback requires network connection then use onFallbackViaNetwork() .", 'OnFallbackDefinition', '', '', false, false, false, true, '', ''),
+    new ElementMeta('circuitBreaker', 'CircuitBreakerDefinition', 'Circuit Breaker', "Wraps message processing with a circuit breaker for fault tolerance. Prevents cascading failures by short-circuiting calls to an unhealthy service and routing to a fallback", 'eip,error,resilience,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('configuration', 'Configuration', "Refers to a circuit breaker configuration to use for configuring the circuit breaker EIP.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('resilience4jConfiguration', 'Resilience4j Configuration', "Configures the circuit breaker to use Resilience4j with the given configuration.", 'Resilience4jConfigurationDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('faultToleranceConfiguration', 'Fault Tolerance Configuration', "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration.", 'FaultToleranceConfigurationDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('onFallback', 'On Fallback', "The fallback route path to execute when the circuit breaker triggers.", 'OnFallbackDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelResponseSuccessfulExecution', 'Response Successful Execution', 'producer', 'boolean', "Whether the exchange was processed successfully by the circuit breaker"),
@@ -1108,141 +1139,145 @@ export const CamelModelMetadata: ElementMeta[] = [
         new ExchangePropertyMeta('CamelResponseIgnored', 'Response Ignored', 'producer', 'boolean', "Whether the circuit breaker ignored an exception during processing"),
         new ExchangePropertyMeta('CamelResponseState', 'Response State', 'producer', 'String', "The state of the circuit breaker"),
     ]),
-    new ElementMeta('claimCheck', 'ClaimCheckDefinition', 'Claim Check', "The Claim Check EIP allows you to replace message content with a claim check (a unique key), which can be used to retrieve the message content at a later time.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('operation', 'Operation', "The claim check operation to use. The following operations are supported: Get - Gets (does not remove) the claim check by the given key. GetAndRemove - Gets and removes the claim check by the given key. Set - Sets a new (will override if key already exists) claim check with the given key. Push - Sets a new claim check on the stack (does not use key). Pop - Gets the latest claim check from the stack (does not use key).", 'string', 'Get,  [...]
-        new PropertyMeta('key', 'Key', "To use a specific key for claim check id (for dynamic keys use simple language syntax as the key).", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('filter', 'Filter', "Specify a filter to control what data gets merged data back from the claim check repository. The following syntax is supported: body - to aggregate the message body attachments - to aggregate all the message attachments headers - to aggregate all the message headers header:pattern - to aggregate all the message headers that matches the pattern. The following pattern rules are applied in this order: exact match, returns true wildcard match (pa [...]
-        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "To use a custom AggregationStrategy instead of the default implementation. Notice you cannot use both custom aggregation strategy and configure data at the same time.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.AggregationStrategy'),
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('claimCheck', 'ClaimCheckDefinition', 'Claim Check', "Temporarily stores the message content and replaces it with a claim check key, allowing the content to be retrieved later in the route. Useful for reducing memory when large payloads pass through processing steps that don't need them.", 'eip,enrichment,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('operation', 'Operation', "The claim check operation to use. Get=retrieve, GetAndRemove=retrieve and remove, Set=store with key, Push=store on stack, Pop=retrieve from stack.", 'string', 'Get, GetAndRemove, Set, Push, Pop', '', true, false, false, false, '', ''),
+        new PropertyMeta('key', 'Key', "The unique claim check key to use for Get, GetAndRemove, and Set operations.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('filter', 'Filter', "Specifies a filter to control what data gets merged back when using Get or Pop operations. Use body, headers, header:pattern to include only matching data.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Reference to a custom AggregationStrategy to use for merging data back from the claim check repository.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.AggregationStrategy'),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "The method name to use when using a POJO as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('convertBodyTo', 'ConvertBodyDefinition', 'Convert Body To', "Converts the message body to another type", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "The java type to convert to", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('mandatory', 'Mandatory', "When mandatory then the conversion must return a value (cannot be null), if this is not possible then NoTypeConversionAvailableException is thrown. Setting this to false could mean conversion is not possible and the value is null.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('convertBodyTo', 'ConvertBodyDefinition', 'Convert Body To', "Converts the message body to a specified Java type using Camel's built-in type converters", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('type', 'Type', "The java type to convert to.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('mandatory', 'Mandatory', "Whether the conversion is mandatory. If mandatory and conversion is not possible, a NoTypeConversionAvailableException is thrown. Setting this to false means null may be returned if conversion is not possible.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('convertHeaderTo', 'ConvertHeaderDefinition', 'Convert Header To', "Converts the message header to another type", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of message header to convert its value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "The java type to convert to", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('toName', 'To Name', "To use another header to store the result. By default, the result is stored in the same header. This option allows to use another header. The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('mandatory', 'Mandatory', "When mandatory then the conversion must return a value (cannot be null), if this is not possible then NoTypeConversionAvailableException is thrown. Setting this to false could mean conversion is not possible and the value is null.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('convertHeaderTo', 'ConvertHeaderDefinition', 'Convert Header To', "Converts a message header value to a specified Java type using Camel's built-in type converters", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of message header to convert its value. The simple language can be used to define a dynamic evaluated header name.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "The java type to convert to.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('toName', 'To Name', "To use another header to store the result. By default, the result is stored in the same header.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('mandatory', 'Mandatory', "Whether the conversion is mandatory. If mandatory and conversion is not possible, a NoTypeConversionAvailableException is thrown. Setting this to false means null may be returned if conversion is not possible.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('convertVariableTo', 'ConvertVariableDefinition', 'Convert Variable To', "Converts the variable to another type", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of variable to convert its value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "The java type to convert to", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('toName', 'To Name', "To use another variable to store the result. By default, the result is stored in the same variable. This option allows to use another variable. The simple language can be used to define a dynamic evaluated variable name to be used. Otherwise a constant name will be used.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('mandatory', 'Mandatory', "When mandatory then the conversion must return a value (cannot be null), if this is not possible then NoTypeConversionAvailableException is thrown. Setting this to false could mean conversion is not possible and the value is null.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('convertVariableTo', 'ConvertVariableDefinition', 'Convert Variable To', "Converts a variable value to a specified Java type using Camel's built-in type converters", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of variable to convert its value. The simple language can be used to define a dynamic evaluated variable name.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "The java type to convert to.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('toName', 'To Name', "To use another variable to store the result. By default, the result is stored in the same variable.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('mandatory', 'Mandatory', "Whether the conversion is mandatory. If mandatory and conversion is not possible, a NoTypeConversionAvailableException is thrown. Setting this to false means null may be returned if conversion is not possible.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('delay', 'DelayDefinition', 'Delay', "Delays processing for a specified length of time", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to define how long time to wait (in millis)", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('delay', 'DelayDefinition', 'Delay', "Delays message processing for a specified duration, which can be a fixed value or computed dynamically per message", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression that determines the delay duration in milliseconds.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('asyncDelayed', 'Async Delayed', "Enables asynchronous delay which means the thread will not block while delaying.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool if asyncDelay has been enabled.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not the caller should run the task when it was rejected by the thread pool.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('executorService', 'Executor Service', "To use a custom thread pool if asyncDelay has been enabled.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('dynamicRouter', 'DynamicRouterDefinition', 'Dynamic Router', "Route messages based on dynamic rules", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to call that returns the endpoint(s) to route to in the dynamic routing. Important: The expression will be called in a while loop fashion, until the expression returns null which means the dynamic router is finished.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('uriDelimiter', 'Uri Delimiter', "Sets the uri delimiter to use", 'string', '', ',', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this dynamic router, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
+    new ElementMeta('dynamicRouter', 'DynamicRouterDefinition', 'Dynamic Router', "Routes a message step-by-step through a series of endpoints, determined dynamically by calling an expression repeatedly. The expression is called after each hop and returns the next endpoint, or null to stop.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to compute the next endpoint URI to route to. The expression is called iteratively until it returns null to indicate the end of routing.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('uriDelimiter', 'Uri Delimiter', "The delimiter used to separate endpoint URIs when the expression returns multiple endpoints. Default is comma.", 'string', '', ',', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "If enabled then invalid endpoint URIs are ignored and logged instead of throwing an exception.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('cacheSize', 'Cache Size', "Configures the cache size for ProducerCache which caches producers for reuse. The default cache size is 1000. Set to -1 to turn off caching.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
     ], [
     ]),
-    new ElementMeta('enrich', 'EnrichDefinition', 'Enrich', "Enriches a message with data from a secondary resource", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('variableSend', 'Variable Send', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, [...]
+    new ElementMeta('enrich', 'EnrichDefinition', 'Enrich', "Enriches the message with additional data obtained by sending to another endpoint using request-reply. The reply is merged into the original message using an aggregation strategy.", 'eip,enrichment,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to compute the endpoint URI to enrich from.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicitly declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregateOnException', 'Aggregate On Exception', "If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method. For example to suppress the exception or set a custom message body etc.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and the resource exchange. Enrich will by default not share unit of work between the parent exchange and the resource exchange. This means the resource exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producer when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as prototype scoped and will be stopp [...]
-        new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise enricher if they are org.apache.camel.spi.SendDynamicAware", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregateOnException', 'Aggregate On Exception', "If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the UnitOfWork with the parent and the resource exchange. Enrich will by default not share unit of work between the parent exchange and the resource exchange. This means the resource exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers when uris are reused. Use 0 for default cache size, or -1 to turn cache off.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Whether to ignore an invalid endpoint URI when trying to create a producer with that endpoint.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise enricher if they are SendDynamicAware.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('autoStartComponents', 'Auto Start Components', "Whether to auto startup components when enricher is starting up.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
     ], [
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('filter', 'FilterDefinition', 'Filter', "Filter out messages based using a predicate", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to determine if the message should be filtered or not. If the expression returns an empty value or false then the message is filtered (dropped), otherwise the message is continued being routed.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('statusPropertyName', 'Status Property Name', "Name of exchange property to use for storing the status of the filtering. Setting this allows to know if the filter predicate evaluated as true or false.", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('filter', 'FilterDefinition', 'Filter', "Filters messages using a predicate expression. Messages matching the predicate continue processing; non-matching messages are skipped.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The predicate expression to evaluate. Messages where the predicate returns false are filtered out and not routed further.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('statusPropertyName', 'Status Property Name', "Name of an exchange property to store whether the filter predicate matched or not. The value is stored as a boolean.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('doFinally', 'FinallyDefinition', 'Do Finally', "Path traversed when a try, catch, finally block exits", 'error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('doFinally', 'FinallyDefinition', 'Do Finally', "Defines steps to always execute after a doTry block completes, regardless of whether an exception was thrown or caught", 'error,errorhandling', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelExceptionCaught', 'Exception Caught', 'producer', 'java.lang.Exception', "Stores the caught exception due to a processing error of the current Exchange"),
         new ExchangePropertyMeta('CamelFailureEndpoint', 'Failure Endpoint', 'producer', 'String', "Endpoint URI where the Exchange failed during processing"),
         new ExchangePropertyMeta('CamelFailureRouteId', 'Failure Route Id', 'producer', 'String', "Route ID where the Exchange failed during processing"),
     ]),
-    new ElementMeta('idempotentConsumer', 'IdempotentConsumerDefinition', 'Idempotent Consumer', "Filters out duplicate messages", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression used to calculate the correlation key to use for duplicate check. The Exchange which has the same correlation key is regarded as a duplicate and will be rejected.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('idempotentRepository', 'Idempotent Repository', "Sets the reference name of the message id repository", 'string', '', '', false, false, false, false, '', 'org.apache.camel.spi.IdempotentRepository'),
+    new ElementMeta('idempotentConsumer', 'IdempotentConsumerDefinition', 'Idempotent Consumer', "Filters out duplicate messages based on a unique message identifier and an idempotent repository that tracks previously seen IDs", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to compute the unique message ID used for duplicate detection. Messages with the same ID are treated as duplicates and skipped.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('idempotentRepository', 'Idempotent Repository', "Sets the reference name of the message id repository to use for storing processed message ids to detect duplicates.", 'string', '', '', true, false, false, false, '', 'org.apache.camel.spi.IdempotentRepository'),
         new PropertyMeta('eager', 'Eager', "Sets whether to eagerly add the key to the idempotent repository or wait until the exchange is complete. Eager is default enabled.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('completionEager', 'Completion Eager', "Sets whether to complete the idempotent consumer eager or when the exchange is done. If this option is true to complete eager, then the idempotent consumer will trigger its completion when the exchange reached the end of the block of the idempotent consumer pattern. So if the exchange is continued routed after the block ends, then whatever happens there does not affect the state. If this option is false (default) to not com [...]
-        new PropertyMeta('skipDuplicate', 'Skip Duplicate', "Sets whether to skip duplicates or not. The default behavior is to skip duplicates. A duplicate message would have the Exchange property org.apache.camel.Exchange#DUPLICATE_MESSAGE set to a Boolean#TRUE value. A none duplicate message will not have this property set.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('completionEager', 'Completion Eager', "Sets whether to complete the idempotent consumer eager or when the exchange is done.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('skipDuplicate', 'Skip Duplicate', "Sets whether to skip duplicates or not. The default behavior is to skip duplicates.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('removeOnFailure', 'Remove On Failure', "Sets whether to remove or keep the key on failure. The default behavior is to remove the key on failure.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelDuplicateMessage', 'Duplicate Message', 'producer', 'boolean', "Whether this exchange is a duplicate detected by the Idempotent Consumer EIP"),
     ]),
-    new ElementMeta('kamelet', 'KameletDefinition', 'Kamelet', "To call Kamelets in special situations. By default, calling kamelets should be done as endpoints with the kamelet component, such as to(kamelet:mykamelet). When a Kamelet is designed for a special use-case such as aggregating messages, and returning a response message only when a group of aggregated messages is completed. In other words, kamelet does not return a response message for every incoming message. In special situat [...]
+    new ElementMeta('kamelet', 'KameletDefinition', 'Kamelet', "Calls a Kamelet (reusable route template) as a step in the route. Normally Kamelets are invoked via kamelet: endpoint URIs; this EIP is for special cases where direct invocation is needed.", 'eip,endpoint,routing', [
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('name', 'Name', "Name of the Kamelet (templateId/routeId) to call. Options for the kamelet can be specified using uri syntax, eg mynamecount=4&type=gold.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('loadBalance', 'LoadBalanceDefinition', 'Load Balance', "Balances message processing among a number of nodes", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('loadBalance', 'LoadBalanceDefinition', 'Load Balance', "Distributes messages across multiple endpoints using a load balancing strategy such as round-robin, random, failover, or weighted", 'eip,loadbalancing,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('customLoadBalancer', 'customLoadBalancer', "customLoadBalancer", 'CustomLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('failoverLoadBalancer', 'failoverLoadBalancer', "failoverLoadBalancer", 'FailoverLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('randomLoadBalancer', 'randomLoadBalancer', "randomLoadBalancer", 'RandomLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
@@ -1253,41 +1288,41 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('log', 'LogDefinition', 'Logger', "Used for printing custom messages to the logger.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('message', 'Message', "Sets the log message (uses simple language)", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('loggingLevel', 'Logging Level', "Sets the logging level. The default value is INFO", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'INFO', false, false, false, false, '', ''),
-        new PropertyMeta('logName', 'Log Name', "Sets the name of the logger. The name is default the routeId or the source:line if source location is enabled. You can also specify the name using tokens: ${class} - the logger class name (org.apache.camel.processor.LogProcessor) ${contextId} - the camel context id ${routeId} - the route id ${groupId} - the route group id ${nodeId} - the node id ${nodePrefixId} - the node prefix id ${source} - the source:line (source location must be enabl [...]
-        new PropertyMeta('marker', 'Marker', "To use slf4j marker", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logger', 'Logger', "To refer to a custom logger instance to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logLanguage', 'Log Language', "To configure the language to use. By default, the simple language is used. However, Camel also supports other languages such as groovy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-    ], [
-    ]),
-    new ElementMeta('loop', 'LoopDefinition', 'Loop', "Processes a message multiple times", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to define how many times we should loop. Notice the expression is only evaluated once, and should return a number as how many times to loop. A value of zero or negative means no looping. The loop is like a for-loop fashion, if you want a while loop, then the dynamic router may be a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('copy', 'Copy', "If the copy attribute is true, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message. By default loop will loop the same exchange all over, so each iteration may have different message content.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('log', 'LogDefinition', 'Logger', "Logs a message using an expression that can include message body, headers, and other exchange data", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('message', 'Message', "The log message to output. Supports simple language expressions.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('loggingLevel', 'Logging Level', "Sets the logging level to use for the log message. Available levels: TRACE, DEBUG, INFO, WARN, ERROR, OFF.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'INFO', false, false, false, false, '', ''),
+        new PropertyMeta('logName', 'Log Name', "The logger name to use. By default the route id is used.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('marker', 'Marker', "An optional SLF4J marker to use with the log statement.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logger', 'Logger', "Reference to a custom SLF4J logger instance to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logLanguage', 'Log Language', "The language to use for evaluating the log message, such as simple, groovy, or ognl.", 'string', '', '', false, false, false, false, 'advanced', ''),
+    ], [
+    ]),
+    new ElementMeta('loop', 'LoopDefinition', 'Loop', "Processes the message body repeatedly for a specified number of iterations, or until a condition is met", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression that determines the number of times to loop. The result is converted to an integer.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('copy', 'Copy', "If enabled, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('doWhile', 'Do While', "Enables the while loop that loops until the predicate evaluates to false or null.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('breakOnShutdown', 'Break On Shutdown', "If the breakOnShutdown attribute is true, then the loop will not iterate until it reaches the end when Camel is shut down.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange for each loop iteration. This can be used to deep-clone messages, or any custom logic needed before the looping executes.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('breakOnShutdown', 'Break On Shutdown', "If enabled, the loop will not iterate until it reaches the end when Camel is shut down.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onPrepare', 'On Prepare', "Uses a processor when preparing the exchange for each loop iteration. This can be used to deep-clone messages, or any custom logic needed before the looping executes.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelLoopIndex', 'Loop Index', 'producer', 'int', "Index of the current iteration (0 based)."),
         new ExchangePropertyMeta('CamelLoopSize', 'Loop Size', 'producer', 'int', "Total number of loops. This is not available if running the loop in while loop mode."),
     ]),
-    new ElementMeta('marshal', 'MarshalDefinition', 'Marshal', "Marshals data into a specified format for transmission over a transport or component", 'eip,dataformat,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('marshal', 'MarshalDefinition', 'Marshal', "Serializes the message body into a specific data format such as JSON, XML, CSV, or Protobuf for transmission or storage", 'eip,dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('barcode', 'barcode', "barcode", 'BarcodeDataFormat', '', '', false, false, false, true, '', ''),
@@ -1304,6 +1339,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('groovyJson', 'groovyJson', "groovyJson", 'GroovyJSonDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
@@ -1337,422 +1373,434 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('multicast', 'MulticastDefinition', 'Multicast', "Routes the same message to multiple paths either sequentially or in parallel.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Refers to an AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('multicast', 'MulticastDefinition', 'Multicast', "Sends a copy of the message to multiple fixed endpoints, processing them sequentially or in parallel, and optionally aggregating their replies", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Reference to the AggregationStrategy to assemble the replies from the multicasts into a single outgoing message. By default Camel uses the last reply as the outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "The method name to use when using a POJO as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If true then null is used as the oldExchange when there is no data to aggregate, when using POJOs as the AggregationStrategy.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parallelAggregate', 'Parallel Aggregate', "If enabled then the aggregate method on AggregationStrategy can be called concurrently. Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. By default this is false meaning that Camel synchronizes the call to the aggregate method. Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe.", 'bo [...]
-        new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then sending messages to the multicasts occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues. Its only the sending and processing the replies from the multicasts which happens concurrently. When parallel processing is enabled, then the Camel routing engin will continue processing using last used thread from the parallel thread pool. How [...]
-        new PropertyMeta('synchronous', 'Synchronous', "Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the multicast is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('streaming', 'Streaming', "If enabled then Camel will process replies out-of-order, eg in the order they come back. If disabled, Camel will process replies in the same order as defined by the multicast.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('stopOnException', 'Stop On Exception', "Will now stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message) or an exception was thrown and handled by the error handler (such as using onException). In all situations the multicast will stop further processing. This is the same behavior as in pipeline, wh [...]
-        new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Multicast hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Multicast breaks out and continues. The timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner may conti [...]
-        new PropertyMeta('executorService', 'Executor Service', "Refers to a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Multicast will by default not share unit of work between the parent exchange and each multicasted exchange. This means each sub exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then sending messages to the multicasts occurs concurrently. The caller thread still waits until all messages are fully processed before it continues.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('synchronous', 'Synchronous', "When enabled then the same thread is used to continue routing after the multicast is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('streaming', 'Streaming', "If enabled then Camel will process replies out-of-order, in the order they come back. If disabled, Camel will process replies in the same order as defined by the multicast.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('stopOnException', 'Stop On Exception', "If enabled then stops further multicast processing if an exception or failure occurred during processing of an exchange, and the caused exception will be thrown. The default behavior is to not stop but continue processing till the end.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeout', 'Timeout', "Total timeout in millis when using parallel processing. If the multicast has not been able to process all replies within the given timeframe, then the timeout triggers and the multicast breaks out and continues.", 'string', '', '0', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('executorService', 'Executor Service', "Reference to a custom thread pool to use for parallel processing. Setting this option implies parallel processing.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onPrepare', 'On Prepare', "Reference to a processor for preparing the exchange to be sent. Can be used to deep-clone messages that should be sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the unit of work with the parent and each of the multicast exchanges. By default each multicast exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelMulticastIndex', 'Multicast Index', 'producer', 'int', "An index counter that increases for each Exchange being multicasted. The counter starts from 0."),
         new ExchangePropertyMeta('CamelMulticastComplete', 'Multicast Complete', 'producer', 'boolean', "Whether this Exchange is the last."),
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('pausable', 'PausableDefinition', 'Pausable', "Pausable EIP to support resuming processing from last known offset.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('consumerListener', 'Consumer Listener', "Sets the consumer listener to use", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('untilCheck', 'Until Check', "References to a java.util.function.Predicate to use for until checks. The predicate is responsible for evaluating whether the processing can resume or not. Such predicate should return true if the consumption can resume, or false otherwise. The exact point of when the predicate is called is dependent on the component, and it may be called on either one of the available events. Implementations should not assume the predicate to be cal [...]
+    new ElementMeta('pausable', 'PausableDefinition', 'Pausable', "Pauses a consumer based on a condition, allowing it to be resumed later from the last known offset. Useful for controlling ingestion rate on polling consumers.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('consumerListener', 'Consumer Listener', "The consumer listener to use for pausing and resuming the consumer.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('untilCheck', 'Until Check', "Predicate to evaluate whether the processing can resume. Returns true if consumption can resume, or false otherwise.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('pipeline', 'PipelineDefinition', 'Pipeline', "Routes the message to a sequence of processors.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('pipeline', 'PipelineDefinition', 'Pipeline', "Processes the message through a sequence of steps where the output of each step becomes the input of the next", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('policy', 'PolicyDefinition', 'Policy', "Defines a policy the route will use", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('policy', 'PolicyDefinition', 'Policy', "Applies a policy to the route, such as a transactional policy or a custom policy for cross-cutting concerns", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to the policy to lookup in the registry.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('poll', 'PollDefinition', 'Poll', "Polls a message from a static endpoint", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('uri', 'Uri', "Sets the uri of the endpoint to poll from.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('timeout', 'Timeout', "Timeout in millis when polling from the external service. The timeout has influence about the poll enrich behavior. It basically operations in three different modes: negative value - Waits until a message is available and then returns it. Warning that this method could block indefinitely if no messages are available. 0 - Attempts to receive a message exchange immediately without waiting and returning null if a message exchange is not availa [...]
+    new ElementMeta('poll', 'PollDefinition', 'Poll', "Polls a single message from a consumer endpoint and sets it as the message body. Useful for fetching data on-demand from file, database, or messaging endpoints.", 'eip,enrichment,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('uri', 'Uri', "The uri of the endpoint to poll a single message from. The result is stored in the original message body (or in a variable if variableReceive is set).", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('timeout', 'Timeout', "Timeout in millis when polling from the external service. The default value is 20000 (20 seconds).", 'string', '', '20000', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('pollEnrich', 'PollEnrichDefinition', 'Poll Enrich', "Enriches messages with data polled from a secondary resource", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('pollEnrich', 'PollEnrichDefinition', 'Poll Enrich', "Enriches the message with additional data obtained by polling a consumer endpoint (such as a file or message queue). The polled data is merged using an aggregation strategy.", 'eip,enrichment,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to compute the endpoint URI to poll-enrich from.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicitly declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregateOnException', 'Aggregate On Exception', "If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method. For example to suppress the exception or set a custom message body etc.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('timeout', 'Timeout', "Timeout in millis when polling from the external service. The timeout has influence about the poll enrich behavior. It basically operations in three different modes: negative value - Waits until a message is available and then returns it. Warning that this method could block indefinitely if no messages are available. 0 - Attempts to receive a message exchange immediately without waiting and returning null if a message exchange is not availa [...]
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ConsumerCache which is used to cache and reuse consumers when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the consumers and endpoints; they are regarded as prototype scoped and will be stop [...]
-        new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Ignore the invalidate endpoint exception when try to create a consumer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise if they are org.apache.camel.spi.PollDynamicAware", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregateOnException', 'Aggregate On Exception', "If this option is false then the aggregate method is not used if there was an exception thrown while trying to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what to do if there was an exception in the aggregate method.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeout', 'Timeout', "Timeout in millis when polling from the external service. A negative value waits until a message is available (could block indefinitely). Zero attempts to receive immediately without waiting. A positive value waits up to the given timeout.", 'string', '', '-1', false, false, false, false, '', ''),
+        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the ConsumerCache which is used to cache and reuse consumers when uris are reused. Use 0 for default cache size, or -1 to turn cache off.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Whether to ignore an invalid endpoint URI when trying to create a consumer with that endpoint.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise if they are PollDynamicAware.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('autoStartComponents', 'Auto Start Components', "Whether to auto startup components when poll enricher is starting up.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
     ], [
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('process', 'ProcessDefinition', 'Process', "Calls a Camel processor", 'eip,endpoint', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('ref', 'Ref', "Reference to the Processor to lookup in the registry to use. A Processor is a class of type org.apache.camel.Processor, which can are to be called by this EIP. In this processor you have custom Java code, that can work with the message, such as to do custom business logic, special message manipulations and so on. By default, the ref, will lookup the bean in the Camel registry. The ref can use prefix that controls how the processor is obtained. You  [...]
+    new ElementMeta('process', 'ProcessDefinition', 'Process', "Invokes a custom Camel Processor for programmatic message processing in Java", 'eip,endpoint', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to the Processor to lookup in the registry to use. Can use prefixes such as #bean:, #class:, or #type: to control how the processor is obtained.", 'string', '', '', true, false, false, false, '', 'org.apache.camel.Processor'),
     ], [
     ]),
-    new ElementMeta('recipientList', 'RecipientListDefinition', 'Recipient List', "Route messages to a number of dynamically specified recipients", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression that returns which endpoints (url) to send the message to (the recipients). If the expression return an empty value then the message is not sent to any recipients.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('delimiter', 'Delimiter', "Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value false. The default value is ,", 'string', '', ',', false, false, false, false, '', ''),
-        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('recipientList', 'RecipientListDefinition', 'Recipient List', "Routes a message to a list of dynamically calculated endpoints, determined at runtime from an expression. Each recipient receives a copy of the message.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to compute the list of recipient endpoint URIs. The result can be a comma-separated string, a Collection, or an Iterator of endpoint URIs.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('delimiter', 'Delimiter', "Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value false.", 'string', '', ',', false, false, false, false, '', ''),
+        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicitly declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parallelAggregate', 'Parallel Aggregate', "If enabled then the aggregate method on AggregationStrategy can be called concurrently. Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. By default this is false meaning that Camel synchronizes the call to the aggregate method. Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe.", 'bo [...]
-        new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then sending messages to the recipients occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues. Its only the sending and processing the replies from the recipients which happens concurrently. When parallel processing is enabled, then the Camel routing engin will continue processing using last used thread from the parallel thread pool. How [...]
+        new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then sending messages to the recipients occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('synchronous', 'Synchronous', "Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the recipient list is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Recipient List hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Recipient List breaks out and continues. The timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner [...]
-        new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('stopOnException', 'Stop On Exception', "Will now stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message) or an exception was thrown and handled by the error handler (such as using onException). In all situations the recipient list will stop further processing. This is the same behavior as in pipelin [...]
-        new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Recipient List hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Recipient List breaks out and continues.", 'string', '', '0', false, false, false, false, '', ''),
+        new PropertyMeta('executorService', 'Executor Service', "Refers to a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('stopOnException', 'Stop On Exception', "Stops further processing if an exception or failure occurred during processing of an exchange and the caused exception will be thrown.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Whether to ignore an invalid endpoint URI when trying to create a producer with that endpoint.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streaming', 'Streaming', "If enabled then Camel will process replies out-of-order, eg in the order they come back. If disabled, Camel will process replies in the same order as defined by the recipient list.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be used send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
-        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Recipient List will by default not share unit of work between the parent exchange and each recipient exchange. This means each sub exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers when uris are reused. Use 0 for default cache size, or -1 to turn cache off.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the UnitOfWork with the parent and each of the sub messages. Recipient List will by default not share unit of work between the parent exchange and each recipient exchange. This means each sub exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
     ], [
         new ExchangePropertyMeta('CamelRecipientListEndpoint', 'Recipient List Endpoint', 'producer', 'String', "The endpoint uri of this recipient list"),
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('removeHeader', 'RemoveHeaderDefinition', 'Remove Header', "Removes a named header from the message", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of header to remove", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('removeHeader', 'RemoveHeaderDefinition', 'Remove Header', "Removes a specific header from the message by name", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of header to remove.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('removeHeaders', 'RemoveHeadersDefinition', 'Remove Headers', "Removes message headers whose name matches a specified pattern", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('pattern', 'Pattern', "Name or pattern of headers to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or patter of headers to not remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('removeHeaders', 'RemoveHeadersDefinition', 'Remove Headers', "Removes all message headers whose names match a given pattern. Useful for stripping internal Camel headers before sending to external systems.", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('pattern', 'Pattern', "Name or pattern of headers to remove. The pattern supports exact match, wildcard (pattern ends with ), and regular expression (all case-insensitive).", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or pattern of headers to not remove. You can use comma to separate multiple patterns.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('removeProperties', 'RemovePropertiesDefinition', 'Remove Properties', "Removes message exchange properties whose name matches a specified pattern", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('pattern', 'Pattern', "Name or pattern of properties to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or pattern of properties to not remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('removeProperties', 'RemovePropertiesDefinition', 'Remove Properties', "Removes all exchange properties whose names match a given pattern", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('pattern', 'Pattern', "Name or pattern of properties to remove. Supports exact match, wildcard (ending with ), and regular expression (all case-insensitive).", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or pattern of properties to not remove. You can use comma to separate multiple patterns.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('removeProperty', 'RemovePropertyDefinition', 'Remove Property', "Removes a named property from the message exchange", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of property to remove.", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('removeProperty', 'RemovePropertyDefinition', 'Remove Property', "Removes a specific exchange property by name", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of the exchange property to remove.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('removeVariable', 'RemoveVariableDefinition', 'Remove Variable', "Removes a named variable", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of variable to remove.", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('removeVariable', 'RemoveVariableDefinition', 'Remove Variable', "Removes a specific variable by name", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of the variable to remove.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('resequence', 'ResequenceDefinition', 'Resequence', "Resequences (re-order) messages based on an expression", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to use for re-ordering the messages, such as a header with a sequence number", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('resequence', 'ResequenceDefinition', 'Resequence', "Reorders messages based on a sequence expression, either in batch mode (collect and sort) or stream mode (continuous reordering with a timeout)", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "Expression to use for re-ordering the messages, such as a header with a sequence number.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('batchConfig', 'batchConfig', "batchConfig", 'BatchResequencerConfig', '', '', false, false, false, true, '', ''),
         new PropertyMeta('streamConfig', 'streamConfig', "streamConfig", 'StreamResequencerConfig', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('resumable', 'ResumableDefinition', 'Resumable', "Resume EIP to support resuming processing from last known offset.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('resumeStrategy', 'Resume Strategy', "Sets the resume strategy to use", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('resumable', 'ResumableDefinition', 'Resumable', "Enables resuming processing from the last known offset after a restart, using a resume strategy to track and restore position", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resumeStrategy', 'Resume Strategy', "The resume strategy to use for resuming processing from the last known offset.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('loggingLevel', 'Logging Level', "The logging level to use in case of failures.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('intermittent', 'Intermittent', "Sets whether the offsets will be intermittently present or whether they must be present in every exchange", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('intermittent', 'Intermittent', "Whether the offsets will be intermittently present or whether they must be present in every exchange.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('rollback', 'RollbackDefinition', 'Rollback', "Forces a rollback by stopping routing the message", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('message', 'Message', "Message to use in rollback exception", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('markRollbackOnly', 'Mark Rollback Only', "Mark the transaction for rollback only (cannot be overruled to commit)", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('markRollbackOnlyLast', 'Mark Rollback Only Last', "Mark only last sub transaction for rollback only. When using sub transactions (if the transaction manager support this)", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('rollback', 'RollbackDefinition', 'Rollback', "Forces a rollback of the current transaction and stops routing the message. Can set a custom message on the exception.", 'eip,errorhandling,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('message', 'Message', "The message to set on the exception when rolling back.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('markRollbackOnly', 'Mark Rollback Only', "If enabled then only the current transaction is marked for rollback. No exception is thrown and the route continues to execute.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('markRollbackOnlyLast', 'Mark Rollback Only Last', "If enabled then only the last sub-transaction (from the last transacted EIP) is marked for rollback. This allows partial rollbacks in nested transaction scenarios.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('routingSlip', 'RoutingSlipDefinition', 'Routing Slip', "Routes a message through a series of steps that are pre-determined (the slip)", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to define the routing slip, which defines which endpoints to route the message in a pipeline style. Notice the expression is evaluated once, if you want a more dynamic style, then the dynamic router eip is a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('uriDelimiter', 'Uri Delimiter', "Sets the uri delimiter to use", 'string', '', ',', false, false, false, false, '', ''),
-        new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this routing slip, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as pro [...]
+    new ElementMeta('routingSlip', 'RoutingSlipDefinition', 'Routing Slip', "Routes a message through a pre-determined sequence of endpoints defined in a header or expression (the routing slip). The list of endpoints is evaluated once upfront.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to compute the routing slip of endpoint URIs. The result is a delimited list of endpoint URIs that defines the series of processing steps.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('uriDelimiter', 'Uri Delimiter', "The delimiter used to separate endpoint URIs in the routing slip expression. Default is comma.", 'string', '', ',', false, false, false, false, '', ''),
+        new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "If enabled then invalid endpoint URIs are ignored and logged instead of throwing an exception.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('cacheSize', 'Cache Size', "Configures the cache size for ProducerCache which caches producers for reuse. The default cache size is 1000. Set to -1 to turn off caching.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
     ], [
         new ExchangePropertyMeta('CamelSlipEndpoint', 'Slip Endpoint', 'producer', 'String', "The endpoint uri of this routing slip"),
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('saga', 'SagaDefinition', 'Saga', "Enables Sagas on the route", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('sagaService', 'Saga Service', "Refers to the id to lookup in the registry for the specific CamelSagaService to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('propagation', 'Propagation', "Set the Saga propagation mode (REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER).", 'string', 'REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER', 'REQUIRED', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('completionMode', 'Completion Mode', "Determine how the saga should be considered complete. When set to AUTO, the saga is completed when the exchange that initiates the saga is processed successfully, or compensated when it completes exceptionally. When set to MANUAL, the user must complete or compensate the saga using the saga:complete or saga:compensate endpoints.", 'string', 'AUTO, MANUAL', 'AUTO', false, false, false, false, 'advanced', ''),
+    new ElementMeta('saga', 'SagaDefinition', 'Saga', "Defines a Saga (long-running action) that coordinates distributed services toward a consistent outcome. Unlike XA transactions, Sagas use compensating actions for rollback and work across heterogeneous services.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('sagaService', 'Saga Service', "Refers to the id to lookup in the registry for the specific CamelSagaService to use", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('propagation', 'Propagation', "Set the Saga propagation mode. REQUIRED joins an existing saga or starts a new one. REQUIRES_NEW always starts a new saga, suspending any existing one. MANDATORY requires an existing saga and fails if none is active. SUPPORTS joins an existing saga if present but does not start a new one. NOT_SUPPORTED executes outside any saga, suspending an existing one. NEVER fails if a saga is already active.", 'string', 'REQUIRED, REQUIRES_NEW, [...]
+        new PropertyMeta('completionMode', 'Completion Mode', "Determine how the saga should be considered complete. When set to AUTO, the saga is completed when the exchange is processed successfully, or compensated when it completes exceptionally. When set to MANUAL, the user must complete or compensate the saga using the saga:complete or saga:compensate endpoints.", 'string', 'AUTO, MANUAL', 'AUTO', false, false, false, false, 'advanced', ''),
         new PropertyMeta('timeout', 'Timeout', "Set the maximum amount of time for the Saga. After the timeout is expired, the saga will be compensated automatically (unless a different decision has been taken in the meantime).", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('compensation', 'Compensation', "The compensation endpoint URI that must be called to compensate all changes done in the route. The route corresponding to the compensation URI must perform compensation and complete without error. If errors occur during compensation, the saga service may call again the compensation URI to retry.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('completion', 'Completion', "The completion endpoint URI that will be called when the Saga is completed successfully. The route corresponding to the completion URI must perform completion tasks and terminate without error. If errors occur during completion, the saga service may call again the completion URI to retry.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('option', 'Option', "Allows to save properties of the current exchange in order to re-use them in a compensation/completion callback route. Options are usually helpful e.g. to store and retrieve identifiers of objects that should be deleted in compensating actions. Option values will be transformed into input headers of the compensation/completion exchange.", 'PropertyExpressionDefinition', '', '', false, false, true, true, 'advanced', ''),
+        new PropertyMeta('compensation', 'Compensation', "The compensation endpoint URI that must be called to compensate all changes done in the route. The route corresponding to the compensation URI must perform compensation and complete without error.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('completion', 'Completion', "The completion endpoint URI that will be called when the Saga is completed successfully. The route corresponding to the completion URI must perform completion tasks and terminate without error.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('option', 'Option', "Allows to save properties of the current exchange in order to re-use them in a compensation/completion callback route. Option values will be transformed into input headers of the compensation/completion exchange.", 'PropertyExpressionDefinition', '', '', false, false, true, true, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('sample', 'SamplingDefinition', 'Sample', "Extract a sample of the messages passing through a route", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('samplePeriod', 'Sample Period', "Sets the sample period during which only a single Exchange will pass through.", 'string', '', '1000', false, false, false, false, '', ''),
-        new PropertyMeta('messageFrequency', 'Message Frequency', "Sets the sample message count which only a single Exchange will pass through after this many received.", 'number', '', '', false, false, false, false, '', ''),
+    new ElementMeta('sample', 'SamplingDefinition', 'Sample', "Samples a subset of messages passing through the route, either by frequency count or time interval, and discards the rest", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('samplePeriod', 'Sample Period', "The period between samples, using a time-based approach. Default is 1 second.", 'string', '', '1000', false, false, false, false, '', ''),
+        new PropertyMeta('messageFrequency', 'Message Frequency', "The frequency of samples as a message count, using a message-frequency approach. For example, a value of 5 means every 5th message is sampled.", 'number', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('script', 'ScriptDefinition', 'Script', "Executes a script from a language which does not change the message body.", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Script to be executed.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('script', 'ScriptDefinition', 'Script', "Executes an expression or script in a chosen language for side effects without modifying the message body", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to evaluate as a script. The script result does not change the message body (use transform instead if that is desired).", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('setBody', 'SetBodyDefinition', 'Set Body', "Sets the contents of the message body", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression that returns the new body to use", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('setBody', 'SetBodyDefinition', 'Set Body', "Sets the message body to a value computed by an expression", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression whose result is used as the new message body.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('setExchangePattern', 'SetExchangePatternDefinition', 'Set Exchange Pattern', "Sets the exchange pattern on the message exchange", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('pattern', 'Pattern', "Sets the new exchange pattern of the Exchange to be used from this point forward", 'string', 'InOnly, InOut', '', true, false, false, false, '', ''),
+    new ElementMeta('setExchangePattern', 'SetExchangePatternDefinition', 'Set Exchange Pattern', "Sets the message exchange pattern (MEP) on the exchange, such as InOnly for one-way or InOut for request-reply", 'configuration,messaging', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('pattern', 'Pattern', "The new exchange pattern to use from this point forward.", 'string', 'InOnly, InOut', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('setHeader', 'SetHeaderDefinition', 'Set Header', "Sets the value of a message header", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of message header to set a new value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to return the value of the header", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('setHeader', 'SetHeaderDefinition', 'Set Header', "Sets a message header to a value computed by an expression", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of message header to set a new value. The simple language can be used to define a dynamic evaluated header name. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression whose result is used as the header value.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('setHeaders', 'SetHeadersDefinition', 'Set Headers', "Allows setting multiple headers on the message at the same time.", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('setHeaders', 'SetHeadersDefinition', 'Set Headers', "Sets multiple message headers at once, each computed by its own expression", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('headers', 'Headers', "Contains the headers to be set", 'SetHeaderDefinition', '', '', true, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('setProperty', 'SetPropertyDefinition', 'Set Property', "Sets a named property on the message exchange", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of exchange property to set a new value. The simple language can be used to define a dynamic evaluated exchange property name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to return the value of the message exchange property", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('setProperty', 'SetPropertyDefinition', 'Set Property', "Sets an exchange property to a value computed by an expression", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of exchange property to set a new value. The simple language can be used to define a dynamic evaluated property name. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression whose result is used as the exchange property value.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('setVariable', 'SetVariableDefinition', 'Set Variable', "Sets the value of a variable", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('name', 'Name', "Name of variable to set a new value The simple language can be used to define a dynamic evaluated variable name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to return the value of the variable", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('setVariable', 'SetVariableDefinition', 'Set Variable', "Sets a variable to a value computed by an expression", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('name', 'Name', "Name of variable to set a new value. The simple language can be used to define a dynamic evaluated variable name. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The expression whose result is used as the variable value.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('setVariables', 'SetVariablesDefinition', 'Set Variables', "Allows setting multiple variables at the same time.", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('setVariables', 'SetVariablesDefinition', 'Set Variables', "Sets multiple variables at once, each computed by its own expression", 'eip,messaging,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('variables', 'Variables', "Contains the variables to be set", 'SetVariableDefinition', '', '', true, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('sort', 'SortDefinition', 'Sort', "Sorts the contents of the message", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Optional expression to sort by something else than the message body", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('comparator', 'Comparator', "Sets the comparator to use for sorting", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('sort', 'SortDefinition', 'Sort', "Sorts the items in a message body that is a List, using a specified comparator or the default ordering", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to use for sorting. The message body is split into a list, sorted using this expression as the comparator key, and then reassembled.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('comparator', 'Comparator', "Sets a reference to lookup for the comparator to use for sorting.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('split', 'SplitDefinition', 'Split', "Splits a single message into many sub-messages.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression of how to split the message body, such as as-is, using a tokenizer, or using a xpath.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('delimiter', 'Delimiter', "Delimiter used in splitting messages. Can be turned off using the value false. To force not splitting then the delimiter can be set to single to use the value as a single list, this can be needed in some special situations. The default value is comma.", 'string', '', ',', false, false, false, false, '', ''),
-        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets a reference to the AggregationStrategy to be used to assemble the replies from the split messages, into a single outgoing message from the Splitter. By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
-        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('split', 'SplitDefinition', 'Split', "Splits a message into multiple sub-messages using an expression, and processes each one individually. Supports parallel processing and result aggregation.", 'aggregate,eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression that returns the value to use for splitting. The result can be an Iterator, Iterable, Array, Collection, Map, NodeList, or a delimited String.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('delimiter', 'Delimiter', "Delimiter used in splitting messages. Can be turned off using the value false. To force not splitting then the delimiter can be set to single to use the value as a single list. The default value is comma.", 'string', '', ',', false, false, false, false, '', ''),
+        new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Reference to the AggregationStrategy to assemble the replies from the split messages into a single outgoing message. By default Camel uses the original incoming message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
+        new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "The method name to use when using a POJO as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If true then null is used as the oldExchange when there is no data to aggregate, when using POJOs as the AggregationStrategy.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parallelAggregate', 'Parallel Aggregate', "If enabled then the aggregate method on AggregationStrategy can be called concurrently. Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. By default this is false meaning that Camel synchronizes the call to the aggregate method. Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe.", 'bo [...]
-        new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then processing each split messages occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues. It's only processing the sub messages from the splitter which happens concurrently. When parallel processing is enabled, then the Camel routing engin will continue processing using last used thread from the parallel thread pool. However, if you wan [...]
-        new PropertyMeta('synchronous', 'Synchronous', "Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the split is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('streaming', 'Streaming', "When in streaming mode, then the splitter splits the original message on-demand, and each split message is processed one by one. This reduces memory usage as the splitter do not split all the messages first, but then we do not know the total size, and therefore the org.apache.camel.Exchange#SPLIT_SIZE is empty. In non-streaming mode (default) the splitter will split each message first, to know the total size, and then process each messa [...]
-        new PropertyMeta('stopOnException', 'Stop On Exception', "Will now stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message) or an exception was thrown and handled by the error handler (such as using onException). In all situations the splitter will stop further processing. This is the same behavior as in pipeline, whi [...]
-        new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Splitter hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Splitter breaks out and continues. The timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner may continu [...]
-        new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Splitter will by default not share unit of work between the parent exchange and each split exchange. This means each split exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then processing each split message occurs concurrently. The caller thread still waits until all messages are fully processed before it continues.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('synchronous', 'Synchronous', "When enabled then the same thread is used to continue routing after the split is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('streaming', 'Streaming', "When enabled then the splitter splits the original message on-demand, and each split message is processed one by one. This reduces memory usage as the splitter does not split all messages first.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('stopOnException', 'Stop On Exception', "If enabled then stops further split processing if an exception or failure occurred during processing of a split message, and the caused exception will be thrown. The default behavior is to not stop but continue processing till the end.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeout', 'Timeout', "Total timeout in millis when using parallel processing. If the splitter has not been able to process all replies within the given timeframe, then the timeout triggers and the splitter breaks out and continues.", 'string', '', '0', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('executorService', 'Executor Service', "Reference to a custom thread pool to use for parallel processing. Setting this option implies parallel processing.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onPrepare', 'On Prepare', "Reference to a processor for preparing the exchange to be sent. Can be used to deep-clone messages that should be sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the unit of work with the parent and each of the split messages. By default each split exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('group', 'Group', "Groups N split messages into a single message with a java.util.List body. This allows processing items in chunks instead of one at a time.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('errorThreshold', 'Error Threshold', "Sets the error threshold as a fraction (0.0-1.0) of failed items before aborting the split operation. For example, 0.1 means abort if more than 10% of items fail. When the threshold is exceeded, a org.apache.camel.CamelExchangeException is thrown. This option is mutually exclusive with stopOnException . When set, individual item failures are tracked but processing continues until the threshold is exceeded. Note: When combined [...]
+        new PropertyMeta('maxFailedRecords', 'Max Failed Records', "Sets the maximum number of failed records before aborting the split operation. When the count is exceeded, a org.apache.camel.CamelExchangeException is thrown. This option is mutually exclusive with stopOnException . Can be combined with errorThreshold processing aborts when either threshold is exceeded.", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('resumeStrategy', 'Resume Strategy', "Sets a ResumeStrategy for resume-from-last-position support. The watermark key must also be configured via watermarkKey(String) .", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('watermarkKey', 'Watermark Key', "Sets the key to use in the watermark store.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('watermarkExpression', 'Watermark Expression', "Sets a Simple expression to evaluate on each completed sub-exchange to determine the new watermark value. When set, enables value-based watermarking instead of index-based. The expression is evaluated using the Simple language.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelSplitIndex', 'Split Index', 'producer', 'int', "A split counter that increases for each Exchange being split. The counter starts from 0."),
         new ExchangePropertyMeta('CamelSplitComplete', 'Split Complete', 'producer', 'boolean', "Whether this Exchange is the last."),
         new ExchangePropertyMeta('CamelSplitSize', 'Split Size', 'producer', 'int', "The total number of Exchanges that was split. This property is not applied for stream based splitting, except for the very last message because then Camel knows the total size."),
+        new ExchangePropertyMeta('CamelSplitResult', 'Split Result', 'producer', 'org.apache.camel.SplitResult', "The result of a Splitter EIP operation with error thresholds, providing structured failure details."),
+        new ExchangePropertyMeta('CamelSplitWatermark', 'Split Watermark', 'producer', 'String', "The current watermark value from the watermark store, set before split processing begins."),
     ]),
-    new ElementMeta('step', 'StepDefinition', 'Step', "Routes the message to a sequence of processors which is grouped together as one logical name", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('step', 'StepDefinition', 'Step', "Groups a sequence of processing steps under a single logical name for improved monitoring, management, and tracing visibility", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelStepId', 'Step Id', 'producer', 'String', "The id of the Step EIP"),
     ]),
-    new ElementMeta('stop', 'StopDefinition', 'Stop', "Stops the processing of the current message", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('stop', 'StopDefinition', 'Stop', "Stops processing of the current message and marks the exchange as completed without sending it to any further steps", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('threads', 'ThreadsDefinition', 'Threads', "Specifies that all steps after this node are processed asynchronously", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('executorService', 'Executor Service', "To use a custom thread pool", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('maxPoolSize', 'Max Pool Size', "Sets the maximum pool size", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('keepAliveTime', 'Keep Alive Time', "Sets the keep alive time for idle threads", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('timeUnit', 'Time Unit', "Sets the keep alive time unit. By default SECONDS is used.", 'string', 'NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('maxQueueSize', 'Max Queue Size', "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowCoreThreadTimeOut', 'Allow Core Thread Time Out', "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size Is by default false", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('threadName', 'Thread Name', "Sets the thread name to use.", 'string', '', 'Threads', false, false, false, false, '', ''),
-        new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool.", 'string', 'Abort, CallerRuns', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not to use as caller runs as fallback when a task is rejected being added to the thread pool (when its full). This is only used as fallback if no rejectedPolicy has been configured, or the thread pool has no configured rejection handler. Is by default true", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-    ], [
-    ]),
-    new ElementMeta('throttle', 'ThrottleDefinition', 'Throttle', "Controls the rate at which messages are passed to the next node in the route", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to configure the maximum number of messages to throttle per request", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('mode', 'Mode', "Sets the throttling mode to one of the available modes enumerated in ThrottlingMode", 'string', 'TotalRequests, ConcurrentRequests', 'TotalRequests', false, false, false, false, '', ''),
-        new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for throttle grouping. The Exchange which has the same correlation key is throttled together.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, '', ''),
+    new ElementMeta('threads', 'ThreadsDefinition', 'Threads', "Offloads processing of subsequent steps in the route to a thread pool, enabling asynchronous and concurrent message handling", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('executorService', 'Executor Service', "To refer to a custom thread pool or use a thread pool profile (as overlay)", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size (number of threads to keep in the pool, even if idle).", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('maxPoolSize', 'Max Pool Size', "Sets the maximum pool size (the upper bound of threads in the pool).", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('keepAliveTime', 'Keep Alive Time', "Sets the keep alive time for idle threads before they are terminated. Only applies to threads above the core pool size.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('timeUnit', 'Time Unit', "Sets the time unit for the keep alive time. By default SECONDS is used.", 'string', 'NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('maxQueueSize', 'Max Queue Size', "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowCoreThreadTimeOut', 'Allow Core Thread Time Out', "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('threadName', 'Thread Name', "Sets the thread name pattern to use for naming threads created by this thread pool.", 'string', '', 'Threads', false, false, false, false, '', ''),
+        new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool", 'string', 'Abort, CallerRuns, Block', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether to use the caller thread as fallback when a task is rejected being added to the thread pool (when its full). This is only used as fallback if no rejectedPolicy has been configured, or the thread pool has no configured rejection handler.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+    ], [
+    ]),
+    new ElementMeta('throttle', 'ThrottleDefinition', 'Throttle', "Limits the message throughput to a maximum number of messages per time period to avoid overloading downstream systems", 'eip,flowcontrol,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression to set the maximum request count (for TotalRequests mode) or the maximum number of concurrent requests (for ConcurrentRequests mode).", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('mode', 'Mode', "Sets the throttling mode. TotalRequests limits the total number of requests within a time period. ConcurrentRequests uses a leaky-bucket algorithm to limit the number of concurrent requests being processed at the same time.", 'string', 'TotalRequests, ConcurrentRequests', 'TotalRequests', false, false, false, false, '', ''),
+        new PropertyMeta('correlationExpression', 'Correlation Expression', "The correlation expression to use for throttle grouping. Exchanges with the same correlation key are throttled together.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('executorService', 'Executor Service', "To use a custom thread pool (ScheduledExecutorService) by the throttler.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('asyncDelayed', 'Async Delayed', "Enables asynchronous delay which means the thread will not block while delaying.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('rejectExecution', 'Reject Execution', "Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit Is by default false", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('timePeriodMillis', 'Time Period Millis', "Sets the time period during which the maximum request count is valid for", 'string', '', '1000', false, false, false, false, '', ''),
+        new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not the caller should run the task when it was rejected by the thread pool.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('rejectExecution', 'Reject Execution', "Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timePeriodMillis', 'Time Period Millis', "Sets the time period during which the maximum request count is valid for.", 'string', '', '1000', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('throwException', 'ThrowExceptionDefinition', 'Throw Exception', "Throws an exception", 'error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('message', 'Message', "To create a new exception instance and use the given message as caused message (supports simple language)", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('exceptionType', 'Exception Type', "The class of the exception to create using the message.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ref', 'Ref', "Reference to the exception instance to lookup from the registry to throw", 'string', '', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('throwException', 'ThrowExceptionDefinition', 'Throw Exception', "Throws an exception during route processing, either creating a new exception instance or re-throwing an existing one", 'error,errorhandling', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('message', 'Message', "The message text for the exception to be thrown. Supports simple language expressions.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('exceptionType', 'Exception Type', "The fully qualified class name of the exception to throw. Used together with message.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to an existing exception instance to lookup from the registry and throw.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('to', 'ToDefinition', 'To', "Sends the message to a static endpoint", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('uri', 'Uri', "Sets the uri of the endpoint to send to.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', ''),
+    new ElementMeta('to', 'ToDefinition', 'To', "Sends the message to a fixed endpoint URI", 'eip,endpoint,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern to use. If not specified the default exchange pattern is used.", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ], [
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('toD', 'ToDynamicDefinition', 'To D', "Sends the message to a dynamic endpoint", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current Message , however the headers from the Message will still be used as well. In other words, the variable is used instead of the message body [...]
-        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
+    new ElementMeta('toD', 'ToDynamicDefinition', 'To D', "Sends the message to an endpoint URI computed dynamically from an expression, allowing the destination to vary per message", 'eip,endpoint,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the simple language.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint.", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers when uris are reused. Use 0 for default cache size, or -1 to turn cache off.", 'number', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Whether to ignore invalid endpoint URIs and skip sending the message.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware .", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise toD if they are SendDynamicAware.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('autoStartComponents', 'Auto Start Components', "Whether to auto startup components when toD is starting up.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ], [
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('tokenizer', 'TokenizerDefinition', 'Specialized tokenizer for AI applications', "Represents a Camel tokenizer for AI.", 'eip,transformation,ai', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('tokenizer', 'TokenizerDefinition', 'Specialized tokenizer for AI applications', "Tokenizes the message body for AI processing, splitting text into chunks suitable for embedding or LLM input", 'eip,transformation,ai', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('langChain4jCharacterTokenizer', 'langChain4jCharacterTokenizer', "langChain4jCharacterTokenizer", 'LangChain4jCharacterTokenizerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('langChain4jLineTokenizer', 'langChain4jLineTokenizer', "langChain4jLineTokenizer", 'LangChain4jLineTokenizerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('langChain4jParagraphTokenizer', 'langChain4jParagraphTokenizer', "langChain4jParagraphTokenizer", 'LangChain4jParagraphTokenizerDefinition', '', '', false, false, false, true, '', ''),
@@ -1760,49 +1808,49 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('langChain4jWordTokenizer', 'langChain4jWordTokenizer', "langChain4jWordTokenizer", 'LangChain4jWordTokenizerDefinition', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('transacted', 'TransactedDefinition', 'Transacted', "Enables transaction on the route", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('transacted', 'TransactedDefinition', 'Transacted', "Wraps the route in a transaction, ensuring that all steps within the transacted block either complete together or roll back on failure", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to lookup a transacted policy in the registry.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('transformDataType', 'TransformDataTypeDefinition', 'Transform Data Type', "Transforms the message body based on known data type transformers.", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('fromType', 'From Type', "From type used in data type transformation.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('toType', 'To Type', "To type used as a target data type in the transformation.", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('transformDataType', 'TransformDataTypeDefinition', 'Transform Data Type', "Transforms the message body between known data types (such as XML, JSON, Java objects) using registered data type transformers", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('fromType', 'From Type', "The source data type URN in the format 'scheme:name' (e.g. 'java:com.example.MyClass'). If not specified, the current message body type is used.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('toType', 'To Type', "The target data type URN in the format 'scheme:name' (e.g. 'json:JsonOrder') that the message body should be transformed into.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('transform', 'TransformDefinition', 'Transform', "Transforms the message body based on an expression", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('transform', 'TransformDefinition', 'Transform', "Sets the message body using an expression. Unlike setBody, transform also sets the OUT message body in InOut exchanges", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The expression whose result replaces the message body.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('doTry', 'TryDefinition', 'Do Try', "Marks the beginning of a try, catch, finally block", 'eip,routing,error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('doTry', 'TryDefinition', 'Do Try', "Wraps route steps in a try-catch-finally block for fine-grained exception handling within the route", 'eip,error,errorhandling,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('doCatch', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'CatchDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('doFinally', 'Do Finally', "Path traversed when a try, catch, finally block exits", 'FinallyDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('unmarshal', 'UnmarshalDefinition', 'Unmarshal', "Converts the message data received from the wire into a format that Apache Camel processors can consume", 'eip,dataformat,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('unmarshal', 'UnmarshalDefinition', 'Unmarshal', "Deserializes the message body from a specific data format such as JSON, XML, CSV, or Protobuf into a Java object", 'eip,dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('allowNullBody', 'Allow Null Body', "Indicates whether null is allowed as value of a body to unmarshall.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
@@ -1820,6 +1868,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('groovyJson', 'groovyJson', "groovyJson", 'GroovyJSonDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
@@ -1853,41 +1902,41 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('validate', 'ValidateDefinition', 'Validate', "Validates a message based on an expression", 'eip,transformation', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('expression', 'Expression', "Expression to use for validation as a predicate. The expression should return either true or false. If returning false the message is invalid and an exception is thrown.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('predicateExceptionFactory', 'Predicate Exception Factory', "The bean id of custom PredicateExceptionFactory to use for creating the exception when the validation fails. By default, Camel will throw PredicateValidationException. By using a custom factory you can control which exception to throw instead.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.spi.PredicateExceptionFactory'),
+    new ElementMeta('validate', 'ValidateDefinition', 'Validate', "Validates the message against a predicate expression and throws a PredicateValidationException if the validation fails", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('expression', 'Expression', "The predicate expression to validate against the current message. If the predicate returns false, a PredicateValidationException is thrown.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('predicateExceptionFactory', 'Predicate Exception Factory', "Reference to a custom PredicateExceptionFactory for creating the exception when validation fails.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.spi.PredicateExceptionFactory'),
     ], [
     ]),
-    new ElementMeta('wireTap', 'WireTapDefinition', 'Wire Tap', "Routes a copy of a message (or creates a new message) to a secondary destination while continue routing the original message.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('copy', 'Copy', "Uses a copy of the original exchange", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('dynamicUri', 'Dynamic Uri', "Whether the uri is dynamic or static. If the uri is dynamic then the simple language is used to evaluate a dynamic uri to use as the wire-tap destination, for each incoming message. This works similar to how the toD EIP pattern works. If static then the uri is used as-is as the wire-tap destination.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('executorService', 'Executor Service', "Uses a custom thread pool", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current Message , however the headers from the Message will still be used as well. In other words, the variable is used instead of the message body [...]
-        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
+    new ElementMeta('wireTap', 'WireTapDefinition', 'Wire Tap', "Sends a copy of the message to a secondary endpoint without affecting the original route flow. The tapped message is sent asynchronously in a separate thread", 'eip,endpoint,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('copy', 'Copy', "Whether to use a copy of the original exchange.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('dynamicUri', 'Dynamic Uri', "Whether the uri is dynamic or static. If dynamic then the simple language is used to evaluate a dynamic uri to use as the wire-tap destination, for each incoming message.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onPrepare', 'On Prepare', "Uses a processor when preparing the exchange to be sent. This can be used to deep-clone messages, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('executorService', 'Executor Service', "Uses a custom thread pool for sending tapped exchanges.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the simple language.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers when uris are reused. Use 0 for default cache size, or -1 to turn cache off.", 'number', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Whether to ignore invalid endpoint URIs and skip sending the message.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware .", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise toD if they are SendDynamicAware.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('autoStartComponents', 'Auto Start Components', "Whether to auto startup components when toD is starting up.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('allowedSchemes', 'Allowed Schemes', "Sets an optional comma-separated allow-list of component schemes that the dynamic recipient may resolve to (e.g. http,https). When set, a dynamic endpoint whose scheme is not in the list is rejected. This is a defence-in-depth restriction, useful for low-code / Kamelet deployments; by default (unset) any scheme is allowed.", 'string', '', '', false, false, false, false, 'advanced,security', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ], [
         new ExchangePropertyMeta('CamelToEndpoint', 'To Endpoint', 'producer', 'String', "Endpoint URI where this Exchange is being sent to"),
     ]),
-    new ElementMeta('intercept', 'InterceptDefinition', 'Intercept', "Intercepts a message at each step in the route", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('intercept', 'InterceptDefinition', 'Intercept', "Intercepts each message at every processing step in the route, allowing cross-cutting logic such as logging or auditing", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onWhen', 'On When', "To use an expression to only trigger intercepting in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
@@ -1895,12 +1944,12 @@ export const CamelModelMetadata: ElementMeta[] = [
         new ExchangePropertyMeta('CamelInterceptedRouteEndpointUri', 'Intercepted Route Endpoint Uri', 'producer', 'String', "The route's endpoint URI that was intercepted"),
         new ExchangePropertyMeta('CamelInterceptedRouteId', 'Intercepted Route Id', 'producer', 'String', "The intercepted route's ID"),
     ]),
-    new ElementMeta('interceptFrom', 'InterceptFromDefinition', 'Intercept From', "Intercepts incoming messages", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('uri', 'Uri', "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('interceptFrom', 'InterceptFromDefinition', 'Intercept From', "Intercepts incoming messages arriving from consumer endpoints, optionally filtering by endpoint URI pattern", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('uri', 'Uri', "Intercept incoming messages from the uri or uri pattern. If not configured, then all incoming messages are intercepted.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('onWhen', 'On When', "To use an expression to only trigger intercepting in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
@@ -1909,13 +1958,13 @@ export const CamelModelMetadata: ElementMeta[] = [
         new ExchangePropertyMeta('CamelInterceptedRouteEndpointUri', 'Intercepted Route Endpoint Uri', 'producer', 'String', "The route's endpoint URI that was intercepted"),
         new ExchangePropertyMeta('CamelInterceptedRouteId', 'Intercepted Route Id', 'producer', 'String', "The intercepted route's ID"),
     ]),
-    new ElementMeta('interceptSendToEndpoint', 'InterceptSendToEndpointDefinition', 'Intercept Send To Endpoint', "Intercepts messages being sent to an endpoint", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('interceptSendToEndpoint', 'InterceptSendToEndpointDefinition', 'Intercept Send To Endpoint', "Intercepts messages being sent to a specific endpoint, allowing the message to be modified or the send to be skipped", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('uri', 'Uri', "Intercept sending to the uri or uri pattern.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('skipSendToOriginalEndpoint', 'Skip Send To Original Endpoint', "If set to true then the message is not sent to the original endpoint. By default (false) the message is both intercepted and then sent to the original endpoint.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('skipSendToOriginalEndpoint', 'Skip Send To Original Endpoint', "Whether to skip sending the message to the original endpoint. By default, the message is both intercepted and then sent to the original endpoint.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('afterUri', 'After Uri', "After sending to the endpoint then send the message to this uri which allows to process its result.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onWhen', 'On When', "To use an expression to only trigger intercepting sending to an endpoint in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
@@ -1925,147 +1974,149 @@ export const CamelModelMetadata: ElementMeta[] = [
         new ExchangePropertyMeta('CamelInterceptedRouteEndpointUri', 'Intercepted Route Endpoint Uri', 'producer', 'String', "The route's endpoint URI that was intercepted"),
         new ExchangePropertyMeta('CamelInterceptedRouteId', 'Intercepted Route Id', 'producer', 'String', "The intercepted route's ID"),
     ]),
-    new ElementMeta('onCompletion', 'OnCompletionDefinition', 'On Completion', "Route to be executed when normal route processing completes", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('mode', 'Mode', "Sets the on completion mode. The default value is AfterConsumer", 'string', 'AfterConsumer, BeforeConsumer', 'AfterConsumer', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onCompleteOnly', 'On Complete Only', "Will only synchronize when the org.apache.camel.Exchange completed successfully (no errors).", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('onFailureOnly', 'On Failure Only', "Will only synchronize when the org.apache.camel.Exchange ended with failure (exception or FAULT message).", 'boolean', '', 'false', false, false, false, false, '', ''),
+    new ElementMeta('onCompletion', 'OnCompletionDefinition', 'On Completion', "Defines steps to execute when route processing completes, either on success, failure, or both", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('mode', 'Mode', "Controls when the on-completion callback runs. AfterConsumer (default) runs after the consumer has written the response back to the caller. BeforeConsumer runs before the consumer writes the response, allowing the on-completion route to modify the Exchange before it is returned to the caller (e.g. in InOut mode).", 'string', 'AfterConsumer, BeforeConsumer', 'AfterConsumer', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onCompleteOnly', 'On Complete Only', "Will only synchronize when the Exchange completed successfully (no errors)", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('onFailureOnly', 'On Failure Only', "Will only synchronize when the Exchange ended with failure (exception or FAULT message)", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then the on completion process will run asynchronously by a separate thread from a thread pool. By default this is false, meaning the on completion process will run synchronously using the same caller thread as from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input message body when an org.apache.camel.Exchange for this on completion. The original input message is defensively copied, and the copied message body is converted to org.apache.camel.StreamCache if possible (stream caching is enabled, can be disabled globally or on the original route), to ensure the body can be read when the original message is being used later. If the body is converted to  [...]
+        new PropertyMeta('executorService', 'Executor Service', "Refers to a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input message when an Exchange for this on completion. By default this feature is off.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onWhen', 'On When', "To use an expression to only trigger routing this completion steps in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelOnCompletion', 'On Completion', 'producer', 'boolean', "Flag to mark that this exchange is currently being executed as onCompletion"),
     ]),
-    new ElementMeta('onException', 'OnExceptionDefinition', 'On Exception', "Route to be executed when an exception is thrown", 'error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('exception', 'Exception', "A set of exceptions to react upon.", 'string', '', '', true, false, true, true, '', ''),
+    new ElementMeta('onException', 'OnExceptionDefinition', 'On Exception', "Defines exception handling for specific exception types, with options for redelivery, logging, and routing to error endpoints", 'error,errorhandling', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('exception', 'Exception', "A list of exception class names to catch and handle.", 'string', '', '', true, false, true, true, '', ''),
         new PropertyMeta('onWhen', 'On When', "To use an expression to only trigger this in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('retryWhile', 'Retry While', "Sets the retry while predicate. Will continue retrying until predicate returns false.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Used for configuring redelivery options", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a redelivery policy to lookup in the org.apache.camel.spi.Registry to be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('handled', 'Handled', "Sets whether the exchange should be marked as handled or not.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('continued', 'Continued', "Sets whether the exchange should handle and continue routing from the point of failure. If this option is enabled then its considered handled as well.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
-        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('retryWhile', 'Retry While', "Sets a predicate to control whether redelivery should continue. Redelivery continues as long as the predicate evaluates to true.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Configures redelivery options such as maximum redeliveries, delays, and logging behavior.", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a redelivery policy to lookup in the registry to be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('handled', 'Handled', "When handled is set to true, the exception is suppressed and not sent back to the caller. The original route stops at the point of failure and only the steps in this onException block execute. The response returned to the caller is whatever this onException block produces. Use continued instead if you want to resume the original route from the point of failure.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('continued', 'Continued', "When continued is set to true, the exception is handled and routing continues from the point of failure. Unlike handled, which stops the original route and only runs the onException block, continued resumes the original route after the onException steps complete. The exception is considered handled as well.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that is invoked before each redelivery attempt. Can be used to change the exchange before it is redelivered.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that is invoked just after an exception occurred. Can be used to perform custom logging. Any exception thrown from this processor is ignored.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "If enabled, uses the original input message (body and headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. Cannot be used together with useOriginalBody.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "If enabled, uses the original input message body (but not headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. This allows enriching the message with custom headers while keeping the original body. Cannot be used together with useOriginalMessage.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
         new ExchangePropertyMeta('CamelExceptionCaught', 'Exception Caught', 'producer', 'java.lang.Exception', "Stores the caught exception due to a processing error of the current Exchange"),
         new ExchangePropertyMeta('CamelFailureEndpoint', 'Failure Endpoint', 'producer', 'String', "Endpoint URI where the Exchange failed during processing"),
         new ExchangePropertyMeta('CamelFailureRouteId', 'Failure Route Id', 'producer', 'String', "Route ID where the Exchange failed during processing"),
     ]),
-    new ElementMeta('routeConfiguration', 'RouteConfigurationDefinition', 'Route Configuration', "Reusable configuration for Camel route(s).", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('errorHandler', 'Error Handler', "Sets the error handler to use, for routes that has not already been configured with an error handler.", 'ErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('intercept', 'Intercept', "Adds a route for an interceptor that intercepts every processing step.", 'InterceptDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('interceptFrom', 'Intercept From', "Adds a route for an interceptor that intercepts incoming messages on the given endpoint.", 'InterceptFromDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('interceptSendToEndpoint', 'Intercept Send To Endpoint', "Applies a route for an interceptor if an exchange is send to the given endpoint", 'InterceptSendToEndpointDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('onException', 'On Exception', "Exception clause for catching certain exceptions and handling them.", 'OnExceptionDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('onCompletion', 'On Completion', "On completion callback for doing custom routing when the org.apache.camel.Exchange is complete.", 'OnCompletionDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('precondition', 'Precondition', "The predicate of the precondition in simple language to evaluate in order to determine if this route configuration should be included or not.", 'string', '', '', false, false, false, false, 'advanced', ''),
-    ], [
-    ]),
-    new ElementMeta('route', 'RouteDefinition', 'Route', "A Camel route", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('routeConfiguration', 'RouteConfigurationDefinition', 'Route Configuration', "Defines reusable configuration that is automatically applied to matching routes, such as shared error handling or interceptors", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('errorHandler', 'Error Handler', "Error handler to use for routes that have not already been configured with an error handler.", 'ErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('intercept', 'Intercept', "Interceptors that intercept every processing step.", 'InterceptDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('interceptFrom', 'Intercept From', "Interceptors that intercept incoming messages on route inputs.", 'InterceptFromDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('interceptSendToEndpoint', 'Intercept Send To Endpoint', "Interceptors that intercept messages being sent to an endpoint.", 'InterceptSendToEndpointDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('onException', 'On Exception', "Exception clauses for catching and handling certain exceptions.", 'OnExceptionDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('onCompletion', 'On Completion', "On completion callbacks for custom routing when the exchange is complete.", 'OnCompletionDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('precondition', 'Precondition', "Predicate in simple language to evaluate whether this route configuration should be included or not.", 'string', '', '', false, false, false, false, 'advanced', ''),
+    ], [
+    ]),
+    new ElementMeta('route', 'RouteDefinition', 'Route', "Defines a Camel route that specifies the processing steps a message goes through from a consumer endpoint to one or more producer endpoints", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('group', 'Group', "The group name for this route. Multiple routes can belong to the same group.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('nodePrefixId', 'Node Prefix Id', "Sets a prefix to use for all node ids (not route id).", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('routeConfigurationId', 'Route Configuration Id', "The route configuration id or pattern this route should use for configuration. Multiple id/pattern can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('autoStartup', 'Auto Startup', "Whether to auto start this route", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('startupOrder', 'Startup Order', "To configure the ordering of the routes being started", 'number', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('autoStartup', 'Auto Startup', "Whether to auto start this route.", 'boolean', '', 'true', false, false, false, false, '', ''),
+        new PropertyMeta('startupOrder', 'Startup Order', "To configure the ordering of the routes being started.", 'number', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('trace', 'Trace', "Whether tracing is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('messageHistory', 'Message History', "Whether message history is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('logMask', 'Log Mask', "Whether security mask for Logging is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('errorHandlerRef', 'Error Handler', "Sets the bean ref name of the error handler builder to use on this route", 'string', '', '', false, false, false, false, 'error', ''),
-        new PropertyMeta('routePolicyRef', 'Route Policy', "Reference to custom org.apache.camel.spi.RoutePolicy to use by the route. Multiple policies can be configured by separating values using comma.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('shutdownRoute', 'Shutdown Route', "To control how to shutdown the route.", 'string', 'Default, Defer', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('shutdownRunningTask', 'Shutdown Running Task', "To control how to shut down the route.", 'string', 'CompleteCurrentTaskOnly, CompleteAllTasks', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logMask', 'Log Mask', "Whether security mask for logging is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('errorHandlerRef', 'Error Handler', "Sets a reference to a custom error handler to use for this route, referring to an error handler by its id in the registry.", 'string', '', '', false, false, false, false, 'error', ''),
+        new PropertyMeta('routePolicyRef', 'Route Policy', "Configures a route policy for this route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('shutdownRoute', 'Shutdown Route', "To control how to shutdown the route. Default shuts down the route normally. Defer delays the shutdown so that in-flight and pending messages are allowed to complete before the route is shutdown.", 'string', 'Default, Defer', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('shutdownRunningTask', 'Shutdown Running Task', "To control how to handle in-flight and pending messages during shutdown. CompleteCurrentTaskOnly (default) finishes only the current message. CompleteAllTasks finishes all pending messages (e.g. from a batch consumer or aggregator) before shutting down.", 'string', 'CompleteCurrentTaskOnly, CompleteAllTasks', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('precondition', 'Precondition', "The predicate of the precondition in simple language to evaluate in order to determine if this route should be included or not.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('errorHandler', 'Error Handler', "Sets the error handler to use for this route", 'ErrorHandlerDefinition', '', '', false, false, false, true, 'error', ''),
-        new PropertyMeta('inputType', 'Input Type', "Declare the expected data type of the input message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .", 'InputTypeDefinition', '', '', false, false, false, tru [...]
-        new PropertyMeta('outputType', 'Output Type', "Declare the expected data type of the output message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .", 'OutputTypeDefinition', '', '', false, false, false, [...]
+        new PropertyMeta('errorHandler', 'Error Handler', "Installs the given error handler builder.", 'ErrorHandlerDefinition', '', '', false, false, false, true, 'error', ''),
+        new PropertyMeta('inputType', 'Input Type', "Declare the expected data type of the input message. If the actual message type is different at runtime, camel looks for a required Transformer and applies if exists.", 'InputTypeDefinition', '', '', false, false, false, true, 'advanced', ''),
+        new PropertyMeta('outputType', 'Output Type', "Declare the expected data type of the output message. If the actual message type is different at runtime, camel looks for a required Transformer and applies if exists.", 'OutputTypeDefinition', '', '', false, false, false, true, 'advanced', ''),
         new PropertyMeta('from', 'from', "from", 'FromDefinition', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('routeTemplate', 'RouteTemplateDefinition', 'Route Template', "Defines a route template (parameterized routes)", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('route', 'Route', "To define the route in the template", 'RouteDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('routeTemplate', 'RouteTemplateDefinition', 'Route Template', "Defines a parameterized route template that can be instantiated multiple times with different parameter values", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('route', 'Route', "The route definition that this template uses to create routes.", 'RouteDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('beans', 'beans', "beans", 'BeanFactoryDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('from', 'from', "from", 'FromDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'RouteTemplateParameterDefinition', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('templatedRoute', 'TemplatedRouteDefinition', 'Templated Route', "Defines a templated route (a route built from a route template)", 'configuration', [
-        new PropertyMeta('routeTemplateRef', 'Route Template Ref', "Sets the id of the route template to use to build the route.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route built from the route template.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('templatedRoute', 'TemplatedRouteDefinition', 'Templated Route', "Creates a route instance from a route template, binding specific parameter values to the template's parameters", 'configuration', [
+        new PropertyMeta('routeTemplateRef', 'Route Template Ref', "The id of the route template to use to build the route.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The id of the route built from the route template.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('prefixId', 'Prefix Id', "Sets a prefix to use for all node ids (not route id).", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('group', 'Group', "The group name for the route built from this template. Multiple routes can belong to the same group.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('beans', 'beans', "beans", 'BeanFactoryDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'TemplatedRouteParameterDefinition', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('restConfiguration', 'RestConfigurationDefinition', 'Rest Configuration', "To configure rest", 'rest', [
-        new PropertyMeta('component', 'Component', "The Camel Rest component to use for the REST transport (consumer), such as netty-http, jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used.", 'string', 'platform-http, servlet, jetty, undertow, netty-http [...]
-        new PropertyMeta('apiComponent', 'Api Component', "The name of the Camel component to use as the REST API. If no API Component has been explicit configured, then Camel will lookup if there is a Camel component responsible for servicing and generating the REST API documentation, or if a org.apache.camel.spi.RestApiProcessorFactory is registered in the registry. If either one is found, then that is being used.", 'string', 'openapi, swagger', '', false, false, false, false, 'consume [...]
-        new PropertyMeta('producerComponent', 'Producer Component', "Sets the name of the Camel component to use as the REST producer", 'string', 'vertx-http, http, undertow, netty-http', '', false, false, false, false, 'producer,advanced', ''),
-        new PropertyMeta('scheme', 'Scheme', "The scheme to use for exposing the REST service. Usually http or https is supported. The default value is http", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('restConfiguration', 'RestConfigurationDefinition', 'Rest Configuration', "Configures global settings for the REST DSL, such as host, port, context path, binding mode, and the underlying HTTP component to use", 'rest', [
+        new PropertyMeta('component', 'Component', "The Camel Rest component to use for the REST transport (consumer), such as netty-http, jetty, servlet, undertow.", 'string', 'platform-http, servlet, jetty, undertow, netty-http, coap', '', false, false, false, false, '', ''),
+        new PropertyMeta('apiComponent', 'Api Component', "The name of the Camel component to use as the REST API (such as OpenApi).", 'string', 'openapi, swagger', '', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('producerComponent', 'Producer Component', "Sets the name of the Camel component to use as the REST producer.", 'string', 'vertx-http, http, undertow, netty-http', '', false, false, false, false, 'producer,advanced', ''),
+        new PropertyMeta('scheme', 'Scheme', "The scheme to use for exposing the REST service. Usually http or https is supported.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('host', 'Host', "The hostname to use for exposing the REST service.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('port', 'Port', "The port number to use for exposing the REST service. Notice if you use servlet component then the port number configured here does not apply, as the port number in use is the actual port number the servlet component is using. eg if using Apache Tomcat its the tomcat http port, if using Apache Karaf its the HTTP service in Karaf that uses port 8181 by default etc. Though in those situations setting the port number here, allows tooling and JMX to  [...]
-        new PropertyMeta('apiHost', 'Api Host', "To use a specific hostname for the API documentation (such as swagger or openapi) This can be used to override the generated host with this configured hostname", 'string', '', '', false, false, false, false, 'consumer,advanced', ''),
-        new PropertyMeta('useXForwardHeaders', 'Use XForward Headers', "Whether to use X-Forward headers to set host etc. for OpenApi. This may be needed in special cases involving reverse-proxy and networking going from HTTP to HTTPS etc. Then the proxy can send X-Forward headers (X-Forwarded-Proto) that influences the host names in the OpenAPI schema that camel-openapi-java generates from Rest DSL routes.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
-        new PropertyMeta('producerApiDoc', 'Producer Api Doc', "Sets the location of the api document the REST producer will use to validate the REST uri and query parameters are valid accordingly to the api document. The location of the api document is loaded from classpath by default, but you can use file: or http: to refer to resources to load from file or http url.", 'string', '', '', false, false, false, false, 'producer,advanced', ''),
-        new PropertyMeta('contextPath', 'Context Path', "Sets a leading context-path the REST services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path. Or for components such as camel-jetty or camel-netty-http that includes a HTTP server.", 'string', '', '', false, false, false, false, 'consumer', ''),
-        new PropertyMeta('apiContextPath', 'Api Context Path', "Sets a leading context-path the REST API will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path.", 'string', '', '', false, false, false, false, 'consumer', ''),
+        new PropertyMeta('port', 'Port', "The port number to use for exposing the REST service.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('apiHost', 'Api Host', "To use a specific hostname for the API documentation (such as swagger or openapi). This can be used to override the generated host with this configured hostname.", 'string', '', '', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('useXForwardHeaders', 'Use XForward Headers', "Whether to use X-Forward headers to set host etc. for OpenApi. This may be needed in special cases involving reverse-proxy and networking going from HTTP to HTTPS etc.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('producerApiDoc', 'Producer Api Doc', "Sets the location of the api document the REST producer will use to validate the REST uri and query parameters are valid accordingly to the api document.", 'string', '', '', false, false, false, false, 'producer,advanced', ''),
+        new PropertyMeta('contextPath', 'Context Path', "Sets a leading context-path the REST services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path.", 'string', '', '', false, false, false, false, 'consumer', ''),
+        new PropertyMeta('apiContextPath', 'Api Context Path', "Sets a leading context-path the REST API will be using.", 'string', '', '', false, false, false, false, 'consumer', ''),
         new PropertyMeta('apiContextRouteId', 'Api Context Route Id', "Sets the route id to use for the route that services the REST API. The route will by default use an auto assigned route id.", 'string', '', '', false, false, false, false, 'consumer,advanced', ''),
-        new PropertyMeta('apiVendorExtension', 'Api Vendor Extension', "Whether vendor extension is enabled in the Rest APIs. If enabled then Camel will include additional information as vendor extension (eg keys starting with x-) such as route ids, class names etc. Not all 3rd party API gateways and tools supports vendor-extensions when importing your API docs.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('apiVendorExtension', 'Api Vendor Extension', "Whether vendor extension is enabled in the Rest APIs. If enabled then Camel will include additional information as vendor extension (eg keys starting with x-) such as route ids, class names etc.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
         new PropertyMeta('hostNameResolver', 'Host Name Resolver', "If no hostname has been explicit configured, then this resolver is used to compute the hostname the REST service will be using.", 'string', 'allLocalIp, localHostName, localIp, none', 'allLocalIp', false, false, false, false, 'consumer,advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML.", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
         new PropertyMeta('bindingPackageScan', 'Binding Package Scan', "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma.", 'string', '', '', false, false, false, false, 'consumer,advanced', ''),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'consumer,adv [...]
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
-        new PropertyMeta('inlineRoutes', 'Inline Routes', "Inline routes in rest-dsl which are linked using direct endpoints. Each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the route linked from rest-dsl). By inlining (default) allows Camel to optimize and inline this as a single route, however this requires to use direct endpoints, which must be unique per service. If a route is not using direct endpoint then t [...]
-        new PropertyMeta('jsonDataFormat', 'Json Data Format', "Name of specific json data format to use. By default, jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', 'jackson, jsonb, fastjson, gson', 'jackson', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('xmlDataFormat', 'Xml Data Format', "Name of specific XML data format to use. By default jaxb will be used, but jacksonXml is also supported. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', 'jaxb, jacksonXml', 'jaxb', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
+        new PropertyMeta('inlineRoutes', 'Inline Routes', "Inline routes in rest-dsl which are linked using direct endpoints. By inlining, Camel can optimize and inline this as a single route, however this requires to use direct endpoints, which must be unique per service.", 'boolean', '', 'true', false, false, false, false, 'consumer', ''),
+        new PropertyMeta('jsonDataFormat', 'Json Data Format', "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', 'jackson, jsonb, fastjson, gson', 'jackson', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('xmlDataFormat', 'Xml Data Format', "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', 'jaxb, jacksonXml', 'jaxb', false, false, false, false, 'advanced', ''),
         new PropertyMeta('componentProperty', 'Component Property', "Allows to configure as many additional properties for the rest component in use.", 'RestPropertyDefinition', '', '', false, false, true, true, 'advanced', ''),
         new PropertyMeta('endpointProperty', 'Endpoint Property', "Allows to configure as many additional properties for the rest endpoint in use.", 'RestPropertyDefinition', '', '', false, false, true, true, 'advanced', ''),
         new PropertyMeta('consumerProperty', 'Consumer Property', "Allows to configure as many additional properties for the rest consumer in use.", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', ''),
-        new PropertyMeta('dataFormatProperty', 'Data Format Property', "Allows to configure as many additional properties for the data formats in use. For example set property prettyPrint to true to have json outputted in pretty mode. The properties can be prefixed to denote the option is only for either JSON or XML and for either the IN or the OUT. The prefixes are: json.in. json.out. xml.in. xml.out. For example a key with value xml.out.mustBeJAXBElement is only for the XML data format [...]
-        new PropertyMeta('apiProperty', 'Api Property', "Allows to configure as many additional properties for the api documentation. For example set property api.title to my cool stuff", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', ''),
+        new PropertyMeta('dataFormatProperty', 'Data Format Property', "Allows to configure as many additional properties for the data formats in use. For example set property prettyPrint to true to have json outputted in pretty mode.", 'RestPropertyDefinition', '', '', false, false, true, true, 'advanced', ''),
+        new PropertyMeta('apiProperty', 'Api Property', "Allows to configure as many additional properties for the api documentation.", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', ''),
         new PropertyMeta('corsHeaders', 'Cors Headers', "Allows to configure custom CORS headers.", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', ''),
         new PropertyMeta('validationLevels', 'Validation Levels', "Allows to configure custom validation levels when using camel-openapi-validator with client request/response validator.", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', ''),
     ], [
     ]),
-    new ElementMeta('rest', 'RestDefinition', 'Rest', "Defines a rest service using the rest-dsl", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('rest', 'RestDefinition', 'Rest', "Defines a REST service with HTTP operations (GET, POST, PUT, DELETE, etc.) using the Camel REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('path', 'Path', "Path of the rest service, such as /foo", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is auto", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('path', 'Path', "Path of the rest service, such as /foo.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('tag', 'Tag', "To configure a special tag for the operations within this rest definition.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('openApi', 'Open Api', "To use an existing OpenAPI specification as contract-first for Camel Rest DSL.", 'OpenApiDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('securityDefinitions', 'Security Definitions', "Sets the security definitions such as Basic, OAuth2 etc.", 'RestSecuritiesDefinition', '', '', false, false, false, true, 'security', ''),
@@ -2078,29 +2129,42 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('put', 'put', "put", 'PutDefinition', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('beanFactory', 'BeanFactoryDefinition', 'Bean Factory', "Define custom beans that can be used in your Camel routes and in general.", 'configuration', [
-        new PropertyMeta('name', 'Name', "The name of the bean (bean id)", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "The class name (fully qualified) of the bean", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('initMethod', 'Init Method', "The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('destroyMethod', 'Destroy Method', "The name of the custom destroy method to invoke on bean shutdown, such as when Camel is shutting down. The method must have no arguments, but may throw any exception.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('factoryMethod', 'Factory Method', "Name of method to invoke when creating the bean via a factory bean.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('factoryBean', 'Factory Bean', "Name of factory bean (bean id) to use for creating the bean.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('builderClass', 'Builder Class', "Fully qualified class name of builder class to use for creating and configuring the bean. The builder will use the properties values to configure the bean.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('transformers', 'TransformersDefinition', 'Transformations', "Container for defining data type transformer definitions", 'transformation', [
+        new PropertyMeta('customTransformer', 'customTransformer', "customTransformer", 'CustomTransformerDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('dataFormatTransformer', 'dataFormatTransformer', "dataFormatTransformer", 'DataFormatTransformerDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('endpointTransformer', 'endpointTransformer', "endpointTransformer", 'EndpointTransformerDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('loadTransformer', 'loadTransformer', "loadTransformer", 'LoadTransformerDefinition', '', '', false, false, false, true, '', ''),
+    ], [
+    ]),
+    new ElementMeta('validators', 'ValidatorsDefinition', 'Validations', "Container for defining data type validator definitions", 'validation', [
+        new PropertyMeta('customValidator', 'customValidator', "customValidator", 'CustomValidatorDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('endpointValidator', 'endpointValidator', "endpointValidator", 'EndpointValidatorDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('predicateValidator', 'predicateValidator', "predicateValidator", 'PredicateValidatorDefinition', '', '', false, false, false, true, '', ''),
+    ], [
+    ]),
+    new ElementMeta('beanFactory', 'BeanFactoryDefinition', 'Bean Factory', "Defines a custom bean that can be used in Camel routes and other beans. The bean is created by a factory class or method.", 'configuration', [
+        new PropertyMeta('name', 'Name', "The name of the bean (bean id).", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "The class name (fully qualified) of the bean.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('initMethod', 'Init Method', "The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('destroyMethod', 'Destroy Method', "The name of the custom destroy method to invoke on bean shutdown, such as when Camel is shutting down. The method must have no arguments, but may throw any exception.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('factoryMethod', 'Factory Method', "Name of method to invoke when creating the bean via a factory bean.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('factoryBean', 'Factory Bean', "Name of factory bean (bean id) to use for creating the bean.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('builderClass', 'Builder Class', "Fully qualified class name of builder class to use for creating and configuring the bean. The builder will use the properties values to configure the bean.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('builderMethod', 'Builder Method', "Name of method when using builder class. This method is invoked after configuring to create the actual bean. This method is often named build (used by default).", 'string', '', 'build', false, false, false, false, '', ''),
         new PropertyMeta('scriptLanguage', 'Script Language', "The script language to use when using inlined script for creating the bean, such as groovy, java, javascript etc.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('scriptPropertyPlaceholders', 'Script Property Placeholders', "Whether the script should support using Camel property placeholder syntax {{ }}.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('constructors', 'Constructors', "Optional constructor arguments for creating the bean. Arguments correspond to specific index of the constructor argument list, starting from zero.", 'object', '', '', false, false, false, false, '', ''),
         new PropertyMeta('properties', 'Properties', "Optional properties to set on the created bean.", 'object', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('script', 'Script', "The script to execute that creates the bean when using scripting languages. If the script use the prefix resource: such as resource:classpath:com/foo/myscript.groovy, resource:file:/var/myscript.groovy, then its loaded from the external resource.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('script', 'Script', "The script to execute that creates the bean when using scripting languages.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('contextScan', 'ContextScanDefinition', 'Context Scan', "Scans for Java org.apache.camel.builder.RouteBuilder instances in the context org.apache.camel.spi.Registry .", 'configuration', [
-        new PropertyMeta('includeNonSingletons', 'Include Non Singletons', "Whether to include non-singleton beans (prototypes) By default only singleton beans is included in the context scan", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('contextScan', 'ContextScanDefinition', 'Context Scan', "Scans for RouteBuilder instances in the Camel registry to auto-discover and register routes", 'configuration', [
+        new PropertyMeta('includeNonSingletons', 'Include Non Singletons', "Whether to include non-singleton beans (prototypes). By default only singleton beans are included in the context scan.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('excludes', 'Excludes', "Exclude finding route builder from these java package names.", 'string', '', '', false, false, true, true, '', ''),
         new PropertyMeta('includes', 'Includes', "Include finding route builder from these java package names.", 'string', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('errorHandler', 'ErrorHandlerDefinition', 'Error Handler', "Camel error handling.", 'configuration,error', [
+    new ElementMeta('errorHandler', 'ErrorHandlerDefinition', 'Error Handler', "Configures error handling strategy for routes, controlling how failed exchanges are handled and redelivered", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('deadLetterChannel', 'deadLetterChannel', "deadLetterChannel", 'DeadLetterChannelDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('defaultErrorHandler', 'defaultErrorHandler', "defaultErrorHandler", 'DefaultErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
@@ -2113,233 +2177,236 @@ export const CamelModelMetadata: ElementMeta[] = [
         new ExchangePropertyMeta('CamelFailureEndpoint', 'Failure Endpoint', 'producer', 'String', "Endpoint URI where the Exchange failed during processing"),
         new ExchangePropertyMeta('CamelFailureRouteId', 'Failure Route Id', 'producer', 'String', "Route ID where the Exchange failed during processing"),
     ]),
-    new ElementMeta('faultToleranceConfiguration', 'FaultToleranceConfigurationDefinition', 'Fault Tolerance Configuration', "MicroProfile Fault Tolerance Circuit Breaker EIP configuration", 'configuration,eip,error', [
+    new ElementMeta('faultToleranceConfiguration', 'FaultToleranceConfigurationDefinition', 'Fault Tolerance Configuration', "Configures MicroProfile Fault Tolerance settings for the Circuit Breaker EIP, such as timeout, bulkhead, and retry parameters", 'configuration,eip,error,resilience', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('typedGuard', 'Typed Guard', "Refers to an existing io.smallrye.faulttolerance.api.TypedGuard instance to lookup and use from the registry. When using this, then any other TypedGuard circuit breaker options are not in use.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('delay', 'Delay', "Control how long the circuit breaker stays open. The default is 5 seconds.", 'string', '', '5000', false, false, false, false, '', ''),
-        new PropertyMeta('successThreshold', 'Success Threshold', "Controls the number of trial calls which are allowed when the circuit breaker is half-open", 'number', '', '1', false, false, false, false, '', ''),
-        new PropertyMeta('requestVolumeThreshold', 'Request Volume Threshold', "Controls the size of the rolling window used when the circuit breaker is closed", 'number', '', '20', false, false, false, false, '', ''),
-        new PropertyMeta('failureRatio', 'Failure Ratio', "Configures the failure rate threshold in percentage. If the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls. The threshold must be greater than 0 and not greater than 100. Default value is 50 percentage.", 'number', '', '50', false, false, false, false, '', ''),
-        new PropertyMeta('timeoutEnabled', 'Timeout Enabled', "Whether timeout is enabled or not on the circuit breaker. Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('successThreshold', 'Success Threshold', "Controls the number of trial calls which are allowed when the circuit breaker is half-open.", 'number', '', '1', false, false, false, false, '', ''),
+        new PropertyMeta('requestVolumeThreshold', 'Request Volume Threshold', "Controls the size of the rolling window used when the circuit breaker is closed.", 'number', '', '20', false, false, false, false, '', ''),
+        new PropertyMeta('failureRatio', 'Failure Ratio', "Configures the failure rate threshold in percentage. If the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls.", 'number', '', '50', false, false, false, false, '', ''),
+        new PropertyMeta('timeoutEnabled', 'Timeout Enabled', "Whether timeout is enabled or not on the circuit breaker.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('timeoutDuration', 'Timeout Duration', "Configures the thread execution timeout. Default value is 1 second.", 'string', '', '1000', false, false, false, false, '', ''),
-        new PropertyMeta('timeoutPoolSize', 'Timeout Pool Size', "Configures the pool size of the thread pool when timeout is enabled. Default value is 10.", 'number', '', '10', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bulkheadEnabled', 'Bulkhead Enabled', "Whether bulkhead is enabled or not on the circuit breaker. Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('bulkheadEnabled', 'Bulkhead Enabled', "Whether bulkhead is enabled or not on the circuit breaker.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('bulkheadMaxConcurrentCalls', 'Bulkhead Max Concurrent Calls', "Configures the max amount of concurrent calls the bulkhead will support.", 'number', '', '10', false, false, false, false, 'advanced', ''),
         new PropertyMeta('bulkheadWaitingTaskQueue', 'Bulkhead Waiting Task Queue', "Configures the task queue size for holding waiting tasks to be processed by the bulkhead.", 'number', '', '10', false, false, false, false, 'advanced', ''),
         new PropertyMeta('threadOffloadExecutorService', 'Thread Offload Executor Service', "References a custom thread pool to use when offloading a guarded action to another thread.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('from', 'FromDefinition', 'From', "Act as a message source as input to a route", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('uri', 'Uri', "Sets the URI of the endpoint to use", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store a copy of the received message body (only body, not headers). This is handy for easy access to the received message body via variables.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('from', 'FromDefinition', 'From', "Defines the consumer endpoint that acts as the input source for a route", 'eip,endpoint,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('uri', 'Uri', "The endpoint URI to consume from.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('globalOption', 'GlobalOptionDefinition', 'Global Option', "Models a string key/value pair for configuring some global options on a Camel context such as max debug log length.", 'configuration', [
+    new ElementMeta('globalOption', 'GlobalOptionDefinition', 'Global Option', "Defines a single global configuration option as a key/value pair for the CamelContext", 'configuration', [
         new PropertyMeta('key', 'Key', "Global option key", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('value', 'Value', "Global option value", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('globalOptions', 'GlobalOptionsDefinition', 'Global Options', "Models a series of string key/value pairs for configuring some global options on a Camel context such as max debug log length.", 'configuration', [
-        new PropertyMeta('globalOption', 'Global Option', "A series of global options as key value pairs", 'GlobalOptionDefinition', '', '', false, false, true, true, '', ''),
+    new ElementMeta('globalOptions', 'GlobalOptionsDefinition', 'Global Options', "Defines a collection of global configuration options for the CamelContext", 'configuration', [
+        new PropertyMeta('globalOption', 'Global Option', "A series of global options as key value pairs.", 'GlobalOptionDefinition', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('inputType', 'InputTypeDefinition', 'Input Type', "Set the expected data type of the input message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .  [...]
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('urn', 'Urn', "The input type URN.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('validate', 'Validate', "Whether if validation is required for this input type.", 'boolean', '', 'false', false, false, false, false, '', ''),
+    new ElementMeta('inputType', 'InputTypeDefinition', 'Input Type', "Declares the expected input data type for a route. Camel will apply a data type transformer if the actual message type differs at runtime.", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('urn', 'Urn', "The input type URN in the format 'scheme:name' (e.g. 'java:com.example.MyClass' or 'json:JsonOrder'). Declares the expected data type for messages consumed by this route.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('validate', 'Validate', "Whether validation is required for this input type.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('onFallback', 'OnFallbackDefinition', 'On Fallback', "Route to be executed when Circuit Breaker EIP executes fallback", 'eip,routing,error', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fallbackViaNetwork', 'Fallback Via Network', "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a separate thread-pool, otherwise if the main command were to become latent and fill the thread-pool this would prevent the fallback from running if the two commands share the same pool.", 'boolean', '', 'false', false, false, false, false, 'a [...]
+    new ElementMeta('onFallback', 'OnFallbackDefinition', 'On Fallback', "Defines the fallback route that executes when the Circuit Breaker trips or the primary route fails", 'eip,error,resilience,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('fallbackViaNetwork', 'Fallback Via Network', "Whether the fallback goes over the network. If so, the fallback is executed on a separate thread-pool to avoid exhausting the main thread-pool.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('onWhen', 'OnWhenDefinition', 'On When', "To use a predicate to determine when to trigger this.", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "The predicate to use", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('onWhen', 'OnWhenDefinition', 'On When', "Applies a predicate condition to filter when a parent definition (such as onException or onCompletion) should be triggered", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The predicate expression to evaluate.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('optimisticLockRetryPolicy', 'OptimisticLockRetryPolicyDefinition', 'Optimistic Lock Retry Policy', "To configure optimistic locking", 'configuration', [
-        new PropertyMeta('maximumRetries', 'Maximum Retries', "Sets the maximum number of retries", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('retryDelay', 'Retry Delay', "Sets the delay in millis between retries", 'string', '', '50', false, false, false, false, '', ''),
-        new PropertyMeta('maximumRetryDelay', 'Maximum Retry Delay', "Sets the upper value of retry in millis between retries, when using exponential or random backoff", 'string', '', '1000', false, false, false, false, '', ''),
-        new PropertyMeta('exponentialBackOff', 'Exponential Back Off', "Enable exponential backoff", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('randomBackOff', 'Random Back Off', "Enables random backoff", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+    new ElementMeta('optimisticLockRetryPolicy', 'OptimisticLockRetryPolicyDefinition', 'Optimistic Lock Retry Policy', "Configures the retry policy for optimistic locking in the Aggregate EIP, controlling retry attempts and delays on version conflicts", 'configuration', [
+        new PropertyMeta('maximumRetries', 'Maximum Retries', "Sets the maximum number of retries before giving up on acquiring the optimistic lock.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('retryDelay', 'Retry Delay', "Sets the delay in milliseconds between retry attempts when the optimistic lock fails.", 'string', '', '50', false, false, false, false, '', ''),
+        new PropertyMeta('maximumRetryDelay', 'Maximum Retry Delay', "Sets the upper bound on retry delay in milliseconds to prevent delays from growing unbounded when using exponential or random backoff.", 'string', '', '1000', false, false, false, false, '', ''),
+        new PropertyMeta('exponentialBackOff', 'Exponential Back Off', "Whether to enable exponential backoff, so each subsequent retry delay is doubled until the maximum retry delay is reached.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('randomBackOff', 'Random Back Off', "Whether to enable random backoff, which uses a random delay between 0 and the computed retry delay to avoid thundering herd problems.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('otherwise', 'OtherwiseDefinition', 'Otherwise', "Route to be executed when all other choices evaluate to false", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('otherwise', 'OtherwiseDefinition', 'Otherwise', "Defines the default branch within a Choice EIP that executes when no When condition matches", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('outputType', 'OutputTypeDefinition', 'Output Type', "Set the expected data type of the output message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder [...]
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('urn', 'Urn', "Set output type URN.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('validate', 'Validate', "Whether if validation is required for this output type.", 'boolean', '', 'false', false, false, false, false, '', ''),
+    new ElementMeta('outputType', 'OutputTypeDefinition', 'Output Type', "Declares the expected output data type for a route. Camel will apply a data type transformer if the actual message type differs at runtime.", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('urn', 'Urn', "The output type URN, such as java:fully.qualified.ClassName or json:SchemaName.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('validate', 'Validate', "Whether to validate the output type.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('packageScan', 'PackageScanDefinition', 'Package Scan', "Scans for Java org.apache.camel.builder.RouteBuilder classes in java packages", 'configuration', [
-        new PropertyMeta('package', 'Package', "Sets the java package names to use for scanning for route builder classes", 'string', '', '', true, false, true, true, '', ''),
+    new ElementMeta('packageScan', 'PackageScanDefinition', 'Package Scan', "Scans Java packages on the classpath for RouteBuilder classes to auto-discover and register routes", 'configuration', [
+        new PropertyMeta('package', 'Package', "Java package names to use for scanning for route builder classes.", 'string', '', '', true, false, true, true, '', ''),
         new PropertyMeta('excludes', 'Excludes', "Exclude finding route builder from these java package names.", 'string', '', '', false, false, true, true, 'advanced', ''),
         new PropertyMeta('includes', 'Includes', "Include finding route builder from these java package names.", 'string', '', '', false, false, true, true, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('property', 'PropertyDefinition', 'Property', "A key value pair where the value is a literal value", 'configuration', [
-        new PropertyMeta('key', 'Key', "The name of the property", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('property', 'PropertyDefinition', 'Property', "Defines a key/value pair with a literal value, used for passing parameters in route templates and other configurations", 'configuration', [
+        new PropertyMeta('key', 'Key', "The name of the property.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('value', 'Value', "The property value.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('propertyExpression', 'PropertyExpressionDefinition', 'Property Expression', "A key value pair where the value is an expression.", 'configuration', [
-        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "Property values as an expression", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+    new ElementMeta('propertyExpression', 'PropertyExpressionDefinition', 'Property Expression', "Defines a key/value pair where the value is computed by an expression, used for passing dynamic parameters", 'configuration', [
+        new PropertyMeta('key', 'Key', "The property key.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('expression', 'Expression', "The property value as an expression.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('redeliveryPolicy', 'RedeliveryPolicyDefinition', 'Redelivery Policy', "To configure re-delivery for error handling", 'configuration', [
+    new ElementMeta('redeliveryPolicy', 'RedeliveryPolicyDefinition', 'Redelivery Policy', "Configures message redelivery for error handling, including maximum retries, delay patterns, and backoff settings", 'configuration,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('maximumRedeliveries', 'Maximum Redeliveries', "Sets the maximum redeliveries x = redeliver at most x times 0 = no redeliveries -1 = redeliver forever", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('redeliveryDelay', 'Redelivery Delay', "Sets the initial redelivery delay", 'string', '', '1000', false, false, false, false, '', ''),
+        new PropertyMeta('maximumRedeliveries', 'Maximum Redeliveries', "Sets the maximum number of redeliveries. Use 0 for no redeliveries, or -1 to redeliver forever.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryDelay', 'Redelivery Delay', "Sets the initial delay in milliseconds before the first redelivery attempt.", 'string', '', '1000', false, false, false, false, '', ''),
         new PropertyMeta('asyncDelayedRedelivery', 'Async Delayed Redelivery', "Allow asynchronous delayed redelivery. The route, in particular the consumer's component, must support the Asynchronous Routing Engine (e.g. seda).", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('backOffMultiplier', 'Back Off Multiplier', "Sets the back off multiplier", 'number', '', '2.0', false, false, false, false, '', ''),
-        new PropertyMeta('useExponentialBackOff', 'Use Exponential Back Off', "Turn on exponential back off", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('collisionAvoidanceFactor', 'Collision Avoidance Factor', "Sets the collision avoidance factor", 'number', '', '0.15', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useCollisionAvoidance', 'Use Collision Avoidance', "Turn on collision avoidance.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('maximumRedeliveryDelay', 'Maximum Redelivery Delay', "Sets the maximum delay between redelivery", 'string', '', '60000', false, false, false, false, '', ''),
-        new PropertyMeta('retriesExhaustedLogLevel', 'Retries Exhausted Log Level', "Sets the logging level to use when retries have been exhausted", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('retryAttemptedLogLevel', 'Retry Attempted Log Level', "Sets the logging level to use for logging retry attempts", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'DEBUG', false, false, false, false, '', ''),
-        new PropertyMeta('retryAttemptedLogInterval', 'Retry Attempted Log Interval', "Sets the interval to use for logging retry attempts", 'number', '', '1', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logRetryAttempted', 'Log Retry Attempted', "Sets whether retry attempts should be logged or not. Can be used to include or reduce verbose.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logStackTrace', 'Log Stack Trace', "Sets whether stack traces should be logged. Can be used to include or reduce verbose.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logRetryStackTrace', 'Log Retry Stack Trace', "Sets whether stack traces should be logged when an retry attempt failed. Can be used to include or reduce verbose.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logHandled', 'Log Handled', "Sets whether handled exceptions should be logged or not. Can be used to include or reduce verbose.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logNewException', 'Log New Exception', "Sets whether new exceptions should be logged or not. Can be used to include or reduce verbose. A new exception is an exception that was thrown while handling a previous exception.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logContinued', 'Log Continued', "Sets whether continued exceptions should be logged or not. Can be used to include or reduce verbose.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('logExhausted', 'Log Exhausted', "Sets whether exhausted exceptions should be logged or not. Can be used to include or reduce verbose.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logExhaustedMessageHistory', 'Log Exhausted Message History', "Sets whether exhausted exceptions should be logged including message history or not (supports property placeholders). Can be used to include or reduce verbose.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logExhaustedMessageBody', 'Log Exhausted Message Body', "Sets whether exhausted message body should be logged including message history or not (supports property placeholders). Can be used to include or reduce verbose. Requires logExhaustedMessageHistory to be enabled.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('disableRedelivery', 'Disable Redelivery', "Disables redelivery (same as setting maximum redeliveries to 0)", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('delayPattern', 'Delay Pattern', "Sets the delay pattern with delay intervals.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('backOffMultiplier', 'Back Off Multiplier', "Sets the multiplier applied to the previous redelivery delay to compute the next delay when using exponential backoff.", 'number', '', '2.0', false, false, false, false, '', ''),
+        new PropertyMeta('useExponentialBackOff', 'Use Exponential Back Off', "Enables exponential backoff, so each subsequent redelivery delay is multiplied by the backOffMultiplier.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('collisionAvoidanceFactor', 'Collision Avoidance Factor', "Sets the collision avoidance factor, which adds a random percentage of the delay to avoid thundering herd problems when multiple redeliveries happen simultaneously.", 'number', '', '0.15', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('useCollisionAvoidance', 'Use Collision Avoidance', "Enables collision avoidance, which adds a random factor to redelivery delays to prevent multiple simultaneous redeliveries from colliding.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('maximumRedeliveryDelay', 'Maximum Redelivery Delay', "Sets the upper bound on redelivery delay in milliseconds when using exponential backoff, to prevent delays from growing unbounded.", 'string', '', '60000', false, false, false, false, '', ''),
+        new PropertyMeta('retriesExhaustedLogLevel', 'Retries Exhausted Log Level', "Sets the logging level to use when all retries have been exhausted and the message is moved to the dead letter channel or failed.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('retryAttemptedLogLevel', 'Retry Attempted Log Level', "Sets the logging level to use when a redelivery attempt is made.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'DEBUG', false, false, false, false, '', ''),
+        new PropertyMeta('retryAttemptedLogInterval', 'Retry Attempted Log Interval', "Sets how often to log redelivery attempts. For example, a value of 3 logs every 3rd redelivery attempt.", 'number', '', '1', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logRetryAttempted', 'Log Retry Attempted', "Whether retry attempts should be logged or not. Can be used to include or reduce verbose logging.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logStackTrace', 'Log Stack Trace', "Whether stack traces should be logged. Can be used to include or reduce verbose logging.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logRetryStackTrace', 'Log Retry Stack Trace', "Whether stack traces should be logged when a retry attempt failed. Can be used to include or reduce verbose logging.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logHandled', 'Log Handled', "Whether handled exceptions should be logged or not. Can be used to include or reduce verbose logging.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logNewException', 'Log New Exception', "Whether new exceptions should be logged or not. A new exception is an exception that was thrown while handling a previous exception.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logContinued', 'Log Continued', "Whether continued exceptions should be logged or not. Can be used to include or reduce verbose logging.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('logExhausted', 'Log Exhausted', "Whether exhausted exceptions should be logged or not. Can be used to include or reduce verbose logging.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logExhaustedMessageHistory', 'Log Exhausted Message History', "Whether exhausted exceptions should be logged including message history. Can be used to include or reduce verbose logging.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logExhaustedMessageBody', 'Log Exhausted Message Body', "Whether exhausted message body should be logged including message history. Requires logExhaustedMessageHistory to be enabled.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('disableRedelivery', 'Disable Redelivery', "Disables redelivery (same as setting maximum redeliveries to 0).", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('delayPattern', 'Delay Pattern', "Sets the delay pattern for redeliveries using a pattern such as '0:1000;5:5000;10:30000' where each entry maps a redelivery count to a delay in milliseconds (e.g. redeliveries 0-4 use 1s delay, 5-9 use 5s, 10 use 30s).", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('allowRedeliveryWhileStopping', 'Allow Redelivery While Stopping', "Controls whether to allow redelivery while stopping/shutting down a route that uses error handling.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('exchangeFormatterRef', 'Exchange Formatter Ref', "Sets the reference of the instance of org.apache.camel.spi.ExchangeFormatter to generate the log message from exchange.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('resilience4jConfiguration', 'Resilience4jConfigurationDefinition', 'Resilience4j Configuration', "Resilience4j Circuit Breaker EIP configuration", 'configuration,eip,error', [
+    new ElementMeta('resilience4jConfiguration', 'Resilience4jConfigurationDefinition', 'Resilience4j Configuration', "Configures Resilience4j settings for the Circuit Breaker EIP, such as failure rate threshold, wait duration, and sliding window parameters", 'configuration,eip,error,resilience', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('circuitBreaker', 'Circuit Breaker', "Refers to an existing io.github.resilience4j.circuitbreaker.CircuitBreaker instance to lookup and use from the registry. When using this, then any other circuit breaker options are not in use.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('config', 'Config', "Refers to an existing io.github.resilience4j.circuitbreaker.CircuitBreakerConfig instance to lookup and use from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('failureRateThreshold', 'Failure Rate Threshold', "Configures the failure rate threshold in percentage. If the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls. The threshold must be greater than 0 and not greater than 100. Default value is 50 percentage.", 'number', '', '50', false, false, false, false, '', ''),
-        new PropertyMeta('permittedNumberOfCallsInHalfOpenState', 'Permitted Number Of Calls In Half Open State', "Configures the number of permitted calls when the CircuitBreaker is half open. The size must be greater than 0. Default size is 10.", 'number', '', '10', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('throwExceptionWhenHalfOpenOrOpenState', 'Throw Exception When Half Open Or Open State', "Whether to throw io.github.resilience4j.circuitbreaker.CallNotPermittedException when the call is rejected due circuit breaker is half open (and was not attempted but rejected immediately) or open (always rejected). This option is only in use when there is NOT a fallback configured on the circuit breaker. When there is a fallback then the fallback is always executed and Call [...]
-        new PropertyMeta('slidingWindowSize', 'Sliding Window Size', "Configures the size of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed. slidingWindowSize configures the size of the sliding window. Sliding window can either be count-based or time-based. If slidingWindowType is COUNT_BASED, the last slidingWindowSize calls are recorded and aggregated. If slidingWindowType is TIME_BASED, the calls of the last slidingWindowSize seconds  [...]
-        new PropertyMeta('slidingWindowType', 'Sliding Window Type', "Configures the type of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed. Sliding window can either be count-based or time-based. If slidingWindowType is COUNT_BASED, the last slidingWindowSize calls are recorded and aggregated. If slidingWindowType is TIME_BASED, the calls of the last slidingWindowSize seconds are recorded and aggregated. Default slidingWindowType is COU [...]
-        new PropertyMeta('minimumNumberOfCalls', 'Minimum Number Of Calls', "Configures the minimum number of calls which are required (per sliding window period) before the CircuitBreaker can calculate the error rate. For example, if minimumNumberOfCalls is 10, then at least 10 calls must be recorded, before the failure rate can be calculated. If only 9 calls have been recorded the CircuitBreaker will not transition to open even if all 9 calls have failed. Default minimumNumberOfCalls i [...]
-        new PropertyMeta('writableStackTraceEnabled', 'Writable Stack Trace Enabled', "Enables writable stack traces. When set to false, Exception.getStackTrace returns a zero length array. This may be used to reduce log spam when the circuit breaker is open as the cause of the exceptions is already known (the circuit breaker is short-circuiting calls).", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('waitDurationInOpenState', 'Wait Duration In Open State', "Configures the wait duration (in seconds) which specifies how long the CircuitBreaker should stay open, before it switches to half open. Default value is 60 seconds.", 'number', '', '60', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('failureRateThreshold', 'Failure Rate Threshold', "Configures the failure rate threshold in percentage. If the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls.", 'number', '', '50', false, false, false, false, '', ''),
+        new PropertyMeta('permittedNumberOfCallsInHalfOpenState', 'Permitted Number Of Calls In Half Open State', "Configures the number of permitted calls when the CircuitBreaker is half open.", 'number', '', '10', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('throwExceptionWhenHalfOpenOrOpenState', 'Throw Exception When Half Open Or Open State', "Whether to throw io.github.resilience4j.circuitbreaker.CallNotPermittedException when the call is rejected because the circuit breaker is half open or open.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('slidingWindowSize', 'Sliding Window Size', "Configures the size of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed. Sliding window can either be count-based or time-based.", 'number', '', '100', false, false, false, false, '', ''),
+        new PropertyMeta('slidingWindowType', 'Sliding Window Type', "Configures the type of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed. Sliding window can either be count-based or time-based.", 'string', 'TIME_BASED, COUNT_BASED', 'COUNT_BASED', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('slidingWindowSynchronizationStrategy', 'Sliding Window Synchronization Strategy', "Configures the synchronization strategy for the sliding window. LOCK_FREE uses a CAS-based lock-free algorithm for better performance under high concurrency. SYNCHRONIZED uses blocking locks with lower memory allocation.", 'string', 'LOCK_FREE, SYNCHRONIZED', 'SYNCHRONIZED', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('minimumNumberOfCalls', 'Minimum Number Of Calls', "Configures the minimum number of calls which are required (per sliding window period) before the CircuitBreaker can calculate the error rate.", 'number', '', '100', false, false, false, false, '', ''),
+        new PropertyMeta('writableStackTraceEnabled', 'Writable Stack Trace Enabled', "Enables writable stack traces. When set to false, Exception.getStackTrace returns a zero length array. This may be used to reduce log spam when the circuit breaker is open.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('waitDurationInOpenState', 'Wait Duration In Open State', "Configures the wait duration which specifies how long the CircuitBreaker should stay open, before it switches to half open. The default is 60 seconds.", 'string', '', '60000', false, false, false, false, 'advanced', ''),
         new PropertyMeta('automaticTransitionFromOpenToHalfOpenEnabled', 'Automatic Transition From Open To Half Open Enabled', "Enables automatic transition from OPEN to HALF_OPEN state once the waitDurationInOpenState has passed.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('slowCallRateThreshold', 'Slow Call Rate Threshold', "Configures a threshold in percentage. The CircuitBreaker considers a call as slow when the call duration is greater than slowCallDurationThreshold Duration. When the percentage of slow calls is equal or greater the threshold, the CircuitBreaker transitions to open and starts short-circuiting calls. The threshold must be greater than 0 and not greater than 100. Default value is 100 percentage which means that a [...]
-        new PropertyMeta('slowCallDurationThreshold', 'Slow Call Duration Threshold', "Configures the duration threshold (seconds) above which calls are considered as slow and increase the slow calls percentage. Default value is 60 seconds.", 'number', '', '60', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bulkheadEnabled', 'Bulkhead Enabled', "Whether bulkhead is enabled or not on the circuit breaker. Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('maxWaitDurationInHalfOpenState', 'Max Wait Duration In Half Open State', "Configures the maximum wait duration which controls how long the CircuitBreaker should stay in Half Open state, before it switches to open. Value 0 means circuit breaker will wait in half open state until all permitted calls have been completed.", 'string', '', '0', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('slowCallRateThreshold', 'Slow Call Rate Threshold', "Configures a threshold in percentage. The CircuitBreaker considers a call as slow when the call duration is greater than slowCallDurationThreshold. When the percentage of slow calls is equal or greater the threshold, the CircuitBreaker transitions to open and starts short-circuiting calls.", 'number', '', '100', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('slowCallDurationThreshold', 'Slow Call Duration Threshold', "Configures the duration threshold above which calls are considered as slow and increase the slow calls percentage. The default is 60 seconds.", 'string', '', '60000', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bulkheadEnabled', 'Bulkhead Enabled', "Whether bulkhead is enabled or not on the circuit breaker.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('bulkheadMaxConcurrentCalls', 'Bulkhead Max Concurrent Calls', "Configures the max amount of concurrent calls the bulkhead will support.", 'number', '', '25', false, false, false, false, '', ''),
-        new PropertyMeta('bulkheadMaxWaitDuration', 'Bulkhead Max Wait Duration', "Configures a maximum amount of time which the calling thread will wait to enter the bulkhead. If bulkhead has space available, entry is guaranteed and immediate. If bulkhead is full, calling threads will contest for space, if it becomes available. maxWaitDuration can be set to 0. Note: for threads running on an event-loop or equivalent (rx computation pool, etc), setting maxWaitDuration to 0 is highly reco [...]
-        new PropertyMeta('timeoutEnabled', 'Timeout Enabled', "Whether timeout is enabled or not on the circuit breaker. Default is false.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('timeoutExecutorService', 'Timeout Executor Service', "References to a custom thread pool to use when timeout is enabled (uses ForkJoinPool#commonPool() by default)", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('timeoutDuration', 'Timeout Duration', "Configures the thread execution timeout. Default value is 1 second.", 'number', '', '1000', false, false, false, false, '', ''),
+        new PropertyMeta('bulkheadMaxWaitDuration', 'Bulkhead Max Wait Duration', "Configures a maximum amount of time which the calling thread will wait to enter the bulkhead. The default is 0 (no waiting).", 'string', '', '0', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bulkheadFairCallHandlingEnabled', 'Bulkhead Fair Call Handling Enabled', "Configures whether the bulkhead uses a fair calling strategy. When enabled (default), a fair strategy guarantees the order of incoming requests (FIFO). When disabled, no ordering is guaranteed and may improve throughput.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('asynchronous', 'Asynchronous', "Whether to use asynchronous (non-blocking) processing with CompletionStage-based circuit breaker decorators. When enabled, the circuit breaker releases the caller thread immediately and completes processing asynchronously. This is most valuable when the downstream processor supports asynchronous processing (e.g. Netty HTTP, Kafka). When used with timeout, the timeoutExecutorService must be a ScheduledExecutorService.", 'boolean',  [...]
+        new PropertyMeta('timeoutEnabled', 'Timeout Enabled', "Whether timeout is enabled or not on the circuit breaker.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('timeoutExecutorService', 'Timeout Executor Service', "References to a custom thread pool to use when timeout is enabled (uses ForkJoinPool.commonPool() by default).", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeoutDuration', 'Timeout Duration', "Configures the thread execution timeout. Default value is 1 second.", 'string', '', '1000', false, false, false, false, '', ''),
         new PropertyMeta('timeoutCancelRunningFuture', 'Timeout Cancel Running Future', "Configures whether cancel is called on the running future. Defaults to true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('micrometerEnabled', 'Micrometer Enabled', "Whether to enable collecting statistics using Micrometer. This requires adding camel-resilience4j-micrometer JAR to the classpath.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('micrometerEnabled', 'Micrometer Enabled', "Whether to enable collecting statistics using Micrometer for all circuit breaker instances. This is a global setting (configure via camel.resilience4j.micrometerEnabled=true) and requires adding camel-resilience4j-micrometer JAR to the classpath.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('recordException', 'Record Exception', "Configure a list of exceptions that are recorded as a failure and thus increase the failure rate. Any exception matching or inheriting from one of the list counts as a failure, unless explicitly ignored via ignoreExceptions.", 'string', '', '', false, false, true, true, 'advanced', ''),
-        new PropertyMeta('ignoreException', 'Ignore Exception', "Configure a list of exceptions that are ignored and neither count as a failure nor success. Any exception matching or inheriting from one of the list will not count as a failure nor success, even if the exceptions is part of recordExceptions.", 'string', '', '', false, false, true, true, 'advanced', ''),
+        new PropertyMeta('ignoreException', 'Ignore Exception', "Configure a list of exceptions that are ignored and neither count as a failure nor success. Any exception matching or inheriting from one of the list will not count as a failure nor success, even if the exception is part of recordExceptions.", 'string', '', '', false, false, true, true, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('restContextRef', 'RestContextRefDefinition', 'Rest Context Ref', "To refer to an XML file with rest services defined using the rest-dsl", 'configuration,rest', [
-        new PropertyMeta('ref', 'Ref', "Reference to the rest-dsl", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('restContextRef', 'RestContextRefDefinition', 'Rest Context Ref', "References an external XML file containing REST service definitions for inclusion in the current context", 'configuration,rest', [
+        new PropertyMeta('ref', 'Ref', "Reference to the rest-dsl.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('routeBuilder', 'RouteBuilderDefinition', 'Route Builder', "To refer to a Java org.apache.camel.builder.RouteBuilder instance to use.", 'configuration', [
+    new ElementMeta('routeBuilder', 'RouteBuilderDefinition', 'Route Builder', "References a Java RouteBuilder class to include its routes in the current CamelContext", 'configuration', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ref', 'Ref', "Reference to the route builder instance", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to the RouteBuilder instance.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('routeConfigurationContextRef', 'RouteConfigurationContextRefDefinition', 'Route Configuration Context Ref', "To refer to an XML file with route configuration defined using the xml-dsl", 'configuration', [
-        new PropertyMeta('ref', 'Ref', "Reference to the route templates in the xml dsl", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('routeConfigurationContextRef', 'RouteConfigurationContextRefDefinition', 'Route Configuration Context Ref', "References an external XML file containing route configuration definitions for inclusion in the current context", 'configuration', [
+        new PropertyMeta('ref', 'Ref', "Reference to the route configuration in the xml-dsl.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('routeContextRef', 'RouteContextRefDefinition', 'Route Context Ref', "To refer to an XML file with routes defined using the xml-dsl", 'configuration', [
-        new PropertyMeta('ref', 'Ref', "Reference to the routes in the xml dsl", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('routeContextRef', 'RouteContextRefDefinition', 'Route Context Ref', "References an external XML file containing route definitions for inclusion in the current context", 'configuration', [
+        new PropertyMeta('ref', 'Ref', "Reference to the routes in the xml-dsl.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('templateParameter', 'RouteTemplateParameterDefinition', 'Template Parameter', "A route template parameter", 'configuration', [
-        new PropertyMeta('description', 'Description', "Description of the parameter", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "The name of the parameter", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('required', 'Required', "Whether the parameter is required or not. A parameter is required unless this option is set to false or a default value has been configured.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('defaultValue', 'Default Value', "Default value of the parameter. If a default value is provided then the parameter is implied not to be required.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('templateParameter', 'RouteTemplateParameterDefinition', 'Template Parameter', "Defines a parameter for a route template, with an optional default value and description", 'configuration', [
+        new PropertyMeta('description', 'Description', "Description of the template parameter for documentation purposes.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "The name of the template parameter.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('required', 'Required', "Whether this template parameter is required. A required parameter must have a value provided when creating a route from the template.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('defaultValue', 'Default Value', "The default value of the template parameter. Used when no explicit value is provided when creating a route from the template.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('templatedRouteParameter', 'TemplatedRouteParameterDefinition', 'Templated Route Parameter', "An input parameter of a route template.", 'configuration', [
-        new PropertyMeta('name', 'Name', "The name of the parameter", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('templatedRouteParameter', 'TemplatedRouteParameterDefinition', 'Templated Route Parameter', "Provides a parameter value for a templated route, binding a value to a route template parameter", 'configuration', [
+        new PropertyMeta('name', 'Name', "The name of the parameter.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('value', 'Value', "The value of the parameter.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('threadPoolProfile', 'ThreadPoolProfileDefinition', 'Thread Pool Profile', "To configure thread pools", 'configuration', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('threadPoolProfile', 'ThreadPoolProfileDefinition', 'Thread Pool Profile', "Defines a named thread pool profile with pool size, queue size, and thread keep-alive settings for use by EIPs and components", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('defaultProfile', 'Default Profile', "Whether this profile is the default thread pool profile", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('maxPoolSize', 'Max Pool Size', "Sets the maximum pool size", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('keepAliveTime', 'Keep Alive Time', "Sets the keep alive time for idle threads in the pool", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('timeUnit', 'Time Unit', "Sets the time unit to use for keep alive time By default SECONDS is used.", 'string', 'NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('maxQueueSize', 'Max Queue Size', "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue", 'number', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowCoreThreadTimeOut', 'Allow Core Thread Time Out', "Whether idle core threads is allowed to timeout and therefore can shrink the pool size below the core pool size Is by default true", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool.", 'string', 'Abort, CallerRuns', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size (number of threads to keep in the pool, even if idle).", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('maxPoolSize', 'Max Pool Size', "Sets the maximum pool size (the upper bound of threads in the pool).", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('keepAliveTime', 'Keep Alive Time', "Sets the keep alive time for idle threads before they are terminated. Only applies to threads above the core pool size.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('timeUnit', 'Time Unit', "Sets the time unit to use for keep alive time. By default SECONDS is used.", 'string', 'NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('maxQueueSize', 'Max Queue Size', "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue.", 'number', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowCoreThreadTimeOut', 'Allow Core Thread Time Out', "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool", 'string', 'Abort, CallerRuns, Block', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('value', 'ValueDefinition', 'Value', "A single value", 'configuration', [
-        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('value', 'ValueDefinition', 'Value', "Holds a single value, typically used as a child element in collection-based configurations", 'configuration', [
+        new PropertyMeta('value', 'Value', "The value.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('when', 'WhenDefinition', 'When', "Triggers a route when the expression evaluates to true", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('when', 'WhenDefinition', 'When', "Defines a conditional branch within a Choice EIP that executes when its predicate evaluates to true", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether this when should trigger and route the message or not.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('batchConfig', 'BatchResequencerConfig', 'Batch Config', "Configures batch-processing resequence eip.", 'configuration,eip', [
+    new ElementMeta('batchConfig', 'BatchResequencerConfig', 'Batch Config', "Configures the batch-processing mode of the Resequence EIP, which collects messages into a batch and sorts them before releasing", 'configuration,eip', [
         new PropertyMeta('batchSize', 'Batch Size', "Sets the size of the batch to be re-ordered. The default size is 100.", 'number', '', '100', false, false, false, false, '', ''),
         new PropertyMeta('batchTimeout', 'Batch Timeout', "Sets the timeout for collecting elements to be re-ordered. The default timeout is 1000 msec.", 'string', '', '1000', false, false, false, false, '', ''),
         new PropertyMeta('allowDuplicates', 'Allow Duplicates', "Whether to allow duplicates.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('reverse', 'Reverse', "Whether to reverse the ordering.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('ignoreInvalidExchanges', 'Ignore Invalid Exchanges', "Whether to ignore invalid exchanges", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ignoreInvalidExchanges', 'Ignore Invalid Exchanges', "Whether to ignore invalid exchanges.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('streamConfig', 'StreamResequencerConfig', 'Stream Config', "Configures stream-processing resequence eip.", 'configuration,eip', [
+    new ElementMeta('streamConfig', 'StreamResequencerConfig', 'Stream Config', "Configures the stream-processing mode of the Resequence EIP, which continuously reorders messages as they arrive using a timeout", 'configuration,eip', [
         new PropertyMeta('capacity', 'Capacity', "Sets the capacity of the resequencer inbound queue.", 'number', '', '1000', false, false, false, false, '', ''),
-        new PropertyMeta('timeout', 'Timeout', "Sets minimum time (milliseconds) to wait for missing elements (messages).", 'string', '', '1000', false, false, false, false, '', ''),
-        new PropertyMeta('deliveryAttemptInterval', 'Delivery Attempt Interval', "Sets the interval in milliseconds the stream resequencer will at most wait while waiting for condition of being able to deliver.", 'string', '', '1000', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('ignoreInvalidExchanges', 'Ignore Invalid Exchanges', "Whether to ignore invalid exchanges", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('rejectOld', 'Reject Old', "If true, throws an exception when messages older than the last delivered message are processed", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('comparator', 'Comparator', "To use a custom comparator as a org.apache.camel.processor.resequencer.ExpressionResultComparator type.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('timeout', 'Timeout', "Sets the minimum time (milliseconds) to wait for missing elements (messages).", 'string', '', '1000', false, false, false, false, '', ''),
+        new PropertyMeta('deliveryAttemptInterval', 'Delivery Attempt Interval', "Sets the interval in milliseconds the stream resequencer will at most wait while waiting for the condition of being able to deliver.", 'string', '', '1000', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('ignoreInvalidExchanges', 'Ignore Invalid Exchanges', "Whether to ignore invalid exchanges.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('rejectOld', 'Reject Old', "If true, throws an exception when messages older than the last delivered message are processed.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('comparator', 'Comparator', "To use a custom comparator for ordering the sequence of messages.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Configure data formats.", 'dataformat,transformation', [
+    new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Container for defining data format configurations", 'dataformat,transformation', [
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('barcode', 'barcode', "barcode", 'BarcodeDataFormat', '', '', false, false, false, true, '', ''),
@@ -2356,6 +2423,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('groovyJson', 'groovyJson', "groovyJson", 'GroovyJSonDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
@@ -2367,8 +2435,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('jsonApi', 'jsonApi', "jsonApi", 'JsonApiDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('lzf', 'lzf', "lzf", 'LZFDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('mimeMultipart', 'mimeMultipart', "mimeMultipart", 'MimeMultipartDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('ocsf', 'ocsf', "ocsf", 'OcsfDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('parquetAvro', 'parquetAvro', "parquetAvro", 'ParquetAvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('pgp', 'pgp', "pgp", 'PGPDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('pqc', 'pqc', "pqc", 'PQCDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('protobuf', 'protobuf', "protobuf", 'ProtobufDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('rss', 'rss', "rss", 'RssDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('smooks', 'smooks', "smooks", 'SmooksDataFormat', '', '', false, false, false, true, '', ''),
@@ -2387,93 +2457,93 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('deadLetterChannel', 'DeadLetterChannelDefinition', 'Dead Letter Channel', "Error handler with dead letter queue.", 'configuration,error', [
+    new ElementMeta('deadLetterChannel', 'DeadLetterChannelDefinition', 'Dead Letter Channel', "Error handler that moves failed messages to a dead letter endpoint after exhausting redelivery attempts", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('deadLetterUri', 'Dead Letter Uri', "The dead letter endpoint uri for the Dead Letter error handler.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('deadLetterHandleNewException', 'Dead Letter Handle New Exception', "Whether the dead letter channel should handle (and ignore) any new exception that may been thrown during sending the message to the dead letter endpoint. The default value is true which means any such kind of exception is handled and ignored. Set this to false to let the exception be propagated back on the org.apache.camel.Exchange . This can be used in situations where you use transactions, and [...]
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('deadLetterUri', 'Dead Letter Uri', "The endpoint URI where failed exchanges are sent after all redelivery attempts have been exhausted (the dead letter queue).", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('deadLetterHandleNewException', 'Dead Letter Handle New Exception', "Whether the dead letter channel should handle (and ignore) any new exception thrown while sending the exchange to the dead letter endpoint. Set to false to propagate the new exception back, which is useful with transactions so the transaction can detect the failure and rollback.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "The redelivery settings for configuring retry attempts and delays when message processing fails.", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "If enabled, uses the original input message (body and headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. Cannot be used together with useOriginalBody.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "If enabled, uses the original input message body (but not headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. This allows enriching the message with custom headers while keeping the original body. Cannot be used together with useOriginalMessage.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a redelivery policy to lookup in the registry to be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('loggerRef', 'Logger Ref', "Sets a reference to a logger to use for logging error handler activity.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('level', 'Level', "The logging level to use when logging caught exceptions.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that is invoked before each redelivery attempt. Can be used to change the exchange before it is redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that is invoked just after an exception occurred. Can be used to perform custom logging. Any exception thrown from this processor is ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the exchange before handled by the failure processor or dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a reference to a retry while predicate. Redelivery continues as long as the predicate evaluates to true.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used for asynchronous redelivery.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('defaultErrorHandler', 'DefaultErrorHandlerDefinition', 'Default Error Handler', "The default error handler.", 'configuration,error', [
+    new ElementMeta('defaultErrorHandler', 'DefaultErrorHandlerDefinition', 'Default Error Handler', "The default error handler that supports redelivery with configurable retry policies and delay patterns", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "The redelivery settings for configuring retry attempts and delays when message processing fails.", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "If enabled, uses the original input message (body and headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. Cannot be used together with useOriginalBody.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "If enabled, uses the original input message body (but not headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. This allows enriching the message with custom headers while keeping the original body. Cannot be used together with useOriginalMessage.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a redelivery policy to lookup in the registry to be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('loggerRef', 'Logger Ref', "Sets a reference to a logger to use for logging error handler activity.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('level', 'Level', "The logging level to use when logging caught exceptions.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that is invoked before each redelivery attempt. Can be used to change the exchange before it is redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that is invoked just after an exception occurred. Can be used to perform custom logging. Any exception thrown from this processor is ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the exchange before handled by the failure processor or dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a reference to a retry while predicate. Redelivery continues as long as the predicate evaluates to true.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used for asynchronous redelivery.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('jtaTransactionErrorHandler', 'JtaTransactionErrorHandlerDefinition', 'Jta Transaction Error Handler', "JTA based transactional error handler (requires camel-jta).", 'configuration,error', [
+    new ElementMeta('jtaTransactionErrorHandler', 'JtaTransactionErrorHandlerDefinition', 'Jta Transaction Error Handler', "Transactional error handler using JTA (Java Transaction API) that marks the transaction for rollback on failure", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('transactedPolicyRef', 'Transacted Policy Ref', "The transacted policy to use that is configured for either Spring or JTA based transactions. If no policy has been configured then Camel will attempt to auto-discover.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.spi.TransactedPolicy'),
-        new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "Sets the logging level to use for logging transactional rollback. This option is default WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "The logging level to use for logging transactional rollback. Default is WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "The redelivery settings for configuring retry attempts and delays when message processing fails.", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "If enabled, uses the original input message (body and headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. Cannot be used together with useOriginalBody.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "If enabled, uses the original input message body (but not headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. This allows enriching the message with custom headers while keeping the original body. Cannot be used together with useOriginalMessage.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a redelivery policy to lookup in the registry to be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('loggerRef', 'Logger Ref', "Sets a reference to a logger to use for logging error handler activity.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('level', 'Level', "The logging level to use when logging caught exceptions.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that is invoked before each redelivery attempt. Can be used to change the exchange before it is redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that is invoked just after an exception occurred. Can be used to perform custom logging. Any exception thrown from this processor is ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the exchange before handled by the failure processor or dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a reference to a retry while predicate. Redelivery continues as long as the predicate evaluates to true.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used for asynchronous redelivery.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('noErrorHandler', 'NoErrorHandlerDefinition', 'No Error Handler', "To not use an error handler.", 'configuration,error', [
+    new ElementMeta('noErrorHandler', 'NoErrorHandlerDefinition', 'No Error Handler', "Disables error handling for a route, causing exceptions to propagate immediately to the caller", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('refErrorHandler', 'RefErrorHandlerDefinition', 'Ref Error Handler', "References to an existing or custom error handler.", 'configuration,error', [
+    new ElementMeta('refErrorHandler', 'RefErrorHandlerDefinition', 'Ref Error Handler', "References a custom error handler bean from the registry by its name", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ref', 'Ref', "References to an existing or custom error handler.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('ref', 'Ref', "Reference to an existing or custom error handler to lookup from the registry.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('springTransactionErrorHandler', 'SpringTransactionErrorHandlerDefinition', 'Spring Transaction Error Handler', "Spring based transactional error handler (requires camel-spring).", 'configuration,error', [
+    new ElementMeta('springTransactionErrorHandler', 'SpringTransactionErrorHandlerDefinition', 'Spring Transaction Error Handler', "Transactional error handler using Spring Transaction Manager that marks the transaction for rollback on failure", 'configuration,error,errorhandling', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('transactedPolicyRef', 'Transacted Policy Ref', "The transacted policy to use that is configured for either Spring or JTA based transactions. If no policy has been configured then Camel will attempt to auto-discover.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.spi.TransactedPolicy'),
-        new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "Sets the logging level to use for logging transactional rollback. This option is default WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "The logging level to use for logging transactional rollback. Default is WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "The redelivery settings for configuring retry attempts and delays when message processing fails.", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "If enabled, uses the original input message (body and headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. Cannot be used together with useOriginalBody.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "If enabled, uses the original input message body (but not headers) when the exchange is moved to the dead letter queue after all redelivery attempts have been exhausted. This allows enriching the message with custom headers while keeping the original body. Cannot be used together with useOriginalMessage.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a redelivery policy to lookup in the registry to be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('loggerRef', 'Logger Ref', "Sets a reference to a logger to use for logging error handler activity.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('level', 'Level', "The logging level to use when logging caught exceptions.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that is invoked before each redelivery attempt. Can be used to change the exchange before it is redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that is invoked just after an exception occurred. Can be used to perform custom logging. Any exception thrown from this processor is ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the exchange before handled by the failure processor or dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a reference to a retry while predicate. Redelivery continues as long as the predicate evaluates to true.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
+        new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used for asynchronous redelivery.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
     new ElementMeta('expression', 'ExpressionDefinition', 'Expression', "A useful base class for an expression", 'language', [
         new PropertyMeta('constant', 'constant', "constant", 'ConstantExpression', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('csimple', 'csimple', "csimple", 'CSimpleExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('datasonnet', 'datasonnet', "datasonnet", 'DatasonnetExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('exchangeProperty', 'exchangeProperty', "exchangeProperty", 'ExchangePropertyExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('groovy', 'groovy', "groovy", 'GroovyExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('header', 'header', "header", 'HeaderExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('hl7terser', 'hl7terser', "hl7terser", 'Hl7TerserExpression', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('jactl', 'jactl', "jactl", 'JactlExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('java', 'java', "java", 'JavaExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('jq', 'jq', "jq", 'JqExpression', '', '', false, false, false, true, '', ''),
         new PropertyMeta('js', 'js', "js", 'JavaScriptExpression', '', '', false, false, false, true, '', ''),
@@ -2493,299 +2563,299 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('xtokenize', 'xtokenize', "xtokenize", 'XMLTokenizerExpression', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('customLoadBalancer', 'CustomLoadBalancerDefinition', 'Custom Load Balancer', "To use a custom load balancer implementation.", 'eip,routing', [
+    new ElementMeta('customLoadBalancer', 'CustomLoadBalancerDefinition', 'Custom Load Balancer', "References a custom load balancer implementation from the registry", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('ref', 'Ref', "Refers to the custom load balancer to lookup from the registry", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('ref', 'Ref', "Refers to the custom load balancer to lookup from the registry.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('failoverLoadBalancer', 'FailoverLoadBalancerDefinition', 'Failover Load Balancer', "In case of failures the exchange will be tried on the next endpoint.", 'eip,routing', [
+    new ElementMeta('failoverLoadBalancer', 'FailoverLoadBalancerDefinition', 'Failover Load Balancer', "Load balancer that tries the next endpoint in case of failure, cycling through available endpoints until one succeeds", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('exception', 'Exception', "A list of class names for specific exceptions to monitor. If no exceptions are configured then all exceptions are monitored", 'string', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('roundRobin', 'Round Robin', "Whether or not the failover load balancer should operate in round robin mode or not. If not, then it will always start from the first endpoint when a new message is to be processed. In other words it restart from the top for every message. If round robin is enabled, then it keeps state and will continue with the next endpoint in a round robin fashion. You can also enable sticky mode together with round robin, if so then it will pick  [...]
-        new PropertyMeta('sticky', 'Sticky', "Whether or not the failover load balancer should operate in sticky mode or not. If not, then it will always start from the first endpoint when a new message is to be processed. In other words it restart from the top for every message. If sticky is enabled, then it keeps state and will continue with the last known good endpoint. You can also enable sticky mode together with round robin, if so then it will pick the last known good endpoint to u [...]
-        new PropertyMeta('maximumFailoverAttempts', 'Maximum Failover Attempts', "A value to indicate after X failover attempts we should exhaust (give up). Use -1 to indicate never give up and continuously try to failover. Use 0 to never failover. And use e.g. 3 to failover at most 3 times before giving up. This option can be used whether roundRobin is enabled or not.", 'string', '', '-1', false, false, false, false, '', ''),
+        new PropertyMeta('exception', 'Exception', "A list of class names for specific exceptions to monitor. If no exceptions are configured then all exceptions are monitored.", 'string', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('roundRobin', 'Round Robin', "Whether to use round robin mode. If enabled, the load balancer keeps state and continues with the next endpoint in a round robin fashion. If not, it always starts from the first endpoint for every message.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('sticky', 'Sticky', "Whether to use sticky mode. If enabled, the load balancer keeps state and continues with the last known good endpoint.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('maximumFailoverAttempts', 'Maximum Failover Attempts', "A value to indicate after X failover attempts we should exhaust (give up). Use -1 to indicate never give up and continuously try to failover. Use 0 to never failover. Use e.g. 3 to failover at most 3 times before giving up.", 'string', '', '-1', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('randomLoadBalancer', 'RandomLoadBalancerDefinition', 'Random Load Balancer', "The destination endpoints are selected randomly.", 'eip,routing', [
+    new ElementMeta('randomLoadBalancer', 'RandomLoadBalancerDefinition', 'Random Load Balancer', "Load balancer that randomly selects a destination endpoint for each message", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('roundRobinLoadBalancer', 'RoundRobinLoadBalancerDefinition', 'Round Robin Load Balancer', "The destination endpoints are selected in a round-robin fashion. This is a well-known and classic policy, which spreads the load evenly.", 'eip,routing', [
+    new ElementMeta('roundRobinLoadBalancer', 'RoundRobinLoadBalancerDefinition', 'Round Robin Load Balancer', "Load balancer that cycles through destination endpoints in sequential order, distributing the load evenly", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('stickyLoadBalancer', 'StickyLoadBalancerDefinition', 'Sticky Load Balancer', "Sticky load balancing using an expression to calculate a correlation key to perform the sticky load balancing.", 'eip,routing', [
+    new ElementMeta('stickyLoadBalancer', 'StickyLoadBalancerDefinition', 'Sticky Load Balancer', "Load balancer that routes messages to the same endpoint based on a correlation expression, ensuring session affinity", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('correlationExpression', 'Correlation Expression', "The correlation expression to use to calculate the correlation key", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('correlationExpression', 'Correlation Expression', "The correlation expression to use to calculate the correlation key.", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('topicLoadBalancer', 'TopicLoadBalancerDefinition', 'Topic Load Balancer', "Topic which sends to all destinations.", 'eip,routing', [
+    new ElementMeta('topicLoadBalancer', 'TopicLoadBalancerDefinition', 'Topic Load Balancer', "Load balancer that sends every message to all destination endpoints, similar to a publish-subscribe pattern", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('weightedLoadBalancer', 'WeightedLoadBalancerDefinition', 'Weighted Load Balancer', "Uses a weighted load distribution ratio for each server with respect to others.", 'eip,routing', [
+    new ElementMeta('weightedLoadBalancer', 'WeightedLoadBalancerDefinition', 'Weighted Load Balancer', "Load balancer that distributes messages across endpoints according to configured weight ratios", 'eip,loadbalancing,routing', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('distributionRatio', 'Distribution Ratio', "The distribution ratio is a delimited String consisting on integer weights separated by delimiters for example 2,3,5. The distributionRatio must match the number of endpoints and/or processors specified in the load balancer list.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('distributionRatioDelimiter', 'Distribution Ratio Delimiter', "Delimiter used to specify the distribution ratio. The default value is , (comma)", 'string', '', ',', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('roundRobin', 'Round Robin', "To enable round robin mode. By default the weighted distribution mode is used. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('distributionRatio', 'Distribution Ratio', "The distribution ratio is a delimited String consisting of integer weights separated by delimiters for example 2,3,5. The distributionRatio must match the number of endpoints and/or processors specified in the load balancer list.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('distributionRatioDelimiter', 'Distribution Ratio Delimiter', "Delimiter used to specify the distribution ratio. The default value is comma.", 'string', '', ',', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('roundRobin', 'Round Robin', "Whether to enable round robin mode. By default the weighted distribution mode is used.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('apiKey', 'ApiKeyDefinition', 'Api Key', "Rest security basic auth definition", 'rest,security,configuration', [
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('apiKey', 'ApiKeyDefinition', 'Api Key', "Configures API key authentication for a REST service", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for the security scheme.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('name', 'Name', "The name of the header or query parameter to be used.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('inHeader', 'In Header', "To use header as the location of the API key.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('inQuery', 'In Query', "To use query parameter as the location of the API key.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('inCookie', 'In Cookie', "To use a cookie as the location of the API key.", 'boolean', '', 'false', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('basicAuth', 'BasicAuthDefinition', 'Basic Auth', "Rest security basic auth definition", 'rest,security,configuration', [
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('basicAuth', 'BasicAuthDefinition', 'Basic Auth', "Configures HTTP Basic authentication for a REST service", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for the security scheme.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('bearerToken', 'BearerTokenDefinition', 'Bearer Token', "Rest security bearer token authentication definition", 'rest,security,configuration', [
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('bearerToken', 'BearerTokenDefinition', 'Bearer Token', "Configures Bearer token authentication for a REST service", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for the security scheme.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('format', 'Format', "A hint to the client to identify how the bearer token is formatted.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('delete', 'DeleteDefinition', 'Delete', "Rest DELETE command", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('delete', 'DeleteDefinition', 'Delete', "Defines an HTTP DELETE operation in the REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('param', 'Param', "Information about parameters for this REST operation", 'ParamDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('responseMessage', 'Response Message', "Response details for this REST operation", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, 'security', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this rest operation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id this REST service will refer to.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('get', 'GetDefinition', 'Get', "Rest GET command", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('get', 'GetDefinition', 'Get', "Defines an HTTP GET operation in the REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('param', 'Param', "Information about parameters for this REST operation", 'ParamDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('responseMessage', 'Response Message', "Response details for this REST operation", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, 'security', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this rest operation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id this REST service will refer to.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('head', 'HeadDefinition', 'Head', "Rest HEAD command", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('head', 'HeadDefinition', 'Head', "Defines an HTTP HEAD operation in the REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('param', 'Param', "Information about parameters for this REST operation", 'ParamDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('responseMessage', 'Response Message', "Response details for this REST operation", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, 'security', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this rest operation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id this REST service will refer to.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('mutualTLS', 'MutualTLSDefinition', 'Mutual TLS', "Rest security mutual TLS authentication definition", 'rest,security,configuration', [
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('mutualTLS', 'MutualTLSDefinition', 'Mutual TLS', "Configures mutual TLS (mTLS) client certificate authentication for a REST service", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for the security scheme.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('openApi', 'OpenApiDefinition', 'Open Api', "To use OpenApi as contract-first with Camel Rest DSL.", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('openApi', 'OpenApiDefinition', 'Open Api', "Configures a contract-first REST service using an OpenAPI specification, where Camel auto-generates routes for each operation", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable all the REST services from the OpenAPI contract from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('specification', 'Specification', "Path to the OpenApi specification file.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('apiContextPath', 'Api Context Path', "Whether to enable api-doc that exposes the OpenAPI specification file as a REST endpoint. This allows clients to obtain the specification from the running Camel application.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('specification', 'Specification', "Path to the OpenAPI specification file.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('apiContextPath', 'Api Context Path', "Context path for exposing the OpenAPI specification file as a REST endpoint, allowing clients to obtain the specification from the running application.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('missingOperation', 'Missing Operation', "Whether to fail, ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route.", 'string', 'fail, ignore, mock', 'fail', false, false, false, false, '', ''),
         new PropertyMeta('mockIncludePattern', 'Mock Include Pattern', "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified separated by comma.", 'string', '', 'classpath:camel-mock/**', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('openIdConnect', 'OpenIdConnectDefinition', 'Open Id Connect', "Rest security OpenID Connect definition", 'rest,security,configuration', [
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('url', 'Url', "OpenId Connect URL to discover OAuth2 configuration values.", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('openIdConnect', 'OpenIdConnectDefinition', 'Open Id Connect', "Configures OpenID Connect authentication for a REST service", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for the security scheme.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('url', 'Url', "OpenID Connect URL to discover OAuth2 configuration values.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('param', 'ParamDefinition', 'Param', "To specify the rest operation parameters.", 'rest', [
-        new PropertyMeta('description', 'Description', "Sets the parameter description.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "Sets the parameter name.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the parameter type.", 'string', 'body, formData, header, path, query', 'path', false, false, false, false, '', ''),
-        new PropertyMeta('defaultValue', 'Default Value', "Sets the parameter default value.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('param', 'ParamDefinition', 'Param', "Defines a parameter for a REST operation, specifying its type, name, data type, and whether it is required", 'rest', [
+        new PropertyMeta('description', 'Description', "Description of the parameter.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "The parameter name.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the parameter type such as body, form, header, path, or query.", 'string', 'body, formData, header, path, query', 'path', true, false, false, false, '', ''),
+        new PropertyMeta('defaultValue', 'Default Value', "The default value of the parameter.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('required', 'Required', "Sets the parameter required flag.", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('collectionFormat', 'Collection Format', "Sets the parameter collection format.", 'string', 'csv, multi, pipes, ssv, tsv', 'csv', false, false, false, false, '', ''),
         new PropertyMeta('arrayType', 'Array Type', "Sets the parameter array type. Required if data type is array. Describes the type of items in the array.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataType', 'Data Type', "Sets the parameter data type.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataFormat', 'Data Format', "Sets the parameter data format.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowableValues', 'Allowable Values', "Sets the parameter list of allowable values (enum).", 'string', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('examples', 'Examples', "Sets the parameter examples.", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('dataType', 'Data Type', "Sets the parameter data type such as string, integer, or boolean.", 'string', '', 'string', false, false, false, false, '', ''),
+        new PropertyMeta('dataFormat', 'Data Format', "The data format of the parameter such as binary, date, date-time, or password.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowableValues', 'Allowable Values', "List of allowable values for the parameter (enum).", 'string', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('examples', 'Examples', "Examples of the parameter.", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('patch', 'PatchDefinition', 'Patch', "Rest PATCH command", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('patch', 'PatchDefinition', 'Patch', "Defines an HTTP PATCH operation in the REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('param', 'Param', "Information about parameters for this REST operation", 'ParamDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('responseMessage', 'Response Message', "Response details for this REST operation", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, 'security', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this rest operation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id this REST service will refer to.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('post', 'PostDefinition', 'Post', "Rest POST command", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('post', 'PostDefinition', 'Post', "Defines an HTTP POST operation in the REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('param', 'Param', "Information about parameters for this REST operation", 'ParamDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('responseMessage', 'Response Message', "Response details for this REST operation", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, 'security', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this rest operation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id this REST service will refer to.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('put', 'PutDefinition', 'Put', "Rest PUT command", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('put', 'PutDefinition', 'Put', "Defines an HTTP PUT operation in the REST DSL", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('param', 'Param', "Information about parameters for this REST operation", 'ParamDefinition', '', '', false, false, true, true, '', ''),
         new PropertyMeta('responseMessage', 'Response Message', "Response details for this REST operation", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('security', 'Security', "Security settings for this REST operation", 'SecurityDefinition', '', '', false, false, true, true, 'security', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data. This option will override what may be configured on a parent level.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML. This option will override what may be configured on a parent level.", 'string', 'off, auto, json, xml, json_xml', 'off', false, fa [...]
+        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this rest operation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('routeId', 'Route Id', "The route id this REST service will refer to.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('responseHeader', 'ResponseHeaderDefinition', 'Response Header', "To specify the rest operation response headers.", 'rest', [
-        new PropertyMeta('description', 'Description', "Description of the parameter.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "Name of the parameter. This option is mandatory.", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('responseHeader', 'ResponseHeaderDefinition', 'Response Header', "Defines a response header for a REST operation, used for API documentation and OpenAPI spec generation", 'rest', [
+        new PropertyMeta('description', 'Description', "Description of the response header.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "Name of the response header.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('collectionFormat', 'Collection Format', "Sets the parameter collection format.", 'string', 'csv, multi, pipes, ssv, tsv', 'csv', false, false, false, false, '', ''),
         new PropertyMeta('arrayType', 'Array Type', "Sets the parameter array type. Required if data type is array. Describes the type of items in the array.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataType', 'Data Type', "Sets the header data type.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataFormat', 'Data Format', "Sets the parameter data format.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowableValues', 'Allowable Values', "Sets the parameter list of allowable values.", 'string', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('example', 'Example', "Sets the example", 'string', '', '', false, false, false, false, '', ''),
-    ], [
-    ]),
-    new ElementMeta('responseMessage', 'ResponseMessageDefinition', 'Response Message', "To specify the rest operation response messages.", 'rest', [
-        new PropertyMeta('code', 'Code', "The response code such as a HTTP status code", 'string', '', '200', false, false, false, false, '', ''),
-        new PropertyMeta('contentType', 'Content Type', "The response content-type such as application/json.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('message', 'Message', "The response message (description)", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('responseModel', 'Response Model', "The response model", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('header', 'Header', "Adds a response header", 'ResponseHeaderDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('examples', 'Examples', "Examples of response messages", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
-    ], [
-    ]),
-    new ElementMeta('restBinding', 'RestBindingDefinition', 'Rest Binding', "To configure rest binding", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('dataType', 'Data Type', "Sets the header data type such as string, integer, or boolean.", 'string', '', 'string', false, false, false, false, '', ''),
+        new PropertyMeta('dataFormat', 'Data Format', "The data format of the header such as binary, date, date-time, or password.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('allowableValues', 'Allowable Values', "List of allowable values for the header (enum).", 'string', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('example', 'Example', "An example value of this response header.", 'string', '', '', false, false, false, false, '', ''),
+    ], [
+    ]),
+    new ElementMeta('responseMessage', 'ResponseMessageDefinition', 'Response Message', "Defines a response message for a REST operation, including HTTP status code and description for API documentation", 'rest', [
+        new PropertyMeta('code', 'Code', "The response code such as a HTTP status code.", 'string', '', '200', false, false, false, false, '', ''),
+        new PropertyMeta('contentType', 'Content Type', "The response content type such as application/json.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('message', 'Message', "The response message (description).", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('responseModel', 'Response Model', "The response model (class name).", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('header', 'Header', "The response headers.", 'ResponseHeaderDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('examples', 'Examples', "Examples of response messages.", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
+    ], [
+    ]),
+    new ElementMeta('restBinding', 'RestBindingDefinition', 'Rest Binding', "Configures data binding for a REST service, controlling how request and response bodies are marshalled and unmarshalled", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('consumes', 'Consumes', "The content type the REST service accepts (consumes) as input, such as application/xml or application/json.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('produces', 'Produces', "The content type the REST service produces (uses for output), such as application/xml or application/json.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode for automatic marshalling and unmarshalling of request and response bodies. off (default) disables binding. auto detects JSON or XML from the Content-Type header. json binds using a JSON data format only. xml binds using an XML data format only. json_xml supports both JSON and XML.", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('component', 'Component', "Sets the component name that this definition will apply to", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check whether Content-Type/Accept headers, required parameters, and message body are valid.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('clientResponseValidation', 'Client Response Validation', "Whether to validate what Camel is returning as response to the client, such as checking status-code, Content-Type, and headers match the Rest DSL response definition.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('component', 'Component', "Sets the component name that this definition will apply to.", 'string', '', '', false, false, false, false, 'advanced', ''),
     ], [
     ]),
-    new ElementMeta('restProperty', 'RestPropertyDefinition', 'Rest Property', "A key value pair", 'rest', [
-        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', ''),
+    new ElementMeta('restProperty', 'RestPropertyDefinition', 'Rest Property', "Defines a key/value property for REST configuration, used to pass component-specific settings", 'rest', [
+        new PropertyMeta('key', 'Key', "Property key.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('value', 'Value', "Property value.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('securityDefinitions', 'RestSecuritiesDefinition', 'Rest Security Definitions', "To configure rest security definitions.", 'rest,security,configuration', [
+    new ElementMeta('securityDefinitions', 'RestSecuritiesDefinition', 'Rest Security Definitions', "Container for security scheme definitions used by REST services", 'rest,security,configuration', [
         new PropertyMeta('apiKey', 'apiKey', "apiKey", 'ApiKeyDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('basicAuth', 'basicAuth', "basicAuth", 'BasicAuthDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('bearerToken', 'bearerToken', "bearerToken", 'BearerTokenDefinition', '', '', false, false, false, true, '', ''),
@@ -2794,72 +2864,72 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('openIdConnect', 'openIdConnect', "openIdConnect", 'OpenIdConnectDefinition', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('rests', 'RestsDefinition', 'Rests', "A series of rest services defined using the rest-dsl", 'rest', [
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('rests', 'RestsDefinition', 'Rests', "Container for a collection of REST service definitions", 'rest', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('note', 'Note', "The note for this node", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "The description for this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('rest', 'rest', "rest", 'RestDefinition', '', '', false, false, true, true, '', ''),
     ], [
     ]),
-    new ElementMeta('security', 'SecurityDefinition', 'Rest Security', "Rest security definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('scopes', 'Scopes', "The scopes to allow (separate multiple scopes by comma)", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('security', 'SecurityDefinition', 'Rest Security', "Applies a security requirement to a REST operation, referencing a security scheme defined at the service level", 'rest,security,configuration', [
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('scopes', 'Scopes', "The scopes to allow (separate multiple scopes by comma).", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('langChain4jCharacterTokenizer', 'LangChain4jCharacterTokenizerDefinition', 'LangChain4J Tokenizer with character splitter', "Camel AI: Tokenizer for splitting by character.", 'eip,transformation,ai', [
+    new ElementMeta('langChain4jCharacterTokenizer', 'LangChain4jCharacterTokenizerDefinition', 'LangChain4J Tokenizer with character splitter', "Splits text into chunks by character count, using LangChain4j's character tokenizer for AI text processing", 'eip,transformation,ai', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('tokenizerType', 'Tokenizer Type', "Sets the tokenizer type", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxTokens', 'Max Tokens', "Sets the maximum number of tokens on each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxOverlap', 'Max Overlap', "Sets the maximum number of tokens that can overlap in each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('modelName', 'Model Name', "Sets the model name", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenizerType', 'Tokenizer Type', "The tokenizer type. Must be one of OPEN_AI, AZURE or QWEN.", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxTokens', 'Max Tokens', "The maximum number of tokens on each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxOverlap', 'Max Overlap', "The maximum number of tokens that can overlap in each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('modelName', 'Model Name', "The underlying model name used by the tokenizer. Providing this switches to computing segment sizes in terms of tokens.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('langChain4jLineTokenizer', 'LangChain4jLineTokenizerDefinition', 'LangChain4J Tokenizer with line splitter', "Camel AI: Tokenizer for splitting line by line.", 'eip,transformation,ai', [
+    new ElementMeta('langChain4jLineTokenizer', 'LangChain4jLineTokenizerDefinition', 'LangChain4J Tokenizer with line splitter', "Splits text into chunks line by line, using LangChain4j's line tokenizer for AI text processing", 'eip,transformation,ai', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('tokenizerType', 'Tokenizer Type', "Sets the tokenizer type", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxTokens', 'Max Tokens', "Sets the maximum number of tokens on each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxOverlap', 'Max Overlap', "Sets the maximum number of tokens that can overlap in each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('modelName', 'Model Name', "Sets the model name", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenizerType', 'Tokenizer Type', "The tokenizer type. Must be one of OPEN_AI, AZURE or QWEN.", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxTokens', 'Max Tokens', "The maximum number of tokens on each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxOverlap', 'Max Overlap', "The maximum number of tokens that can overlap in each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('modelName', 'Model Name', "The underlying model name used by the tokenizer. Providing this switches to computing segment sizes in terms of tokens.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('langChain4jParagraphTokenizer', 'LangChain4jParagraphTokenizerDefinition', 'LangChain4J Tokenizer with paragraph splitter', "Camel AI: Tokenizer for splitting by paragraphs.", 'eip,transformation,ai', [
+    new ElementMeta('langChain4jParagraphTokenizer', 'LangChain4jParagraphTokenizerDefinition', 'LangChain4J Tokenizer with paragraph splitter', "Splits text into chunks by paragraph boundaries, using LangChain4j's paragraph tokenizer for AI text processing", 'eip,transformation,ai', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('tokenizerType', 'Tokenizer Type', "Sets the tokenizer type", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxTokens', 'Max Tokens', "Sets the maximum number of tokens on each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxOverlap', 'Max Overlap', "Sets the maximum number of tokens that can overlap in each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('modelName', 'Model Name', "Sets the model name", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenizerType', 'Tokenizer Type', "The tokenizer type. Must be one of OPEN_AI, AZURE or QWEN.", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxTokens', 'Max Tokens', "The maximum number of tokens on each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxOverlap', 'Max Overlap', "The maximum number of tokens that can overlap in each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('modelName', 'Model Name', "The underlying model name used by the tokenizer. Providing this switches to computing segment sizes in terms of tokens.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('langChain4jSentenceTokenizer', 'LangChain4jSentenceTokenizerDefinition', 'LangChain4J Tokenizer with sentence splitter', "Camel AI: Tokenizer for splitting by sentences.", 'eip,transformation,ai', [
+    new ElementMeta('langChain4jSentenceTokenizer', 'LangChain4jSentenceTokenizerDefinition', 'LangChain4J Tokenizer with sentence splitter', "Splits text into chunks by sentence boundaries, using LangChain4j's sentence tokenizer for AI text processing", 'eip,transformation,ai', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('tokenizerType', 'Tokenizer Type', "Sets the tokenizer type", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxTokens', 'Max Tokens', "Sets the maximum number of tokens on each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxOverlap', 'Max Overlap', "Sets the maximum number of tokens that can overlap in each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('modelName', 'Model Name', "Sets the model name", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenizerType', 'Tokenizer Type', "The tokenizer type. Must be one of OPEN_AI, AZURE or QWEN.", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxTokens', 'Max Tokens', "The maximum number of tokens on each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxOverlap', 'Max Overlap', "The maximum number of tokens that can overlap in each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('modelName', 'Model Name', "The underlying model name used by the tokenizer. Providing this switches to computing segment sizes in terms of tokens.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('langChain4jWordTokenizer', 'LangChain4jWordTokenizerDefinition', 'LangChain4J Tokenizer with word splitter', "Camel AI: Tokenizer for splitting by word.", 'eip,transformation,ai', [
+    new ElementMeta('langChain4jWordTokenizer', 'LangChain4jWordTokenizerDefinition', 'LangChain4J Tokenizer with word splitter', "Splits text into chunks by word boundaries, using LangChain4j's word tokenizer for AI text processing", 'eip,transformation,ai', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('tokenizerType', 'Tokenizer Type', "Sets the tokenizer type", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxTokens', 'Max Tokens', "Sets the maximum number of tokens on each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('maxOverlap', 'Max Overlap', "Sets the maximum number of tokens that can overlap in each segment", 'number', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('modelName', 'Model Name', "Sets the model name", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenizerType', 'Tokenizer Type', "The tokenizer type. Must be one of OPEN_AI, AZURE or QWEN.", 'string', 'OPEN_AI, AZURE, QWEN', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxTokens', 'Max Tokens', "The maximum number of tokens on each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('maxOverlap', 'Max Overlap', "The maximum number of tokens that can overlap in each segment.", 'number', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('modelName', 'Model Name', "The underlying model name used by the tokenizer. Providing this switches to computing segment sizes in terms of tokens.", 'string', '', '', true, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('customTransformer', 'CustomTransformerDefinition', 'Custom Transformer', "To use a custom transformer on a route level.", 'transformation', [
-        new PropertyMeta('ref', 'Ref', "Set a bean reference of the Transformer", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('className', 'Class Name', "Set a class name of the Transformer", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('scheme', 'Scheme', "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "Set the transformer name under which the transformer gets referenced when specifying the input/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fromType', 'From Type', "Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('toType', 'To Type', "Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be picked up if destination type is 'json:XYZ'. If you specify just 'json', the transformer matches with all of 'json' destination type like 'json:ABC' or 'json:DEF'.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('customTransformer', 'CustomTransformerDefinition', 'Custom Transformer', "References a custom data type transformer implementation from the registry for route-level transformations", 'transformation', [
+        new PropertyMeta('ref', 'Ref', "Reference to a custom Transformer bean in the registry.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('className', 'Class Name', "Fully qualified class name of the custom Transformer implementation.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('scheme', 'Scheme', "Scheme name supported by the transformer. If specified, the transformer will be picked up for all from/to transformation of this scheme. Scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "Name under which the transformer gets referenced when specifying input/output data type on routes. If the name matches a data type scheme, the transformer will be picked up as a fallback.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('fromType', 'From Type', "The source (from) data type name. If you specify 'xml:XYZ', the transformer is picked up when source type matches. If you specify just 'xml', it matches all xml source types.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('toType', 'To Type', "The destination (to) data type name. If you specify 'json:XYZ', the transformer is picked up when destination type matches. If you specify just 'json', it matches all json destination types.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('dataFormatTransformer', 'DataFormatTransformerDefinition', 'Data Format Transformer', "Represents a org.apache.camel.processor.transformer.DataFormatTransformer which leverages org.apache.camel.spi.DataFormat to perform transformation. One of the DataFormat 'ref' or DataFormat 'type' needs to be specified.", 'dataformat,transformation', [
-        new PropertyMeta('scheme', 'Scheme', "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "Set the transformer name under which the transformer gets referenced when specifying the input/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fromType', 'From Type', "Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('toType', 'To Type', "Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be picked up if destination type is 'json:XYZ'. If you specify just 'json', the transformer matches with all of 'json' destination type like 'json:ABC' or 'json:DEF'.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('dataFormatTransformer', 'DataFormatTransformerDefinition', 'Data Format Transformer', "Uses a Camel data format to perform data type transformation between input and output types", 'dataformat,transformation', [
+        new PropertyMeta('scheme', 'Scheme', "Scheme name supported by the transformer. If specified, the transformer will be picked up for all from/to transformation of this scheme. Scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "Name under which the transformer gets referenced when specifying input/output data type on routes. If the name matches a data type scheme, the transformer will be picked up as a fallback.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('fromType', 'From Type', "The source (from) data type name. If you specify 'xml:XYZ', the transformer is picked up when source type matches. If you specify just 'xml', it matches all xml source types.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('toType', 'To Type', "The destination (to) data type name. If you specify 'json:XYZ', the transformer is picked up when destination type matches. If you specify just 'json', it matches all json destination types.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('barcode', 'barcode', "barcode", 'BarcodeDataFormat', '', '', false, false, false, true, '', ''),
@@ -2876,6 +2946,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('groovyJson', 'groovyJson', "groovyJson", 'GroovyJSonDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
@@ -2887,8 +2958,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('jsonApi', 'jsonApi', "jsonApi", 'JsonApiDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('lzf', 'lzf', "lzf", 'LZFDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('mimeMultipart', 'mimeMultipart', "mimeMultipart", 'MimeMultipartDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('ocsf', 'ocsf', "ocsf", 'OcsfDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('parquetAvro', 'parquetAvro', "parquetAvro", 'ParquetAvroDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('pgp', 'pgp', "pgp", 'PGPDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('pqc', 'pqc', "pqc", 'PQCDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('protobuf', 'protobuf', "protobuf", 'ProtobufDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('rss', 'rss', "rss", 'RssDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('smooks', 'smooks', "smooks", 'SmooksDataFormat', '', '', false, false, false, true, '', ''),
@@ -2907,57 +2980,45 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ], [
     ]),
-    new ElementMeta('endpointTransformer', 'EndpointTransformerDefinition', 'Endpoint Transformer', "To use a Camel endpoint to perform transformation on the route level.", 'transformation', [
-        new PropertyMeta('ref', 'Ref', "Set the reference of the Endpoint.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('uri', 'Uri', "Set the URI of the Endpoint.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('scheme', 'Scheme', "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "Set the transformer name under which the transformer gets referenced when specifying the input/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fromType', 'From Type', "Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('toType', 'To Type', "Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be picked up if destination type is 'json:XYZ'. If you specify just 'json', the transformer matches with all of 'json' destination type like 'json:ABC' or 'json:DEF'.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('endpointTransformer', 'EndpointTransformerDefinition', 'Endpoint Transformer', "Uses a Camel endpoint to perform data type transformation by sending the message through the endpoint", 'transformation', [
+        new PropertyMeta('ref', 'Ref', "Reference of the Endpoint used for transformation.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('uri', 'Uri', "URI of the Endpoint used for transformation.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('scheme', 'Scheme', "Scheme name supported by the transformer. If specified, the transformer will be picked up for all from/to transformation of this scheme. Scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "Name under which the transformer gets referenced when specifying input/output data type on routes. If the name matches a data type scheme, the transformer will be picked up as a fallback.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('fromType', 'From Type', "The source (from) data type name. If you specify 'xml:XYZ', the transformer is picked up when source type matches. If you specify just 'xml', it matches all xml source types.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('toType', 'To Type', "The destination (to) data type name. If you specify 'json:XYZ', the transformer is picked up when destination type matches. If you specify just 'json', it matches all json destination types.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('loadTransformer', 'LoadTransformerDefinition', 'Load Transformer', "To load custom transformers from classpath scanning to be used for route level transformations.", 'transformation', [
-        new PropertyMeta('packageScan', 'Package Scan', "Set the classpath location to scan for annotated transformers.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('defaults', 'Defaults', "Enable loading of default transformers.", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('scheme', 'Scheme', "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('name', 'Name', "Set the transformer name under which the transformer gets referenced when specifying the input/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('fromType', 'From Type', "Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('toType', 'To Type', "Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be picked up if destination type is 'json:XYZ'. If you specify just 'json', the transformer matches with all of 'json' destination type like 'json:ABC' or 'json:DEF'.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('loadTransformer', 'LoadTransformerDefinition', 'Load Transformer', "Auto-discovers and loads data type transformers from the classpath via scanning", 'transformation', [
+        new PropertyMeta('packageScan', 'Package Scan', "The classpath location to scan for annotated transformers.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('defaults', 'Defaults', "Whether to enable loading of default transformers.", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('scheme', 'Scheme', "Scheme name supported by the transformer. If specified, the transformer will be picked up for all from/to transformation of this scheme. Scheme matching is performed only when no exactly matched transformer exists.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('name', 'Name', "Name under which the transformer gets referenced when specifying input/output data type on routes. If the name matches a data type scheme, the transformer will be picked up as a fallback.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('fromType', 'From Type', "The source (from) data type name. If you specify 'xml:XYZ', the transformer is picked up when source type matches. If you specify just 'xml', it matches all xml source types.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('toType', 'To Type', "The destination (to) data type name. If you specify 'json:XYZ', the transformer is picked up when destination type matches. If you specify just 'json', it matches all json destination types.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('transformers', 'TransformersDefinition', 'Transformations', "To configure transformers.", 'transformation', [
-        new PropertyMeta('customTransformer', 'customTransformer', "customTransformer", 'CustomTransformerDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('dataFormatTransformer', 'dataFormatTransformer', "dataFormatTransformer", 'DataFormatTransformerDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('endpointTransformer', 'endpointTransformer', "endpointTransformer", 'EndpointTransformerDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('loadTransformer', 'loadTransformer', "loadTransformer", 'LoadTransformerDefinition', '', '', false, false, false, true, '', ''),
+    new ElementMeta('customValidator', 'CustomValidatorDefinition', 'Custom Validator', "References a custom data type validator implementation from the registry for route-level validation", 'validation', [
+        new PropertyMeta('ref', 'Ref', "Reference to a custom Validator bean in the registry.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('className', 'Class Name', "Fully qualified class name of the custom Validator implementation.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "The data type name to validate. If you specify 'xml:XYZ', the validator is picked up when message type is 'xml:XYZ'. If you specify just 'xml', the validator matches all xml message types.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('customValidator', 'CustomValidatorDefinition', 'Custom Validator', "To use a custom validator on the route level.", 'validation', [
-        new PropertyMeta('ref', 'Ref', "Set a bean reference of the Validator", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('className', 'Class Name', "Set a class name of the Validator", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Set the data type name. If you specify 'xml:XYZ', the validator will be picked up if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
+    new ElementMeta('endpointValidator', 'EndpointValidatorDefinition', 'Endpoint Validator', "Uses a Camel endpoint to perform data type validation by sending the message through the endpoint", 'validation', [
+        new PropertyMeta('ref', 'Ref', "Reference of the Endpoint used for validation.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('uri', 'Uri', "URI of the Endpoint used for validation.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "The data type name to validate. If you specify 'xml:XYZ', the validator is picked up when message type is 'xml:XYZ'. If you specify just 'xml', the validator matches all xml message types.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
-    new ElementMeta('endpointValidator', 'EndpointValidatorDefinition', 'Endpoint Validator', "To use a Camel endpoint to perform validation on the route level.", 'validation', [
-        new PropertyMeta('ref', 'Ref', "Set the reference of the Endpoint.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('uri', 'Uri', "Set the URI of the Endpoint.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Set the data type name. If you specify 'xml:XYZ', the validator will be picked up if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
-    ], [
-    ]),
-    new ElementMeta('predicateValidator', 'PredicateValidatorDefinition', 'Predicate Validator', "To use a predicate to perform validation on the route level.", 'validation', [
-        new PropertyMeta('expression', 'Expression', "The predicate to use for validation.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('type', 'Type', "Set the data type name. If you specify 'xml:XYZ', the validator will be picked up if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
-    ], [
-    ]),
-    new ElementMeta('validators', 'ValidatorsDefinition', 'Validations', "To configure validators.", 'validation', [
-        new PropertyMeta('customValidator', 'customValidator', "customValidator", 'CustomValidatorDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('endpointValidator', 'endpointValidator', "endpointValidator", 'EndpointValidatorDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('predicateValidator', 'predicateValidator', "predicateValidator", 'PredicateValidatorDefinition', '', '', false, false, false, true, '', ''),
+    new ElementMeta('predicateValidator', 'PredicateValidatorDefinition', 'Predicate Validator', "Uses a predicate expression to validate message data types at the route level", 'validation', [
+        new PropertyMeta('expression', 'Expression', "The predicate expression to use for validation.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('type', 'Type', "The data type name to validate. If you specify 'xml:XYZ', the validator is picked up when message type is 'xml:XYZ'. If you specify just 'xml', the validator matches all xml message types.", 'string', '', '', false, false, false, false, '', ''),
     ], [
     ]),
 ]
 
 export const SensitiveKeys: string[] = [
+    "basicauthpassword",
     "oauthtokenurl",
     "clientid",
     "sassignature",
@@ -2966,13 +3027,17 @@ export const SensitiveKeys: string[] = [
     "keypassword",
     "accesstoken",
     "accountkey",
+    "knownhosts",
     "proxyauthusername",
     "sslkeypassword",
     "userpassword",
+    "authorization",
     "acltoken",
     "password",
     "accesskey",
+    "api-key",
     "consumersecret",
+    "bearertoken",
     "proxyuser",
     "azureclientid",
     "oauthclientsecret",
@@ -3003,15 +3068,17 @@ export const SensitiveKeys: string[] = [
     "secretkey",
     "webhookverifytoken",
     "privatekeypassword",
+    "hostkey",
     "secret",
-    "login",
     "sourceblobaccesskey",
     "authenticationtoken",
     "apipassword",
     "privatekey",
     "sslkeystorepassword",
+    "knownhostsfile",
     "oauthtoken",
     "sascredential",
+    "subscriptionid",
     "verificationcode",
     "serviceinstanceid",
     "subscribekey",
@@ -3024,6 +3091,7 @@ export const SensitiveKeys: string[] = [
     "clientsecret",
     "authtoken",
     "tokencredential",
+    "storageaccountconnectionstring",
     "blobstoragesharedkeycredential",
     "kerberosauthticket",
     "proxypassword",
@@ -3034,12 +3102,13 @@ export const SensitiveKeys: string[] = [
     "sharedaccesskey",
     "apiusername",
     "api_key",
+    "knownhostsuri",
     "sasljaasconfig",
     "httpproxypassword",
     "realm",
+    "functionkey",
     "user",
     "api_secret",
-    "passcode",
     "consumerkey",
     "username"
 ]
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan-core/model/ExchangeDefinitions.ts b/karavan-vscode/webview/karavan-core/model/ExchangeDefinitions.ts
new file mode 100644
index 00000000..820cb2b9
--- /dev/null
+++ b/karavan-vscode/webview/karavan-core/model/ExchangeDefinitions.ts
@@ -0,0 +1,76 @@
+export const ProcessorNames = {
+    Script: 'Script',
+    SetBody: 'SetBody',
+    SetHeader: 'SetHeader',
+    SetVariable: 'SetVariable',
+    SetProperty: 'SetProperty',
+    To: 'To',
+} as const;
+
+export type ProcessorName = typeof ProcessorNames[keyof typeof ProcessorNames];
+export const NON_NAMES_TYPES: ProcessorName[] = [ProcessorNames.Script, ProcessorNames.SetBody];
+
+export const MarshalTypes = {
+    Json: 'json',
+    Xml: 'xml',
+    Csv: 'csv',
+    Yaml: 'yaml',
+    String: 'string',
+    Groovy: 'groovy'
+} as const;
+
+export type MarshalType = typeof MarshalTypes[keyof typeof MarshalTypes];
+export const NON_MARSHALED_TYPES: MarshalType[] = [MarshalTypes.Groovy, MarshalTypes.String];
+
+export const ExchangeParts = {
+    Body: 'body',
+    Header: 'header',
+    ExchangeProperty: 'exchangeProperty',
+    Variable: 'variable'
+} as const;
+
+export type ExchangePart = typeof ExchangeParts[keyof typeof ExchangeParts];
+export const NON_MARSHALED_PARTS: ExchangePart[] = [ExchangeParts.Header, ExchangeParts.ExchangeProperty];
+
+export interface ExchangeDataUsage {
+    stepId: string;
+    routeId: string;
+    stepName: string;
+    stepDescription: string;
+    stepComponent?: string;
+    fileName?: string;
+    level: number;
+}
+
+export interface Body {
+    type: string;
+    value?: string;
+    usages: ExchangeDataUsage[];
+    marshalType: MarshalType;
+    unmarshalType: MarshalType;
+}
+
+export interface ExchangeData {
+    key: string;
+    type: string;
+    value?: string;
+    usages: ExchangeDataUsage[];
+    marshalType: MarshalType;
+    unmarshalType: MarshalType;
+}
+
+export interface ExchangeMessage {
+    body?: Body;
+    exchangeId: string;
+    exchangePattern: string;
+    exchangeType: string;
+    messageType: string;
+    variables: ExchangeData[];
+    exchangeProperties: ExchangeData[];
+    headers: ExchangeData[];
+}
+
+export interface BeanUsageData {
+    name: string;
+    usages: ExchangeDataUsage[];
+}
diff --git a/karavan-vscode/webview/karavan-core/model/IntegrationDefinition.ts b/karavan-vscode/webview/karavan-core/model/IntegrationDefinition.ts
index cecc5b49..acfb747e 100644
--- a/karavan-vscode/webview/karavan-core/model/IntegrationDefinition.ts
+++ b/karavan-vscode/webview/karavan-core/model/IntegrationDefinition.ts
@@ -14,8 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { v4 as uuidv4 } from 'uuid';
-import { BeanFactoryDefinition } from './CamelDefinition';
+import {v4 as uuidv4} from 'uuid';
+import {BeanFactoryDefinition} from './CamelDefinition';
 
 export class IntegrationFile {
     name: string = '';
@@ -138,7 +138,6 @@ export class Integration {
             i.spec.definition = new Definition({})
             i.spec.types = new Types();
         }
-
         return i;
     }
 }
diff --git a/karavan-vscode/webview/karavan-core/model/TopologyDefinition.ts b/karavan-vscode/webview/karavan-core/model/TopologyDefinition.ts
index f92ca793..da4a7025 100644
--- a/karavan-vscode/webview/karavan-core/model/TopologyDefinition.ts
+++ b/karavan-vscode/webview/karavan-core/model/TopologyDefinition.ts
@@ -93,14 +93,14 @@ export class TopologyIncomingNode {
     type: 'internal' | 'external';
     connectorType: 'component' | 'kamelet';
     routeId: string;
-    routeGroup: string;
+    routeGroup?: string;
     title: string;
     fileName: string;
     from: FromDefinition;
     uniqueUri?: string;
 
 
-    constructor(id: string, type: "internal" | "external", connectorType: "component" | "kamelet", routeId: string, routeGroup: string, title: string, fileName: string, from: FromDefinition, uniqueUri: string) {
+    constructor(id: string, type: "internal" | "external", connectorType: "component" | "kamelet", routeId: string, routeGroup: string | undefined, title: string, fileName: string, from: FromDefinition, uniqueUri: string) {
         this.id = id;
         this.type = type;
         this.connectorType = connectorType;
@@ -122,8 +122,9 @@ export class TopologyRouteNode {
     route: RouteDefinition
     templateId?: string
     templateTitle?: string
+    isTemplated?: boolean
 
-    constructor(id: string, routeId: string, title: string, fileName: string, from: FromDefinition, route: RouteDefinition, templateId?: string, templateTitle?: string) {
+    constructor(id: string, routeId: string, title: string, fileName: string, from: FromDefinition, route: RouteDefinition, templateId?: string, templateTitle?: string, isTemplated?: boolean) {
         this.id = id;
         this.routeId = routeId;
         this.title = title;
@@ -132,6 +133,7 @@ export class TopologyRouteNode {
         this.route = route;
         this.templateId = templateId;
         this.templateTitle = templateTitle;
+        this.isTemplated = isTemplated;
     }
 }
 
@@ -156,14 +158,14 @@ export class TopologyOutgoingNode {
     type: 'internal' | 'external';
     connectorType: 'component' | 'kamelet';
     routeId: string;
-    routeGroup: string;
+    routeGroup?: string;
     title: string;
     fileName: string;
     step: CamelElement;
     uniqueUri?: string;
 
 
-    constructor(id: string, type: "internal" | "external", connectorType: "component" | "kamelet", routeId: string, routeGroup: string, title: string, fileName: string, step: CamelElement, uniqueUri: string) {
+    constructor(id: string, type: "internal" | "external", connectorType: "component" | "kamelet", routeId: string, routeGroup: string | undefined, title: string, fileName: string, step: CamelElement, uniqueUri: string) {
         this.id = id;
         this.type = type;
         this.connectorType = connectorType;
@@ -186,4 +188,26 @@ export class TopologyBeanNode {
         this.name = name;
         this.fileName = fileName;
     }
+}
+
+export interface TopologyStep {
+    id: string;
+    title: string;
+    hasSteps: boolean;
+    parentId?: string;
+    routeId: string;
+    step: CamelElement;
+}
+
+export interface TopologyStepPosition {
+    id: string;
+    x: number;
+    y: number;
+    type: 'step' | 'group'
+    width?: number;
+    height?: number;
+    xWrapper?: number;
+    yWrapper?: number;
+    widthWrapper?: number;
+    heightWrapper?: number;
 }
\ No newline at end of file