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 2023/10/20 00:24:55 UTC

[camel-karavan] 04/04: Core Tests passed for Camel YAML DSL 4.1.0

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

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

commit 86beea5de5ec7bcda62d4037293012697f8ef9fa
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Oct 19 20:24:41 2023 -0400

    Core Tests passed for Camel YAML DSL 4.1.0
---
 karavan-core/src/core/model/CamelDefinition.ts     |   2 +-
 karavan-core/src/core/model/CamelMetadata.ts       | 300 ++++++++++++++++++---
 karavan-core/test/demo.yaml                        |   6 +-
 karavan-core/test/errorHandler1.yaml               |   2 +-
 .../camel/karavan/generator/AbstractGenerator.java |   3 +-
 .../karavan/generator/CamelMetadataGenerator.java  |   3 +-
 6 files changed, 266 insertions(+), 50 deletions(-)

diff --git a/karavan-core/src/core/model/CamelDefinition.ts b/karavan-core/src/core/model/CamelDefinition.ts
index 2c2747ac..cb0de8c7 100644
--- a/karavan-core/src/core/model/CamelDefinition.ts
+++ b/karavan-core/src/core/model/CamelDefinition.ts
@@ -1741,7 +1741,7 @@ export class BeanConstructorsDefinition extends CamelElement {
 }
 
 export class BeanPropertiesDefinition extends CamelElement {
-    stepName?: string = 'beanProperties';
+    stepName?: string = 'properties';
     property?: BeanPropertyDefinition[] = [];
     public constructor(init?: Partial<BeanPropertiesDefinition>) {
         super('BeanPropertiesDefinition');
diff --git a/karavan-core/src/core/model/CamelMetadata.ts b/karavan-core/src/core/model/CamelMetadata.ts
index 5f28b4e9..3bc408fd 100644
--- a/karavan-core/src/core/model/CamelMetadata.ts
+++ b/karavan-core/src/core/model/CamelMetadata.ts
@@ -373,6 +373,48 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         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('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Configure data formats.", '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, '', ''),
+        new PropertyMeta('base64', 'base64', "base64", 'Base64DataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('bindy', 'bindy', "bindy", 'BindyDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('cbor', 'cbor', "cbor", 'CBORDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('crypto', 'crypto', "crypto", 'CryptoDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('csv', 'csv', "csv", 'CsvDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('custom', 'custom', "custom", 'CustomDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('fhirJson', 'fhirJson', "fhirJson", 'FhirJsonDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('fhirXml', 'fhirXml', "fhirXml", 'FhirXmlDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('ical', 'ical', "ical", 'IcalDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('jacksonXml', 'jacksonXml', "jacksonXml", 'JacksonXMLDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('jaxb', 'jaxb', "jaxb", 'JaxbDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('json', 'json', "json", 'JsonDataFormat', '', '', false, false, false, true, '', ''),
+        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('parquetAvro', 'parquetAvro', "parquetAvro", 'ParquetAvroDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('pgp', 'pgp', "pgp", 'PGPDataFormat', '', '', 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('soap', 'soap', "soap", 'SoapDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('swiftMt', 'swiftMt', "swiftMt", 'SwiftMtDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('swiftMx', 'swiftMx', "swiftMx", 'SwiftMxDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('syslog', 'syslog', "syslog", 'SyslogDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('tarFile', 'tarFile', "tarFile", 'TarFileDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('thrift', 'thrift', "thrift", 'ThriftDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('tidyMarkup', 'tidyMarkup', "tidyMarkup", 'TidyMarkupDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('univocityCsv', 'univocityCsv', "univocityCsv", 'UniVocityCsvDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('univocityFixed', 'univocityFixed', "univocityFixed", 'UniVocityFixedDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('univocityTsv', 'univocityTsv', "univocityTsv", 'UniVocityTsvDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('xmlSecurity', 'xmlSecurity', "xmlSecurity", 'XMLSecurityDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('yaml', 'yaml', "yaml", 'YAMLDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('zipDeflater', 'zipDeflater', "zipDeflater", 'ZipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
+    ]),
     new ElementMeta('yaml', 'YAMLDataFormat', 'YAML', "Marshal and unmarshal Java objects to and from YAML.", 'dataformat,transformation,yaml', [
         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, '', ''),
@@ -852,6 +894,11 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('bearerToken', 'BearerTokenDefinition', 'Bearer Token', "Rest security bearer token authentication definition", 'rest,security,configuration', [
+        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 PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('from', 'FromDefinition', 'From', "Act as a message source as input to a route", 'eip,routing', [
         new PropertyMeta('uri', 'Uri', "Sets the URI of the endpoint to use", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -859,6 +906,13 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    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('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('refErrorHandler', 'RefErrorHandlerDefinition', 'Ref Error Handler', "References to an existing or custom error handler.", 'configuration,error', [
         new PropertyMeta('ref', 'Ref', "References to an existing or custom error handler.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -871,6 +925,13 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    new ElementMeta('when', 'WhenDefinition', 'When', "Triggers a route when the expression evaluates to true", 'eip,routing', [
+        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('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('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('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('loop', 'LoopDefinition', 'Loop', "Processes a message multiple times", 'eip,routing', [
         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', ''),
@@ -881,12 +942,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('weighted', 'WeightedLoadBalancerDefinition', 'Weighted', "Uses a weighted load distribution ratio for each server with respect to others.", 'eip,routing', [
-        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('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('resumable', 'ResumableDefinition', 'Resumable', "Resume EIP to support resuming processing from last known offset.", 'eip,routing', [
         new PropertyMeta('resumeStrategy', 'Resume Strategy', "Sets the resume strategy to use", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('loggingLevel', 'Logging Level', "loggingLevel", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
@@ -907,13 +962,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('failover', 'FailoverLoadBalancerDefinition', 'Failover', "In case of failures the exchange will be tried on the next endpoint.", 'eip,routing', [
-        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. his option can be used whether or not roundRobin is enabled or not.", 'string', '', '-1', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('otherwise', 'OtherwiseDefinition', 'Otherwise', "Route to be executed when all other choices evaluate to false", 'eip,routing', [
         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('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -979,9 +1027,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('roundRobin', 'RoundRobinLoadBalancerDefinition', 'Round Robin', "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 PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('setExchangePattern', 'SetExchangePatternDefinition', 'Set Exchange Pattern', "Sets the exchange pattern on the message exchange", 'configuration', [
         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 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', ''),
@@ -1053,6 +1098,31 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    new ElementMeta('get', 'GetDefinition', 'Get', "Rest GET command", 'rest', [
+        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('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('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('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('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
+        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('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", '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('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('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
+    ]),
+    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('enrich', 'EnrichDefinition', 'Enrich', "Enriches a message with data from a secondary resource", 'eip,transformation', [
         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('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'),
@@ -1080,11 +1150,18 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    new ElementMeta('value', 'ValueDefinition', 'Value', "A single value", 'configuration', [
+        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', ''),
+    ]),
     new ElementMeta('kamelet', 'KameletDefinition', 'Kamelet', "To call Kamelets in special situations", 'eip,routing', [
         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('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 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('restBinding', 'RestBindingDefinition', 'Rest Binding', "To configure rest binding", 'rest', [
         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, '', ''),
@@ -1104,6 +1181,16 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    new ElementMeta('responseHeader', 'ResponseHeaderDefinition', 'Response Header', "To specify the rest operation response headers.", 'rest', [
+        new PropertyMeta('name', 'Name', "Name of the parameter. This option is mandatory.", '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.", 'ValueDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('example', 'Example', "Sets the example", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "Description of the parameter.", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('circuitBreaker', 'CircuitBreakerDefinition', 'Circuit Breaker', "Route messages in a fault tolerance way using Circuit Breaker", 'eip,routing', [
         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, '', ''),
@@ -1125,6 +1212,19 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('ref', 'Ref', "Refers to the custom load balancer to lookup from the registry", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('param', 'ParamDefinition', 'Param', "To specify the rest operation parameters.", 'rest', [
+        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 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).", 'ValueDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('examples', 'Examples', "Sets the parameter examples.", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('description', 'Description', "Sets the parameter description.", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('throttle', 'ThrottleDefinition', 'Throttle', "Controls the rate at which messages are passed to the next node in the route", 'eip,routing', [
         new PropertyMeta('expression', 'Expression', "Expression to configure the maximum number of messages to throttle per request", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         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, '', ''),
@@ -1137,6 +1237,27 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('head', 'HeadDefinition', 'Head', "Rest HEAD command", 'rest', [
+        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('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('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('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('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
+        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('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", '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('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('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('jtaTransactionErrorHandler', 'JtaTransactionErrorHandlerDefinition', 'Jta Transaction Error Handler', "JTA based transactional error handler (requires camel-jta).", 'configuration,error', [
         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, '', ''),
         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, '', ''),
@@ -1267,14 +1388,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('securityDefinitions', 'RestSecuritiesDefinition', 'Rest Security Definitions', "To configure rest security definitions.", '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('bearer', 'bearer', "bearer", 'BearerTokenDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('mutualTls', 'mutualTls', "mutualTls", 'MutualTLSDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('oauth2', 'oauth2', "oauth2", 'OAuth2Definition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('openIdConnect', 'openIdConnect', "openIdConnect", 'OpenIdConnectDefinition', '', '', false, false, false, true, '', ''),
-    ]),
     new ElementMeta('pipeline', 'PipelineDefinition', 'Pipeline', "Routes the message to a sequence of processors.", 'eip,routing', [
         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('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -1286,6 +1399,27 @@ export const CamelModelMetadata: ElementMeta[] = [
         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('patch', 'PatchDefinition', 'Patch', "Rest PATCH command", 'rest', [
+        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('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('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('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('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
+        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('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", '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('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('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('validate', 'ValidateDefinition', 'Validate', "Validates a message based on an expression", 'eip,transformation', [
         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', ''),
@@ -1301,6 +1435,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('property', 'PropertyDefinition', 'Property', "A key value pair where the value is a literal value", 'configuration', [
+        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, 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, '', ''),
@@ -1381,6 +1519,14 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('doCatch', 'CatchDefinition', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'error', [
+        new PropertyMeta('exception', 'Exception', "The exception(s) to catch.", 'string', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onCatch is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', ''),
+        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('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('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('onFallback', 'OnFallbackDefinition', 'On Fallback', "Route to be executed when Circuit Breaker EIP executes fallback", 'eip,routing', [
         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 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', ''),
@@ -1388,15 +1534,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('oauth2', 'OAuth2Definition', 'Oauth2', "Rest security OAuth2 definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('authorizationUrl', 'Authorization Url', "The authorization URL to be used for this flow. This SHOULD be in the form of a URL. Required for implicit and access code flows", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('tokenUrl', 'Token Url', "The token URL to be used for this flow. This SHOULD be in the form of a URL. Required for password, application, and access code flows.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('refreshUrl', 'Refresh Url', "The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('flow', 'Flow', "The flow used by the OAuth2 security scheme. Valid values are implicit, password, application or accessCode.", 'string', 'implicit, password, application, clientCredentials, accessCode, authorizationCode', '', false, false, false, false, '', ''),
-        new PropertyMeta('scopes', 'Scopes', "The available scopes for an OAuth2 security scheme", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     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('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -1549,6 +1686,14 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('noErrorHandler', 'noErrorHandler', "noErrorHandler", 'NoErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('springTransactionErrorHandler', 'springTransactionErrorHandler', "springTransactionErrorHandler", 'SpringTransactionErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
     ]),
+    new ElementMeta('templatedRouteBean', 'TemplatedRouteBeanDefinition', 'Templated Route Bean', "A bean as input of a route template (local bean)", 'configuration', [
+        new PropertyMeta('name', 'Name', "Bean name", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('type', 'Type', "What type to use for creating the bean (FQN classname). Can be prefixed with: #class or #type #class or #type then the bean is created via the fully qualified classname, such as #class:com.foo.MyBean", 'string', '', '', true, 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('property', 'Property', "Optional properties to set on the created local bean", 'PropertyDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('properties', 'Properties', "Optional properties to set on the created local 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 ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Configure data formats.", 'dataformat,transformation', [
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
@@ -1591,6 +1736,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipDeflater', 'zipDeflater', "zipDeflater", 'ZipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ]),
+    new ElementMeta('mutualTLS', 'MutualTLSDefinition', 'Mutual TLS', "Rest security mutual TLS authentication definition", 'rest,security,configuration', [
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('split', 'SplitDefinition', 'Split', "Splits a single message into many sub-messages.", 'eip,routing', [
         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. The default value is ,", 'string', '', ',', false, false, false, false, '', ''),
@@ -1617,6 +1766,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 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('onException', 'OnExceptionDefinition', 'On Exception', "Route to be executed when an exception is thrown", 'error', [
         new PropertyMeta('exception', 'Exception', "A set of exceptions to react upon.", 'string', '', '', true, false, true, true, '', ''),
         new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onException is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', ''),
@@ -1697,6 +1850,27 @@ export const CamelModelMetadata: ElementMeta[] = [
         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('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('put', 'PutDefinition', 'Put', "Rest PUT command", 'rest', [
+        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('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('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('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('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
+        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('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", '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('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('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('transform', 'TransformDefinition', 'Transform', "Transforms the message body based on an expression", 'eip,transformation', [
         new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('fromType', 'From Type', "From type used in data type transformation.", 'string', '', '', false, false, false, false, '', ''),
@@ -1778,10 +1952,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         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('sticky', 'StickyLoadBalancerDefinition', 'Sticky', "Sticky load balancing using an expression to calculate a correlation key to perform the sticky load balancing.", 'eip,routing', [
-        new PropertyMeta('correlationExpression', 'Correlation Expression', "The correlation expression to use to calculate the correlation key", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('interceptFrom', 'InterceptFromDefinition', 'Intercept From', "Intercepts incoming messages", 'configuration', [
         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 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', ''),
@@ -1832,20 +2002,42 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('random', 'RandomLoadBalancerDefinition', 'Random', "The destination endpoints are selected by random.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('openIdConnect', 'OpenIdConnectDefinition', 'Open Id Connect', "Rest security OpenID Connect definition", 'rest,security,configuration', [
         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 PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, 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('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('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 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 ElementMeta('delete', 'DeleteDefinition', 'Delete', "Rest DELETE command", 'rest', [
+        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('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('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('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('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
+        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('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", '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('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('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('rollback', 'RollbackDefinition', 'Rollback', "Forces a rollback by stopping routing the message", 'eip,routing', [
         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, '', ''),
@@ -1870,6 +2062,27 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('post', 'PostDefinition', 'Post', "Rest POST command", 'rest', [
+        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('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('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('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('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
+        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('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", '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('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('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
+    ]),
     new ElementMeta('log', 'LogDefinition', 'Log', "Logs the defined message to the logger", 'eip,routing', [
         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, '', ''),
@@ -1990,9 +2203,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 ElementMeta('topic', 'TopicLoadBalancerDefinition', 'Topic', "Topic which sends to all destinations.", 'eip,routing', [
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('basicAuth', 'BasicAuthDefinition', 'Basic Auth', "Rest security basic auth definition", 'rest,security,configuration', [
         new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
@@ -2012,6 +2222,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         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 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 PropertyMeta('value', 'Value', "The value of the parameter.", 'string', '', '', true, false, false, false, '', ''),
+    ]),
     new ElementMeta('setHeader', 'SetHeaderDefinition', 'Set Header', "Sets the value of a message header", 'eip,transformation', [
         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, '', ''),
diff --git a/karavan-core/test/demo.yaml b/karavan-core/test/demo.yaml
index c8162124..f13dbfb8 100644
--- a/karavan-core/test/demo.yaml
+++ b/karavan-core/test/demo.yaml
@@ -8,15 +8,15 @@ spec:
         from:
           uri: kamelet:http-secured-source
           steps:
-            - do-try:
+            - doTry:
                 steps:
                   - to: "log:when-a"
                   - to: "log:when-b"
-                do-catch:
+                doCatch:
                   - exception:
                       - "java.io.FileNotFoundException"
                       - "java.io.IOException"
-                    on-when:
+                    onWhen:
                       expression:
                         simple: "${body.size()} == 1"
                     steps:
diff --git a/karavan-core/test/errorHandler1.yaml b/karavan-core/test/errorHandler1.yaml
index 688aee15..4dd8631f 100644
--- a/karavan-core/test/errorHandler1.yaml
+++ b/karavan-core/test/errorHandler1.yaml
@@ -21,7 +21,7 @@
       id: errorHandler-1
       deadLetterChannel:
         deadLetterUri: log:dlq
-        level: TRACE
         useOriginalMessage: true
+        level: TRACE
         id: deadLetterChannel-1
     id: routeConfiguration-1
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
index 8102e5f3..78f0fd6f 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
@@ -67,6 +67,8 @@ public class AbstractGenerator {
             className = "toD";
         } else if (className.equals("SamplingDefinition")) {
             className = "sample";
+        } else if (className.equals("BeanPropertiesDefinition")) {
+            className = "properties";
         } else if (className.endsWith("Definition")) {
             className = className.substring(0, className.length() - 10);
         } else if (className.endsWith("DataFormat")){
@@ -373,7 +375,6 @@ public class AbstractGenerator {
     protected Map<String, String> getProcessorStepNameMap() {
         String camelYamlDSL = getCamelYamlDSL();
         JsonObject definitions = new JsonObject(camelYamlDSL);
-
         return new LinkedHashMap<>(getProcessorStepNameMapForObject(null, definitions));
     }
 
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java
index 1356f269..d1c9e618 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java
@@ -150,6 +150,7 @@ public final class CamelMetadataGenerator extends AbstractGenerator {
         code.append(String.format("export const %s: ElementMeta[] = [\n", className));
         classProps.entrySet().stream().filter(entry -> {
             if (entry.getValue() == null) {
+//                System.out.println(entry.getKey());
                 return false;
             } else {
                 return true;
@@ -157,7 +158,7 @@ public final class CamelMetadataGenerator extends AbstractGenerator {
         }).forEach(entry -> {
             String name = entry.getKey();
             JsonObject properties = entry.getValue();
-            String stepName = stepNames.get(name);
+            String stepName = getStepNameForClass(name);
             String json = folder.equals("model") ? getMetaModel(stepName) : (folder.equals("language") ? getMetaLanguage(stepName) : getMetaDataFormat(stepName));
             if (json != null) {
                 JsonObject model = new JsonObject(json).getJsonObject("model");