{
  "aggregate" : {
    "model" : {
      "kind" : "model",
      "name" : "aggregate",
      "title" : "Aggregate",
      "description" : "Aggregates many messages into a single message",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.AggregateDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "correlationExpression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Correlation Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.ExpressionSubElementDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "completionPredicate" : {
        "index" : 4,
        "kind" : "expression",
        "displayName" : "Completion Predicate",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.ExpressionSubElementDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "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."
      },
      "completionTimeoutExpression" : {
        "index" : 5,
        "kind" : "expression",
        "displayName" : "Completion Timeout Expression",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.ExpressionSubElementDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 can be used. By default the timeout checker runs every second, you can use the completionTimeoutCheckerInterval option to configure how frequently to run the checker. 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."
      },
      "completionSizeExpression" : {
        "index" : 6,
        "kind" : "expression",
        "displayName" : "Completion Size Expression",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.ExpressionSubElementDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "optimisticLockRetryPolicy" : {
        "index" : 7,
        "kind" : "element",
        "displayName" : "Optimistic Lock Retry Policy",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.OptimisticLockRetryPolicyDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Allows to configure retry settings when using optimistic locking."
      },
      "parallelProcessing" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Parallel Processing",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "optimisticLocking" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Optimistic Locking",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Turns on using optimistic locking, which requires the aggregationRepository being used, is supporting this by implementing org.apache.camel.spi.OptimisticLockingAggregationRepository ."
      },
      "executorService" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "timeoutCheckerExecutorService" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Timeout Checker Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ScheduledExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "aggregateController" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Aggregate Controller",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.processor.aggregate.AggregateController",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a org.apache.camel.processor.aggregate.AggregateController to allow external sources to control this aggregator."
      },
      "aggregationRepository" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "Aggregation Repository",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.spi.AggregationRepository",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The AggregationRepository to use. Sets the custom aggregate repository to use. Will by default use org.apache.camel.processor.aggregate.MemoryAggregationRepository"
      },
      "aggregationStrategy" : {
        "index" : 14,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 Exchange."
      },
      "aggregationStrategyMethodName" : {
        "index" : 15,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using beans as the AggregationStrategy."
      },
      "aggregationStrategyMethodAllowNull" : {
        "index" : 16,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Allow Null",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "completionSize" : {
        "index" : 17,
        "kind" : "attribute",
        "displayName" : "Completion Size",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "completionInterval" : {
        "index" : 18,
        "kind" : "attribute",
        "displayName" : "Completion Interval",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "completionTimeout" : {
        "index" : 19,
        "kind" : "attribute",
        "displayName" : "Completion Timeout",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 can be used. By default the timeout checker runs every second, you can use the completionTimeoutCheckerInterval option to configure how frequently to run the checker. 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."
      },
      "completionTimeoutCheckerInterval" : {
        "index" : 20,
        "kind" : "attribute",
        "displayName" : "Completion Timeout Checker Interval",
        "label" : "advanced",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "1000",
        "description" : "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."
      },
      "completionFromBatchConsumer" : {
        "index" : 21,
        "kind" : "attribute",
        "displayName" : "Completion From Batch Consumer",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "completionOnNewCorrelationGroup" : {
        "index" : 22,
        "kind" : "attribute",
        "displayName" : "Completion On New Correlation Group",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "eagerCheckCompletion" : {
        "index" : 23,
        "kind" : "attribute",
        "displayName" : "Eager Check Completion",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "ignoreInvalidCorrelationKeys" : {
        "index" : 24,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Correlation Keys",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "If a correlation key cannot be successfully evaluated it will be ignored by logging a DEBUG and then just ignore the incoming Exchange."
      },
      "closeCorrelationKeyOnCompletion" : {
        "index" : 25,
        "kind" : "attribute",
        "displayName" : "Close Correlation Key On Completion",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "discardOnCompletionTimeout" : {
        "index" : 26,
        "kind" : "attribute",
        "displayName" : "Discard On Completion Timeout",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Discards the aggregated message on completion timeout. This means on timeout the aggregated message is dropped and not sent out of the aggregator."
      },
      "discardOnAggregationFailure" : {
        "index" : 27,
        "kind" : "attribute",
        "displayName" : "Discard On Aggregation Failure",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "forceCompletionOnStop" : {
        "index" : 28,
        "kind" : "attribute",
        "displayName" : "Force Completion On Stop",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Indicates to complete all current aggregated exchanges when the context is stopped"
      },
      "completeAllOnStop" : {
        "index" : 29,
        "kind" : "attribute",
        "displayName" : "Complete All On Stop",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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 this option is enabled, then the aggregator is waiting to complete all those exchanges before its stopped, when stopping CamelContext or the route using it."
      },
      "outputs" : {
        "index" : 30,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Aggregate",
      "description" : "Aggregates many messages into a single message",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "correlationExpression" : {
          "title" : "Correlation Expression",
          "description" : "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.",
          "type" : "object",
          "$comment" : "expression"
        },
        "completionPredicate" : {
          "title" : "Completion Predicate",
          "description" : "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.",
          "type" : "object",
          "$comment" : "expression"
        },
        "completionTimeoutExpression" : {
          "title" : "Completion Timeout Expression",
          "description" : "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 can be used. By default the timeout checker runs every second, you can use the completionTimeoutCheckerInterval option to configure how frequently to run the checker. 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.",
          "type" : "object",
          "$comment" : "expression"
        },
        "completionSizeExpression" : {
          "title" : "Completion Size Expression",
          "description" : "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.",
          "type" : "object",
          "$comment" : "expression"
        },
        "optimisticLockRetryPolicy" : {
          "title" : "Optimistic Lock Retry Policy",
          "description" : "Allows to configure retry settings when using optimistic locking.",
          "$ref" : "#/definitions/org.apache.camel.model.OptimisticLockRetryPolicyDefinition",
          "$comment" : "class:org.apache.camel.model.OptimisticLockRetryPolicyDefinition"
        },
        "parallelProcessing" : {
          "type" : "boolean",
          "title" : "Parallel Processing",
          "description" : "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."
        },
        "optimisticLocking" : {
          "type" : "boolean",
          "title" : "Optimistic Locking",
          "description" : "Turns on using optimistic locking, which requires the aggregationRepository being used, is supporting this by implementing org.apache.camel.spi.OptimisticLockingAggregationRepository ."
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "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.",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "timeoutCheckerExecutorService" : {
          "type" : "string",
          "title" : "Timeout Checker Executor Service",
          "description" : "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.",
          "$comment" : "class:java.util.concurrent.ScheduledExecutorService"
        },
        "aggregateController" : {
          "type" : "string",
          "title" : "Aggregate Controller",
          "description" : "To use a org.apache.camel.processor.aggregate.AggregateController to allow external sources to control this aggregator.",
          "$comment" : "class:org.apache.camel.processor.aggregate.AggregateController"
        },
        "aggregationRepository" : {
          "type" : "string",
          "title" : "Aggregation Repository",
          "description" : "The AggregationRepository to use. Sets the custom aggregate repository to use. Will by default use org.apache.camel.processor.aggregate.MemoryAggregationRepository",
          "$comment" : "class:org.apache.camel.spi.AggregationRepository"
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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 Exchange.",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using beans as the AggregationStrategy."
        },
        "aggregationStrategyMethodAllowNull" : {
          "type" : "boolean",
          "title" : "Aggregation Strategy Method Allow Null",
          "description" : "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."
        },
        "completionSize" : {
          "type" : "number",
          "title" : "Completion Size",
          "description" : "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."
        },
        "completionInterval" : {
          "type" : "string",
          "title" : "Completion Interval",
          "description" : "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."
        },
        "completionTimeout" : {
          "type" : "string",
          "title" : "Completion Timeout",
          "description" : "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 can be used. By default the timeout checker runs every second, you can use the completionTimeoutCheckerInterval option to configure how frequently to run the checker. 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."
        },
        "completionTimeoutCheckerInterval" : {
          "type" : "string",
          "title" : "Completion Timeout Checker Interval",
          "description" : "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.",
          "default" : "1000"
        },
        "completionFromBatchConsumer" : {
          "type" : "boolean",
          "title" : "Completion From Batch Consumer",
          "description" : "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."
        },
        "completionOnNewCorrelationGroup" : {
          "type" : "boolean",
          "title" : "Completion On New Correlation Group",
          "description" : "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."
        },
        "eagerCheckCompletion" : {
          "type" : "boolean",
          "title" : "Eager Check Completion",
          "description" : "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."
        },
        "ignoreInvalidCorrelationKeys" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Correlation Keys",
          "description" : "If a correlation key cannot be successfully evaluated it will be ignored by logging a DEBUG and then just ignore the incoming Exchange."
        },
        "closeCorrelationKeyOnCompletion" : {
          "type" : "number",
          "title" : "Close Correlation Key On Completion",
          "description" : "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."
        },
        "discardOnCompletionTimeout" : {
          "type" : "boolean",
          "title" : "Discard On Completion Timeout",
          "description" : "Discards the aggregated message on completion timeout. This means on timeout the aggregated message is dropped and not sent out of the aggregator."
        },
        "discardOnAggregationFailure" : {
          "type" : "boolean",
          "title" : "Discard On Aggregation Failure",
          "description" : "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."
        },
        "forceCompletionOnStop" : {
          "type" : "boolean",
          "title" : "Force Completion On Stop",
          "description" : "Indicates to complete all current aggregated exchanges when the context is stopped"
        },
        "completeAllOnStop" : {
          "type" : "boolean",
          "title" : "Complete All On Stop",
          "description" : "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 this option is enabled, then the aggregator is waiting to complete all those exchanges before its stopped, when stopping CamelContext or the route using it."
        }
      },
      "required" : [ "aggregationStrategy" ],
      "$comment" : "steps",
      "definitions" : {
        "org.apache.camel.model.OptimisticLockRetryPolicyDefinition" : {
          "title" : "Optimistic Lock Retry Policy",
          "description" : "To configure optimistic locking",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "exponentialBackOff" : {
              "type" : "boolean",
              "title" : "Exponential Back Off",
              "description" : "Enable exponential backoff"
            },
            "maximumRetries" : {
              "type" : "number",
              "title" : "Maximum Retries",
              "description" : "Sets the maximum number of retries"
            },
            "maximumRetryDelay" : {
              "type" : "string",
              "title" : "Maximum Retry Delay",
              "description" : "Sets the upper value of retry in millis between retries, when using exponential or random backoff",
              "default" : "1000"
            },
            "randomBackOff" : {
              "type" : "boolean",
              "title" : "Random Back Off",
              "description" : "Enables random backoff"
            },
            "retryDelay" : {
              "type" : "string",
              "title" : "Retry Delay",
              "description" : "Sets the delay in millis between retries",
              "default" : "50"
            }
          }
        }
      }
    }
  },
  "bean" : {
    "model" : {
      "kind" : "model",
      "name" : "bean",
      "title" : "Bean",
      "description" : "Calls a Java bean",
      "deprecated" : false,
      "label" : "eip,endpoint",
      "javaType" : "org.apache.camel.model.BeanDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "ref" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to an existing bean to use, which is looked up from the registry"
      },
      "method" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Method",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the method name on the bean to use"
      },
      "beanType" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Bean Type",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the class name (fully qualified) of the bean to use"
      },
      "scope" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Scope",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "java.lang.String",
        "enum" : [ "Singleton", "Request", "Prototype" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "Singleton",
        "description" : "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 multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. So when using prototype scope then this depends on the bean registry implementation."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "ref" : {
          "type" : "string",
          "title" : "Ref",
          "description" : "Sets a reference to an existing bean to use, which is looked up from the registry"
        },
        "method" : {
          "type" : "string",
          "title" : "Method",
          "description" : "Sets the method name on the bean to use"
        },
        "beanType" : {
          "type" : "string",
          "title" : "Bean Type",
          "description" : "Sets the class name (fully qualified) of the bean to use"
        },
        "scope" : {
          "type" : "string",
          "title" : "Scope",
          "description" : "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 multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. So when using prototype scope then this depends on the bean registry implementation.",
          "default" : "Singleton",
          "enum" : [ "Singleton", "Request", "Prototype" ]
        }
      },
      "title" : "Bean",
      "description" : "Calls a Java bean"
    }
  },
  "doCatch" : {
    "model" : {
      "kind" : "model",
      "name" : "doCatch",
      "title" : "Do Catch",
      "description" : "Catches exceptions as part of a try, catch, finally block",
      "deprecated" : false,
      "label" : "error",
      "javaType" : "org.apache.camel.model.CatchDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "exception" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Exception",
        "required" : false,
        "type" : "array",
        "javaType" : "java.util.List<java.lang.String>",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The exception(s) to catch."
      },
      "onWhen" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "On When",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.WhenDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "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."
      },
      "outputs" : {
        "index" : 5,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Do Catch",
      "description" : "Catches exceptions as part of a try, catch, finally block",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "exception" : {
          "type" : "array",
          "title" : "Exception",
          "description" : "The exception(s) to catch.",
          "items" : {
            "type" : "string"
          }
        },
        "onWhen" : {
          "title" : "On When",
          "description" : "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.",
          "$ref" : "#/definitions/org.apache.camel.model.WhenDefinition",
          "$comment" : "class:org.apache.camel.model.WhenDefinition"
        }
      },
      "$comment" : "steps",
      "definitions" : {
        "org.apache.camel.model.WhenDefinition" : {
          "title" : "When",
          "description" : "Triggers a route when the expression evaluates to true",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "description" : {
              "type" : "string",
              "title" : "Description",
              "description" : "Sets the description of this node"
            },
            "disabled" : {
              "type" : "boolean",
              "title" : "Disabled",
              "description" : "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."
            }
          },
          "$comment" : "expression,steps"
        },
        "org.apache.camel.model.language.ExpressionDefinition" : {
          "type" : "object",
          "properties" : { }
        },
        "org.apache.camel.model.language.ConstantExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Constant",
          "description" : "A fixed value set only once during the route startup."
        },
        "org.apache.camel.model.language.CSimpleExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "CSimple",
          "description" : "Evaluate a compiled simple expression."
        },
        "org.apache.camel.model.language.DatasonnetExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "bodyMediaType" : {
              "type" : "string",
              "title" : "Body Media Type",
              "description" : "The String representation of the message's body MediaType"
            },
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "outputMediaType" : {
              "type" : "string",
              "title" : "Output Media Type",
              "description" : "The String representation of the MediaType to output"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "DataSonnet",
          "description" : "To use DataSonnet scripts for message transformations."
        },
        "org.apache.camel.model.language.ExchangePropertyExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "ExchangeProperty",
          "description" : "Gets a property from the Exchange."
        },
        "org.apache.camel.model.language.GroovyExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Groovy",
          "description" : "Evaluates a Groovy script."
        },
        "org.apache.camel.model.language.HeaderExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Header",
          "description" : "Gets a header from the Exchange."
        },
        "org.apache.camel.model.language.Hl7TerserExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "HL7 Terser",
          "description" : "Get the value of a HL7 message field specified by terse location specification syntax."
        },
        "org.apache.camel.model.language.JavaExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "preCompile" : {
              "type" : "boolean",
              "title" : "Pre Compile",
              "description" : "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."
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "singleQuotes" : {
              "type" : "boolean",
              "title" : "Single Quotes",
              "description" : "Whether single quotes can be used as replacement for double quotes. This is convenient when you need to work with strings inside strings."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Java",
          "description" : "Evaluates a Java (Java compiled once at runtime) expression."
        },
        "org.apache.camel.model.language.JoorExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "preCompile" : {
              "type" : "boolean",
              "title" : "Pre Compile",
              "description" : "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."
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "singleQuotes" : {
              "type" : "boolean",
              "title" : "Single Quotes",
              "description" : "Whether single quotes can be used as replacement for double quotes. This is convenient when you need to work with strings inside strings."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "jOOR",
          "description" : "Evaluates a jOOR (Java compiled once at runtime) expression."
        },
        "org.apache.camel.model.language.JqExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "JQ",
          "description" : "Evaluates a JQ expression against a JSON message body."
        },
        "org.apache.camel.model.language.JavaScriptExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "JavaScript",
          "description" : "Evaluates a JavaScript expression."
        },
        "org.apache.camel.model.language.JsonPathExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "allowEasyPredicate" : {
              "type" : "boolean",
              "title" : "Allow Easy Predicate",
              "description" : "Whether to allow using the easy predicate parser to pre-parse predicates."
            },
            "allowSimple" : {
              "type" : "boolean",
              "title" : "Allow Simple",
              "description" : "Whether to allow in inlined Simple exceptions in the JSONPath expression"
            },
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "option" : {
              "type" : "string",
              "title" : "Option",
              "description" : "To configure additional options on JSONPath. Multiple values can be separated by comma.",
              "enum" : [ "DEFAULT_PATH_LEAF_TO_NULL", "ALWAYS_RETURN_LIST", "AS_PATH_LIST", "SUPPRESS_EXCEPTIONS", "REQUIRE_PROPERTIES" ]
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "suppressExceptions" : {
              "type" : "boolean",
              "title" : "Suppress Exceptions",
              "description" : "Whether to suppress exceptions such as PathNotFoundException."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            },
            "unpackArray" : {
              "type" : "boolean",
              "title" : "Unpack Array",
              "description" : "Whether to unpack a single element json-array into an object."
            },
            "writeAsString" : {
              "type" : "boolean",
              "title" : "Write As String",
              "description" : "Whether to write the output of each row/element as a JSON String value instead of a Map/POJO value."
            }
          },
          "title" : "JSONPath",
          "description" : "Evaluates a JSONPath expression against a JSON message body."
        },
        "org.apache.camel.model.language.LanguageExpression" : {
          "title" : "Language",
          "description" : "Evaluates a custom language.",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "language" : {
              "type" : "string",
              "title" : "Language",
              "description" : "The name of the language to use"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "required" : [ "expression", "language" ]
        },
        "org.apache.camel.model.language.MethodCallExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "beanType" : {
              "type" : "string",
              "title" : "Bean Type",
              "description" : "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)."
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "method" : {
              "type" : "string",
              "title" : "Method",
              "description" : "Name of method to call"
            },
            "ref" : {
              "type" : "string",
              "title" : "Ref",
              "description" : "Reference to an existing bean (bean id) to lookup in the registry"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "scope" : {
              "type" : "string",
              "title" : "Scope",
              "description" : "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 multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. So when using prototype scope then this depends on the bean registry implementation.",
              "default" : "Singleton",
              "enum" : [ "Singleton", "Request", "Prototype" ]
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            },
            "validate" : {
              "type" : "boolean",
              "title" : "Validate",
              "description" : "Whether to validate the bean has the configured method."
            }
          },
          "title" : "Bean Method",
          "description" : "Calls a Java bean method."
        },
        "org.apache.camel.model.language.MvelExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "MVEL",
          "description" : "Evaluates a MVEL template."
        },
        "org.apache.camel.model.language.OgnlExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "OGNL",
          "description" : "Evaluates an OGNL expression (Apache Commons OGNL)."
        },
        "org.apache.camel.model.language.PythonExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Python",
          "description" : "Evaluates a Python expression."
        },
        "org.apache.camel.model.language.RefExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Ref",
          "description" : "Uses an existing expression from the registry."
        },
        "org.apache.camel.model.language.SimpleExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Simple",
          "description" : "Evaluates a Camel simple expression."
        },
        "org.apache.camel.model.language.SpELExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "SpEL",
          "description" : "Evaluates a Spring expression (SpEL)."
        },
        "org.apache.camel.model.language.TokenizerExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "endToken" : {
              "type" : "string",
              "title" : "End Token",
              "description" : "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."
            },
            "group" : {
              "type" : "string",
              "title" : "Group",
              "description" : "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."
            },
            "groupDelimiter" : {
              "type" : "string",
              "title" : "Group Delimiter",
              "description" : "Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter."
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "includeTokens" : {
              "type" : "boolean",
              "title" : "Include Tokens",
              "description" : "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"
            },
            "inheritNamespaceTagName" : {
              "type" : "string",
              "title" : "Inherit Namespace Tag Name",
              "description" : "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."
            },
            "regex" : {
              "type" : "boolean",
              "title" : "Regex",
              "description" : "If the token is a regular expression pattern. The default value is false"
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "skipFirst" : {
              "type" : "boolean",
              "title" : "Skip First",
              "description" : "To skip the very first element"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "token" : {
              "type" : "string",
              "title" : "Token",
              "description" : "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."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            },
            "xml" : {
              "type" : "boolean",
              "title" : "Xml",
              "description" : "Whether the input is XML messages. This option must be set to true if working with XML payloads."
            }
          },
          "title" : "Tokenize",
          "description" : "Tokenize text payloads using delimiter patterns."
        },
        "org.apache.camel.model.language.VariableExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Variable",
          "description" : "Gets a variable"
        },
        "org.apache.camel.model.language.WasmExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "module" : {
              "type" : "string",
              "title" : "Module",
              "description" : "Set the module (the distributable, loadable, and executable unit of code in WebAssembly) resource that provides the expression function."
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "Wasm",
          "description" : "Call a wasm (web assembly) function."
        },
        "org.apache.camel.model.language.XPathExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "documentType" : {
              "type" : "string",
              "title" : "Document Type",
              "description" : "Name of class for document type The default value is org.w3c.dom.Document"
            },
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "factoryRef" : {
              "type" : "string",
              "title" : "Factory Ref",
              "description" : "References to a custom XPathFactory to lookup in the registry"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "logNamespaces" : {
              "type" : "boolean",
              "title" : "Log Namespaces",
              "description" : "Whether to log namespaces which can assist during troubleshooting"
            },
            "namespace" : {
              "type" : "array",
              "title" : "Namespace",
              "description" : "Injects the XML Namespaces of prefix - uri mappings",
              "items" : {
                "$ref" : "#/definitions/org.apache.camel.model.PropertyDefinition"
              }
            },
            "objectModel" : {
              "type" : "string",
              "title" : "Object Model",
              "description" : "The XPath object model to use"
            },
            "preCompile" : {
              "type" : "boolean",
              "title" : "Pre Compile",
              "description" : "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."
            },
            "resultQName" : {
              "type" : "string",
              "title" : "Result QName",
              "description" : "Sets the output type supported by XPath.",
              "default" : "NODESET",
              "enum" : [ "NUMBER", "STRING", "BOOLEAN", "NODESET", "NODE" ]
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "saxon" : {
              "type" : "boolean",
              "title" : "Saxon",
              "description" : "Whether to use Saxon."
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "threadSafety" : {
              "type" : "boolean",
              "title" : "Thread Safety",
              "description" : "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 to turn this option on if you are using camel-saxon or Saxon in your application. Saxon has thread-safety issues which can be prevented by turning this option on."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "XPath",
          "description" : "Evaluates an XPath expression against an XML payload."
        },
        "org.apache.camel.model.language.XQueryExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "configurationRef" : {
              "type" : "string",
              "title" : "Configuration Ref",
              "description" : "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."
            },
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "namespace" : {
              "type" : "array",
              "title" : "Namespace",
              "description" : "Injects the XML Namespaces of prefix - uri mappings",
              "items" : {
                "$ref" : "#/definitions/org.apache.camel.model.PropertyDefinition"
              }
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "XQuery",
          "description" : "Evaluates an XQuery expressions against an XML payload."
        },
        "org.apache.camel.model.language.XMLTokenizerExpression" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "expression" : {
              "type" : "string",
              "title" : "Expression",
              "description" : "The expression value in your chosen language syntax"
            },
            "group" : {
              "type" : "number",
              "title" : "Group",
              "description" : "To group N parts together"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "mode" : {
              "type" : "string",
              "title" : "Mode",
              "description" : "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",
              "default" : "i",
              "enum" : [ "i", "w", "u", "t" ]
            },
            "namespace" : {
              "type" : "array",
              "title" : "Namespace",
              "description" : "Injects the XML Namespaces of prefix - uri mappings",
              "items" : {
                "$ref" : "#/definitions/org.apache.camel.model.PropertyDefinition"
              }
            },
            "resultType" : {
              "type" : "string",
              "title" : "Result Type",
              "description" : "Sets the class of the result type (type from output)"
            },
            "source" : {
              "type" : "string",
              "title" : "Source",
              "description" : "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."
            },
            "trim" : {
              "type" : "boolean",
              "title" : "Trim",
              "description" : "Whether to trim the value to remove leading and trailing whitespaces and line breaks"
            }
          },
          "title" : "XML Tokenize",
          "description" : "Tokenize XML payloads."
        },
        "org.apache.camel.model.PropertyDefinition" : {
          "title" : "Property",
          "description" : "A key value pair where the value is a literal value",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "key" : {
              "type" : "string",
              "title" : "Key",
              "description" : "The name of the property"
            },
            "value" : {
              "type" : "string",
              "title" : "Value",
              "description" : "The property value."
            }
          },
          "required" : [ "key", "value" ]
        }
      }
    }
  },
  "choice" : {
    "model" : {
      "kind" : "model",
      "name" : "choice",
      "title" : "Choice",
      "description" : "Route messages based on a series of predicates",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ChoiceDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "when" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "When",
        "required" : false,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.WhenDefinition>",
        "oneOf" : [ "when" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "Sets the when nodes"
      },
      "otherwise" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Otherwise",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.OtherwiseDefinition",
        "oneOf" : [ "otherwise" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the otherwise node"
      },
      "precondition" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Precondition",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      }
    },
    "propertiesSchema" : {
      "title" : "Choice",
      "description" : "Route messages based on a series of predicates",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "precondition" : {
          "type" : "boolean",
          "title" : "Precondition",
          "description" : "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."
        }
      }
    }
  },
  "circuitBreaker" : {
    "model" : {
      "kind" : "model",
      "name" : "circuitBreaker",
      "title" : "Circuit Breaker",
      "description" : "Route messages in a fault tolerance way using Circuit Breaker",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.CircuitBreakerDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "configuration" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Configuration",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Refers to a circuit breaker configuration (such as resillience4j, or microprofile-fault-tolerance) to use for configuring the circuit breaker EIP."
      },
      "resilience4jConfiguration" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Resilience4j Configuration",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.Resilience4jConfigurationDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Configures the circuit breaker to use Resilience4j with the given configuration."
      },
      "faultToleranceConfiguration" : {
        "index" : 5,
        "kind" : "element",
        "displayName" : "Fault Tolerance Configuration",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.FaultToleranceConfigurationDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration."
      },
      "onFallback" : {
        "index" : 6,
        "kind" : "element",
        "displayName" : "On Fallback",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.OnFallbackDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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() ."
      },
      "outputs" : {
        "index" : 7,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Circuit Breaker",
      "description" : "Route messages in a fault tolerance way using Circuit Breaker",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "configuration" : {
          "type" : "string",
          "title" : "Configuration",
          "description" : "Refers to a circuit breaker configuration (such as resillience4j, or microprofile-fault-tolerance) to use for configuring the circuit breaker EIP."
        },
        "resilience4jConfiguration" : {
          "title" : "Resilience4j Configuration",
          "description" : "Configures the circuit breaker to use Resilience4j with the given configuration.",
          "$ref" : "#/definitions/org.apache.camel.model.Resilience4jConfigurationDefinition",
          "$comment" : "class:org.apache.camel.model.Resilience4jConfigurationDefinition"
        },
        "faultToleranceConfiguration" : {
          "title" : "Fault Tolerance Configuration",
          "description" : "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration.",
          "$ref" : "#/definitions/org.apache.camel.model.FaultToleranceConfigurationDefinition",
          "$comment" : "class:org.apache.camel.model.FaultToleranceConfigurationDefinition"
        },
        "onFallback" : {
          "title" : "On Fallback",
          "description" : "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() .",
          "$ref" : "#/definitions/org.apache.camel.model.OnFallbackDefinition",
          "$comment" : "class:org.apache.camel.model.OnFallbackDefinition"
        }
      },
      "$comment" : "steps",
      "definitions" : {
        "org.apache.camel.model.FaultToleranceConfigurationDefinition" : {
          "title" : "Fault Tolerance Configuration",
          "description" : "MicroProfile Fault Tolerance Circuit Breaker EIP configuration",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "bulkheadEnabled" : {
              "type" : "boolean",
              "title" : "Bulkhead Enabled",
              "description" : "Whether bulkhead is enabled or not on the circuit breaker. Default is false."
            },
            "bulkheadExecutorService" : {
              "type" : "string",
              "title" : "Bulkhead Executor Service",
              "description" : "References to a custom thread pool to use when bulkhead is enabled."
            },
            "bulkheadMaxConcurrentCalls" : {
              "type" : "number",
              "title" : "Bulkhead Max Concurrent Calls",
              "description" : "Configures the max amount of concurrent calls the bulkhead will support.",
              "default" : "10"
            },
            "bulkheadWaitingTaskQueue" : {
              "type" : "number",
              "title" : "Bulkhead Waiting Task Queue",
              "description" : "Configures the task queue size for holding waiting tasks to be processed by the bulkhead.",
              "default" : "10"
            },
            "circuitBreaker" : {
              "type" : "string",
              "title" : "Circuit Breaker",
              "description" : "Refers to an existing io.smallrye.faulttolerance.core.circuit.breaker.CircuitBreaker instance to lookup and use from the registry. When using this, then any other circuit breaker options are not in use."
            },
            "delay" : {
              "type" : "string",
              "title" : "Delay",
              "description" : "Control how long the circuit breaker stays open. The default is 5 seconds.",
              "default" : "5000"
            },
            "failureRatio" : {
              "type" : "number",
              "title" : "Failure Ratio",
              "description" : "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.",
              "default" : "50"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "The id of this node"
            },
            "requestVolumeThreshold" : {
              "type" : "number",
              "title" : "Request Volume Threshold",
              "description" : "Controls the size of the rolling window used when the circuit breaker is closed",
              "default" : "20"
            },
            "successThreshold" : {
              "type" : "number",
              "title" : "Success Threshold",
              "description" : "Controls the number of trial calls which are allowed when the circuit breaker is half-open",
              "default" : "1"
            },
            "timeoutDuration" : {
              "type" : "string",
              "title" : "Timeout Duration",
              "description" : "Configures the thread execution timeout. Default value is 1 second.",
              "default" : "1000"
            },
            "timeoutEnabled" : {
              "type" : "boolean",
              "title" : "Timeout Enabled",
              "description" : "Whether timeout is enabled or not on the circuit breaker. Default is false."
            },
            "timeoutPoolSize" : {
              "type" : "number",
              "title" : "Timeout Pool Size",
              "description" : "Configures the pool size of the thread pool when timeout is enabled. Default value is 10.",
              "default" : "10"
            },
            "timeoutScheduledExecutorService" : {
              "type" : "string",
              "title" : "Timeout Scheduled Executor Service",
              "description" : "References to a custom thread pool to use when timeout is enabled"
            }
          }
        },
        "org.apache.camel.model.OnFallbackDefinition" : {
          "title" : "On Fallback",
          "description" : "Route to be executed when Circuit Breaker EIP executes fallback",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "description" : {
              "type" : "string",
              "title" : "Description",
              "description" : "Sets the description of this node"
            },
            "disabled" : {
              "type" : "boolean",
              "title" : "Disabled",
              "description" : "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."
            },
            "fallbackViaNetwork" : {
              "type" : "boolean",
              "title" : "Fallback Via Network",
              "description" : "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."
            }
          },
          "$comment" : "steps"
        },
        "org.apache.camel.model.Resilience4jConfigurationDefinition" : {
          "title" : "Resilience4j Configuration",
          "description" : "Resilience4j Circuit Breaker EIP configuration",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "automaticTransitionFromOpenToHalfOpenEnabled" : {
              "type" : "boolean",
              "title" : "Automatic Transition From Open To Half Open Enabled",
              "description" : "Enables automatic transition from OPEN to HALF_OPEN state once the waitDurationInOpenState has passed."
            },
            "bulkheadEnabled" : {
              "type" : "boolean",
              "title" : "Bulkhead Enabled",
              "description" : "Whether bulkhead is enabled or not on the circuit breaker. Default is false."
            },
            "bulkheadMaxConcurrentCalls" : {
              "type" : "number",
              "title" : "Bulkhead Max Concurrent Calls",
              "description" : "Configures the max amount of concurrent calls the bulkhead will support.",
              "default" : "25"
            },
            "bulkheadMaxWaitDuration" : {
              "type" : "number",
              "title" : "Bulkhead Max Wait Duration",
              "description" : "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 recommended. Blocking an event-loop thread will most likely have a negative effect on application throughput.",
              "default" : "0"
            },
            "circuitBreaker" : {
              "type" : "string",
              "title" : "Circuit Breaker",
              "description" : "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."
            },
            "config" : {
              "type" : "string",
              "title" : "Config",
              "description" : "Refers to an existing io.github.resilience4j.circuitbreaker.CircuitBreakerConfig instance to lookup and use from the registry."
            },
            "failureRateThreshold" : {
              "type" : "number",
              "title" : "Failure Rate Threshold",
              "description" : "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.",
              "default" : "50"
            },
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "The id of this node"
            },
            "minimumNumberOfCalls" : {
              "type" : "number",
              "title" : "Minimum Number Of Calls",
              "description" : "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 is 100",
              "default" : "100"
            },
            "permittedNumberOfCallsInHalfOpenState" : {
              "type" : "number",
              "title" : "Permitted Number Of Calls In Half Open State",
              "description" : "Configures the number of permitted calls when the CircuitBreaker is half open. The size must be greater than 0. Default size is 10.",
              "default" : "10"
            },
            "slidingWindowSize" : {
              "type" : "number",
              "title" : "Sliding Window Size",
              "description" : "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 are recorded and aggregated. The slidingWindowSize must be greater than 0. The minimumNumberOfCalls must be greater than 0. If the slidingWindowType is COUNT_BASED, the minimumNumberOfCalls cannot be greater than slidingWindowSize . If the slidingWindowType is TIME_BASED, you can pick whatever you want. Default slidingWindowSize is 100.",
              "default" : "100"
            },
            "slidingWindowType" : {
              "type" : "string",
              "title" : "Sliding Window Type",
              "description" : "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 COUNT_BASED.",
              "default" : "COUNT_BASED",
              "enum" : [ "TIME_BASED", "COUNT_BASED" ]
            },
            "slowCallDurationThreshold" : {
              "type" : "number",
              "title" : "Slow Call Duration Threshold",
              "description" : "Configures the duration threshold (seconds) above which calls are considered as slow and increase the slow calls percentage. Default value is 60 seconds.",
              "default" : "60"
            },
            "slowCallRateThreshold" : {
              "type" : "number",
              "title" : "Slow Call Rate Threshold",
              "description" : "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 all recorded calls must be slower than slowCallDurationThreshold.",
              "default" : "100"
            },
            "throwExceptionWhenHalfOpenOrOpenState" : {
              "type" : "boolean",
              "title" : "Throw Exception When Half Open Or Open State",
              "description" : "Whether to throw io.github.resilience4j.circuitbreaker.CallNotPermittedException when the call is rejected due circuit breaker is half open or open."
            },
            "timeoutCancelRunningFuture" : {
              "type" : "boolean",
              "title" : "Timeout Cancel Running Future",
              "description" : "Configures whether cancel is called on the running future. Defaults to true."
            },
            "timeoutDuration" : {
              "type" : "number",
              "title" : "Timeout Duration",
              "description" : "Configures the thread execution timeout. Default value is 1 second.",
              "default" : "1000"
            },
            "timeoutEnabled" : {
              "type" : "boolean",
              "title" : "Timeout Enabled",
              "description" : "Whether timeout is enabled or not on the circuit breaker. Default is false."
            },
            "timeoutExecutorService" : {
              "type" : "string",
              "title" : "Timeout Executor Service",
              "description" : "References to a custom thread pool to use when timeout is enabled (uses ForkJoinPool#commonPool() by default)"
            },
            "waitDurationInOpenState" : {
              "type" : "number",
              "title" : "Wait Duration In Open State",
              "description" : "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.",
              "default" : "60"
            },
            "writableStackTraceEnabled" : {
              "type" : "boolean",
              "title" : "Writable Stack Trace Enabled",
              "description" : "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)."
            }
          }
        }
      }
    }
  },
  "claimCheck" : {
    "model" : {
      "kind" : "model",
      "name" : "claimCheck",
      "title" : "Claim Check",
      "description" : "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.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ClaimCheckDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "operation" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Operation",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.model.ClaimCheckOperation",
        "enum" : [ "Get", "GetAndRemove", "Set", "Push", "Pop" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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)."
      },
      "key" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Key",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a specific key for claim check id (for dynamic keys use simple language syntax as the key)."
      },
      "filter" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Filter",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 (pattern ends with a and the name starts with the pattern), returns true regular expression match, returns true otherwise returns false You can specify multiple rules separated by comma. For example, the following includes the message body and all headers starting with foo: body,header:foo. The syntax supports the following prefixes which can be used to specify include,exclude, or remove - to include (which is the default mode) - - to exclude (exclude takes precedence over include) -- - to remove (remove takes precedence) For example to exclude a header name foo, and remove all headers starting with bar, -header:foo,--headers:bar Note you cannot have both include and exclude header:pattern at the same time."
      },
      "aggregationStrategy" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "aggregationStrategyMethodName" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
      }
    },
    "propertiesSchema" : {
      "title" : "Claim Check",
      "description" : "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.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "operation" : {
          "type" : "string",
          "title" : "Operation",
          "description" : "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).",
          "enum" : [ "Get", "GetAndRemove", "Set", "Push", "Pop" ]
        },
        "key" : {
          "type" : "string",
          "title" : "Key",
          "description" : "To use a specific key for claim check id (for dynamic keys use simple language syntax as the key)."
        },
        "filter" : {
          "type" : "string",
          "title" : "Filter",
          "description" : "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 (pattern ends with a and the name starts with the pattern), returns true regular expression match, returns true otherwise returns false You can specify multiple rules separated by comma. For example, the following includes the message body and all headers starting with foo: body,header:foo. The syntax supports the following prefixes which can be used to specify include,exclude, or remove - to include (which is the default mode) - - to exclude (exclude takes precedence over include) -- - to remove (remove takes precedence) For example to exclude a header name foo, and remove all headers starting with bar, -header:foo,--headers:bar Note you cannot have both include and exclude header:pattern at the same time."
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
        }
      }
    }
  },
  "convertBodyTo" : {
    "model" : {
      "kind" : "model",
      "name" : "convertBodyTo",
      "title" : "Convert Body To",
      "description" : "Converts the message body to another type",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.ConvertBodyDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "type" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Type",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The java type to convert to"
      },
      "mandatory" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Mandatory",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "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."
      },
      "charset" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Charset",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a specific charset when converting"
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "type" : {
          "type" : "string",
          "title" : "Type",
          "description" : "The java type to convert to"
        },
        "mandatory" : {
          "type" : "boolean",
          "title" : "Mandatory",
          "description" : "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."
        },
        "charset" : {
          "type" : "string",
          "title" : "Charset",
          "description" : "To use a specific charset when converting"
        }
      },
      "title" : "Convert Body To",
      "description" : "Converts the message body to another type"
    }
  },
  "convertHeaderTo" : {
    "model" : {
      "kind" : "model",
      "name" : "convertHeaderTo",
      "title" : "Convert Header To",
      "description" : "Converts the message header to another type",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.ConvertHeaderDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "type" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Type",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The java type to convert to"
      },
      "toName" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "To Name",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "mandatory" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Mandatory",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "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."
      },
      "charset" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Charset",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a specific charset when converting"
      }
    },
    "propertiesSchema" : {
      "title" : "Convert Header To",
      "description" : "Converts the message header to another type",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "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."
        },
        "type" : {
          "type" : "string",
          "title" : "Type",
          "description" : "The java type to convert to"
        },
        "toName" : {
          "type" : "string",
          "title" : "To Name",
          "description" : "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."
        },
        "mandatory" : {
          "type" : "boolean",
          "title" : "Mandatory",
          "description" : "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."
        },
        "charset" : {
          "type" : "string",
          "title" : "Charset",
          "description" : "To use a specific charset when converting"
        }
      },
      "required" : [ "name", "type" ]
    }
  },
  "convertVariableTo" : {
    "model" : {
      "kind" : "model",
      "name" : "convertVariableTo",
      "title" : "Convert Variable To",
      "description" : "Converts the variable to another type",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.ConvertVariableDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "type" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Type",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The java type to convert to"
      },
      "toName" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "To Name",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "mandatory" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Mandatory",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "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."
      },
      "charset" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Charset",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a specific charset when converting"
      }
    },
    "propertiesSchema" : {
      "title" : "Convert Variable To",
      "description" : "Converts the variable to another type",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "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."
        },
        "type" : {
          "type" : "string",
          "title" : "Type",
          "description" : "The java type to convert to"
        },
        "toName" : {
          "type" : "string",
          "title" : "To Name",
          "description" : "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."
        },
        "mandatory" : {
          "type" : "boolean",
          "title" : "Mandatory",
          "description" : "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."
        },
        "charset" : {
          "type" : "string",
          "title" : "Charset",
          "description" : "To use a specific charset when converting"
        }
      },
      "required" : [ "name", "type" ]
    }
  },
  "delay" : {
    "model" : {
      "kind" : "model",
      "name" : "delay",
      "title" : "Delay",
      "description" : "Delays processing for a specified length of time",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.DelayDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to define how long time to wait (in millis)"
      },
      "asyncDelayed" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Async Delayed",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Enables asynchronous delay which means the thread will not block while delaying."
      },
      "callerRunsWhenRejected" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Caller Runs When Rejected",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true"
      },
      "executorService" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a custom Thread Pool if asyncDelay has been enabled."
      }
    },
    "propertiesSchema" : {
      "title" : "Delay",
      "description" : "Delays processing for a specified length of time",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "asyncDelayed" : {
          "type" : "boolean",
          "title" : "Async Delayed",
          "description" : "Enables asynchronous delay which means the thread will not block while delaying."
        },
        "callerRunsWhenRejected" : {
          "type" : "boolean",
          "title" : "Caller Runs When Rejected",
          "description" : "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true"
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "To use a custom Thread Pool if asyncDelay has been enabled.",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        }
      },
      "$comment" : "expression"
    }
  },
  "dynamicRouter" : {
    "model" : {
      "kind" : "model",
      "name" : "dynamicRouter",
      "title" : "Dynamic Router",
      "description" : "Route messages based on dynamic rules",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.DynamicRouterDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "uriDelimiter" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Uri Delimiter",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : ",",
        "description" : "Sets the uri delimiter to use"
      },
      "ignoreInvalidEndpoints" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoints",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
      },
      "cacheSize" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      }
    },
    "propertiesSchema" : {
      "title" : "Dynamic Router",
      "description" : "Route messages based on dynamic rules",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "uriDelimiter" : {
          "type" : "string",
          "title" : "Uri Delimiter",
          "description" : "Sets the uri delimiter to use",
          "default" : ","
        },
        "ignoreInvalidEndpoints" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoints",
          "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        }
      },
      "$comment" : "expression"
    }
  },
  "enrich" : {
    "model" : {
      "kind" : "model",
      "name" : "enrich",
      "title" : "Enrich",
      "description" : "Enriches a message with data from a secondary resource",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.EnrichDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression that computes the endpoint uri to use as the resource endpoint to enrich from"
      },
      "variableSend" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Variable Send",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "variableReceive" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "aggregationStrategy" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "aggregationStrategyMethodName" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
      },
      "aggregationStrategyMethodAllowNull" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Allow Null",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "aggregateOnException" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Aggregate On Exception",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "shareUnitOfWork" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Share Unit Of Work",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "cacheSize" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      },
      "ignoreInvalidEndpoint" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoint",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
      },
      "allowOptimisedComponents" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "Allow Optimised Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to allow components to optimise enricher if they are org.apache.camel.spi.SendDynamicAware ."
      },
      "autoStartComponents" : {
        "index" : 14,
        "kind" : "attribute",
        "displayName" : "Auto Start Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to auto startup components when enricher is starting up."
      }
    },
    "propertiesSchema" : {
      "title" : "Enrich",
      "description" : "Enriches a message with data from a secondary resource",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "variableSend" : {
          "type" : "string",
          "title" : "Variable Send",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
        },
        "aggregationStrategyMethodAllowNull" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Allow Null",
          "description" : "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."
        },
        "aggregateOnException" : {
          "type" : "boolean",
          "title" : "Aggregate On Exception",
          "description" : "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."
        },
        "shareUnitOfWork" : {
          "type" : "boolean",
          "title" : "Share Unit Of Work",
          "description" : "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."
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        },
        "ignoreInvalidEndpoint" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoint",
          "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
        },
        "allowOptimisedComponents" : {
          "type" : "boolean",
          "title" : "Allow Optimised Components",
          "description" : "Whether to allow components to optimise enricher if they are org.apache.camel.spi.SendDynamicAware ."
        },
        "autoStartComponents" : {
          "type" : "boolean",
          "title" : "Auto Start Components",
          "description" : "Whether to auto startup components when enricher is starting up."
        }
      },
      "$comment" : "expression"
    }
  },
  "filter" : {
    "model" : {
      "kind" : "model",
      "name" : "filter",
      "title" : "Filter",
      "description" : "Filter out messages based using a predicate",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.FilterDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "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."
      },
      "statusPropertyName" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Status Property Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 5,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Filter",
      "description" : "Filter out messages based using a predicate",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "statusPropertyName" : {
          "type" : "string",
          "title" : "Status Property Name",
          "description" : "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."
        }
      },
      "$comment" : "expression,steps"
    }
  },
  "doFinally" : {
    "model" : {
      "kind" : "model",
      "name" : "doFinally",
      "title" : "Do Finally",
      "description" : "Path traversed when a try, catch, finally block exits",
      "deprecated" : false,
      "label" : "error",
      "javaType" : "org.apache.camel.model.FinallyDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Do Finally",
      "description" : "Path traversed when a try, catch, finally block exits",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "idempotentConsumer" : {
    "model" : {
      "kind" : "model",
      "name" : "idempotentConsumer",
      "title" : "Idempotent Consumer",
      "description" : "Filters out duplicate messages",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.IdempotentConsumerDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "idempotentRepository" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Idempotent Repository",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.spi.IdempotentRepository",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the reference name of the message id repository"
      },
      "eager" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Eager",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Sets whether to eagerly add the key to the idempotent repository or wait until the exchange is complete. Eager is default enabled."
      },
      "completionEager" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Completion Eager",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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 complete eager, then the idempotent consumer will complete when the exchange is done being routed. So if the exchange is continued routed after the block ends, then whatever happens there also affect the state. For example if the exchange failed due to an exception, then the state of the idempotent consumer will be a rollback."
      },
      "skipDuplicate" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Skip Duplicate",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "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."
      },
      "removeOnFailure" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Remove On Failure",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Sets whether to remove or keep the key on failure. The default behavior is to remove the key on failure."
      },
      "outputs" : {
        "index" : 9,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Idempotent Consumer",
      "description" : "Filters out duplicate messages",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "idempotentRepository" : {
          "type" : "string",
          "title" : "Idempotent Repository",
          "description" : "Sets the reference name of the message id repository",
          "$comment" : "class:org.apache.camel.spi.IdempotentRepository"
        },
        "eager" : {
          "type" : "boolean",
          "title" : "Eager",
          "description" : "Sets whether to eagerly add the key to the idempotent repository or wait until the exchange is complete. Eager is default enabled."
        },
        "completionEager" : {
          "type" : "boolean",
          "title" : "Completion Eager",
          "description" : "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 complete eager, then the idempotent consumer will complete when the exchange is done being routed. So if the exchange is continued routed after the block ends, then whatever happens there also affect the state. For example if the exchange failed due to an exception, then the state of the idempotent consumer will be a rollback."
        },
        "skipDuplicate" : {
          "type" : "boolean",
          "title" : "Skip Duplicate",
          "description" : "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."
        },
        "removeOnFailure" : {
          "type" : "boolean",
          "title" : "Remove On Failure",
          "description" : "Sets whether to remove or keep the key on failure. The default behavior is to remove the key on failure."
        }
      },
      "required" : [ "idempotentRepository" ],
      "$comment" : "expression,steps"
    }
  },
  "loadBalance" : {
    "model" : {
      "kind" : "model",
      "name" : "loadBalance",
      "title" : "Load Balance",
      "description" : "Balances message processing among a number of nodes",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.LoadBalanceDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "loadBalancerType" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Load Balancer Type",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.LoadBalancerDefinition",
        "oneOf" : [ "customLoadBalancer", "failover", "random", "roundRobin", "sticky", "topic", "weighted" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The load balancer to be used"
      },
      "outputs" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      },
      "inheritErrorHandler" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Inherit Error Handler",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Sets whether or not to inherit the configured error handler. The default value is true. You can use this to disable using the inherited error handler for a given DSL such as a load balancer where you want to use a custom error handler strategy."
      }
    },
    "propertiesSchema" : {
      "title" : "Load Balance",
      "description" : "Balances message processing among a number of nodes",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "inheritErrorHandler" : {
          "type" : "boolean",
          "title" : "Inherit Error Handler",
          "description" : "Sets whether or not to inherit the configured error handler. The default value is true. You can use this to disable using the inherited error handler for a given DSL such as a load balancer where you want to use a custom error handler strategy."
        }
      },
      "$comment" : "loadbalance,steps"
    }
  },
  "log" : {
    "model" : {
      "kind" : "model",
      "name" : "log",
      "title" : "Log",
      "description" : "Logs the defined message to the logger",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.LogDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "message" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Message",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the log message (uses simple language)"
      },
      "loggingLevel" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Logging Level",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.LoggingLevel",
        "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "INFO",
        "description" : "Sets the logging level. The default value is INFO"
      },
      "logName" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Log Name",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the name of the logger"
      },
      "marker" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Marker",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use slf4j marker"
      },
      "logger" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Logger",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.slf4j.Logger",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To refer to a custom logger instance to lookup from the registry."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "message" : {
          "type" : "string",
          "title" : "Message",
          "description" : "Sets the log message (uses simple language)"
        },
        "loggingLevel" : {
          "type" : "string",
          "title" : "Logging Level",
          "description" : "Sets the logging level. The default value is INFO",
          "default" : "INFO",
          "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ]
        },
        "logName" : {
          "type" : "string",
          "title" : "Log Name",
          "description" : "Sets the name of the logger"
        },
        "marker" : {
          "type" : "string",
          "title" : "Marker",
          "description" : "To use slf4j marker"
        },
        "logger" : {
          "type" : "string",
          "title" : "Logger",
          "description" : "To refer to a custom logger instance to lookup from the registry.",
          "$comment" : "class:org.slf4j.Logger"
        }
      },
      "title" : "Log",
      "description" : "Logs the defined message to the logger"
    }
  },
  "loop" : {
    "model" : {
      "kind" : "model",
      "name" : "loop",
      "title" : "Loop",
      "description" : "Processes a message multiple times",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.LoopDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "copy" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Copy",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "doWhile" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Do While",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Enables the while loop that loops until the predicate evaluates to false or null."
      },
      "breakOnShutdown" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Break On Shutdown",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "If the breakOnShutdown attribute is true, then the loop will not iterate until it reaches the end when Camel is shut down."
      },
      "outputs" : {
        "index" : 7,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Loop",
      "description" : "Processes a message multiple times",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "copy" : {
          "type" : "boolean",
          "title" : "Copy",
          "description" : "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."
        },
        "doWhile" : {
          "type" : "boolean",
          "title" : "Do While",
          "description" : "Enables the while loop that loops until the predicate evaluates to false or null."
        },
        "breakOnShutdown" : {
          "type" : "boolean",
          "title" : "Break On Shutdown",
          "description" : "If the breakOnShutdown attribute is true, then the loop will not iterate until it reaches the end when Camel is shut down."
        }
      },
      "$comment" : "expression,steps"
    }
  },
  "marshal" : {
    "model" : {
      "kind" : "model",
      "name" : "marshal",
      "title" : "Marshal",
      "description" : "Marshals data into a specified format for transmission over a transport or component",
      "deprecated" : false,
      "label" : "dataformat,transformation",
      "javaType" : "org.apache.camel.model.MarshalDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "dataFormatType" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Data Format Type",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.DataFormatDefinition",
        "oneOf" : [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "fhirJson", "fhirXml", "flatpack", "grok", "gzipDeflater", "hl7", "ical", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "parquetAvro", "pgp", "protobuf", "rss", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "tidyMarkup", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The data format to be used"
      },
      "variableSend" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Variable Send",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "variableReceive" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      }
    },
    "propertiesSchema" : {
      "title" : "Marshal",
      "description" : "Marshals data into a specified format for transmission over a transport or component",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "variableSend" : {
          "type" : "string",
          "title" : "Variable Send",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        }
      },
      "$comment" : "dataformat"
    }
  },
  "multicast" : {
    "model" : {
      "kind" : "model",
      "name" : "multicast",
      "title" : "Multicast",
      "description" : "Routes the same message to multiple paths either sequentially or in parallel.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.MulticastDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "aggregationStrategy" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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"
      },
      "aggregationStrategyMethodName" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
      },
      "aggregationStrategyMethodAllowNull" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Allow Null",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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"
      },
      "parallelAggregate" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Parallel Aggregate",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "parallelProcessing" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Parallel Processing",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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. However, if you want to use the original thread that called the multicast, then make sure to enable the synchronous option as well."
      },
      "synchronous" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Synchronous",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "streaming" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Streaming",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "stopOnException" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Stop On Exception",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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, which is used by the routing engine. The default behavior is to not stop but continue processing till the end"
      },
      "timeout" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Timeout",
        "label" : "advanced",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "0",
        "description" : "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. Notice if you provide a TimeoutAwareAggregationStrategy then 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 continue to run. So use this option with a bit of care."
      },
      "executorService" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "onPrepare" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "On Prepare",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.Processor",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "shareUnitOfWork" : {
        "index" : 14,
        "kind" : "attribute",
        "displayName" : "Share Unit Of Work",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 15,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Multicast",
      "description" : "Routes the same message to multiple paths either sequentially or in parallel.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
        },
        "aggregationStrategyMethodAllowNull" : {
          "type" : "boolean",
          "title" : "Aggregation Strategy Method Allow Null",
          "description" : "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"
        },
        "parallelAggregate" : {
          "type" : "boolean",
          "title" : "Parallel Aggregate",
          "description" : "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."
        },
        "parallelProcessing" : {
          "type" : "boolean",
          "title" : "Parallel Processing",
          "description" : "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. However, if you want to use the original thread that called the multicast, then make sure to enable the synchronous option as well."
        },
        "synchronous" : {
          "type" : "boolean",
          "title" : "Synchronous",
          "description" : "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."
        },
        "streaming" : {
          "type" : "boolean",
          "title" : "Streaming",
          "description" : "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."
        },
        "stopOnException" : {
          "type" : "boolean",
          "title" : "Stop On Exception",
          "description" : "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, which is used by the routing engine. The default behavior is to not stop but continue processing till the end"
        },
        "timeout" : {
          "type" : "string",
          "title" : "Timeout",
          "description" : "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. Notice if you provide a TimeoutAwareAggregationStrategy then 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 continue to run. So use this option with a bit of care.",
          "default" : "0"
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "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.",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "onPrepare" : {
          "type" : "string",
          "title" : "On Prepare",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.Processor"
        },
        "shareUnitOfWork" : {
          "type" : "boolean",
          "title" : "Share Unit Of Work",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "onFallback" : {
    "model" : {
      "kind" : "model",
      "name" : "onFallback",
      "title" : "On Fallback",
      "description" : "Route to be executed when Circuit Breaker EIP executes fallback",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.OnFallbackDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "fallbackViaNetwork" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Fallback Via Network",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "On Fallback",
      "description" : "Route to be executed when Circuit Breaker EIP executes fallback",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "fallbackViaNetwork" : {
          "type" : "boolean",
          "title" : "Fallback Via Network",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "otherwise" : {
    "model" : {
      "kind" : "model",
      "name" : "otherwise",
      "title" : "Otherwise",
      "description" : "Route to be executed when all other choices evaluate to false",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.OtherwiseDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Otherwise",
      "description" : "Route to be executed when all other choices evaluate to false",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "pausable" : {
    "model" : {
      "kind" : "model",
      "name" : "pausable",
      "title" : "Pausable",
      "description" : "Pausable EIP to support resuming processing from last known offset.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.PausableDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "consumerListener" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Consumer Listener",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.resume.ConsumerListener",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the consumer listener to use"
      },
      "untilCheck" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Until Check",
        "required" : true,
        "type" : "object",
        "javaType" : "java.util.function.Predicate",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 called at any specific point."
      }
    },
    "propertiesSchema" : {
      "title" : "Pausable",
      "description" : "Pausable EIP to support resuming processing from last known offset.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "consumerListener" : {
          "type" : "string",
          "title" : "Consumer Listener",
          "description" : "Sets the consumer listener to use",
          "$comment" : "class:org.apache.camel.resume.ConsumerListener"
        },
        "untilCheck" : {
          "type" : "string",
          "title" : "Until Check",
          "description" : "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 called at any specific point.",
          "$comment" : "class:java.util.function.Predicate"
        }
      },
      "required" : [ "consumerListener", "untilCheck" ]
    }
  },
  "pipeline" : {
    "model" : {
      "kind" : "model",
      "name" : "pipeline",
      "title" : "Pipeline",
      "description" : "Routes the message to a sequence of processors.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.PipelineDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Pipeline",
      "description" : "Routes the message to a sequence of processors.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "policy" : {
    "model" : {
      "kind" : "model",
      "name" : "policy",
      "title" : "Policy",
      "description" : "Defines a policy the route will use",
      "deprecated" : false,
      "label" : "configuration",
      "javaType" : "org.apache.camel.model.PolicyDefinition",
      "supportLevel" : "Stable",
      "abstract" : true,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "ref" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Ref",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to use for lookup the policy in the registry."
      }
    },
    "propertiesSchema" : {
      "title" : "Policy",
      "description" : "Defines a policy the route will use",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "ref" : {
          "type" : "string",
          "title" : "Ref",
          "description" : "Sets a reference to use for lookup the policy in the registry."
        }
      },
      "required" : [ "ref" ],
      "$comment" : "steps"
    }
  },
  "pollEnrich" : {
    "model" : {
      "kind" : "model",
      "name" : "pollEnrich",
      "title" : "Poll Enrich",
      "description" : "Enriches messages with data polled from a secondary resource",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.PollEnrichDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression that computes the endpoint uri to use as the resource endpoint to enrich from"
      },
      "variableReceive" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "aggregationStrategy" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "aggregationStrategyMethodName" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
      },
      "aggregationStrategyMethodAllowNull" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Allow Null",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "aggregateOnException" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Aggregate On Exception",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "timeout" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Timeout",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "-1",
        "description" : "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 available yet. positive value - Attempts to receive a message exchange, waiting up to the given timeout to expire if a message is not yet available. Returns null if timed out The default value is -1 and therefore the method could block indefinitely, and therefore its recommended to use a timeout value"
      },
      "cacheSize" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 producers and endpoints; they are regarded as prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      },
      "ignoreInvalidEndpoint" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoint",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
      },
      "autoStartComponents" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Auto Start Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to auto startup components when poll enricher is starting up."
      }
    },
    "propertiesSchema" : {
      "title" : "Poll Enrich",
      "description" : "Enriches messages with data polled from a secondary resource",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
        },
        "aggregationStrategyMethodAllowNull" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Allow Null",
          "description" : "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."
        },
        "aggregateOnException" : {
          "type" : "boolean",
          "title" : "Aggregate On Exception",
          "description" : "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."
        },
        "timeout" : {
          "type" : "string",
          "title" : "Timeout",
          "description" : "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 available yet. positive value - Attempts to receive a message exchange, waiting up to the given timeout to expire if a message is not yet available. Returns null if timed out The default value is -1 and therefore the method could block indefinitely, and therefore its recommended to use a timeout value",
          "default" : "-1"
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 producers and endpoints; they are regarded as prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        },
        "ignoreInvalidEndpoint" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoint",
          "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
        },
        "autoStartComponents" : {
          "type" : "boolean",
          "title" : "Auto Start Components",
          "description" : "Whether to auto startup components when poll enricher is starting up."
        }
      },
      "$comment" : "expression"
    }
  },
  "process" : {
    "model" : {
      "kind" : "model",
      "name" : "process",
      "title" : "Process",
      "description" : "Calls a Camel processor",
      "deprecated" : false,
      "label" : "eip,endpoint",
      "javaType" : "org.apache.camel.model.ProcessDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "ref" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Ref",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Reference to the Processor to lookup in the registry to use. Can also be used for creating new beans by their class name by prefixing with #class, eg #class:com.foo.MyClassType. And it is also possible to refer to singleton beans by their type in the registry by prefixing with #type: syntax, eg #type:com.foo.MyClassType"
      }
    },
    "propertiesSchema" : {
      "title" : "Process",
      "description" : "Calls a Camel processor",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "ref" : {
          "type" : "string",
          "title" : "Ref",
          "description" : "Reference to the Processor to lookup in the registry to use. Can also be used for creating new beans by their class name by prefixing with #class, eg #class:com.foo.MyClassType. And it is also possible to refer to singleton beans by their type in the registry by prefixing with #type: syntax, eg #type:com.foo.MyClassType"
        }
      },
      "required" : [ "ref" ]
    }
  },
  "recipientList" : {
    "model" : {
      "kind" : "model",
      "name" : "recipientList",
      "title" : "Recipient List",
      "description" : "Route messages to a number of dynamically specified recipients",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.RecipientListDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "delimiter" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Delimiter",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : ",",
        "description" : "Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value false. The default value is ,"
      },
      "aggregationStrategy" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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"
      },
      "aggregationStrategyMethodName" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
      },
      "aggregationStrategyMethodAllowNull" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Allow Null",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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"
      },
      "parallelAggregate" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Parallel Aggregate",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "parallelProcessing" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Parallel Processing",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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. However, if you want to use the original thread that called the recipient list, then make sure to enable the synchronous option as well."
      },
      "synchronous" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Synchronous",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "timeout" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Timeout",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "0",
        "description" : "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. Notice if you provide a TimeoutAwareAggregationStrategy then 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 continue to run. So use this option with a bit of care."
      },
      "executorService" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "stopOnException" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "Stop On Exception",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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 pipeline, which is used by the routing engine. The default behavior is to not stop but continue processing till the end"
      },
      "ignoreInvalidEndpoints" : {
        "index" : 14,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoints",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
      },
      "streaming" : {
        "index" : 15,
        "kind" : "attribute",
        "displayName" : "Streaming",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "onPrepare" : {
        "index" : 16,
        "kind" : "attribute",
        "displayName" : "On Prepare",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.Processor",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "cacheSize" : {
        "index" : 17,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      },
      "shareUnitOfWork" : {
        "index" : 18,
        "kind" : "attribute",
        "displayName" : "Share Unit Of Work",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      }
    },
    "propertiesSchema" : {
      "title" : "Recipient List",
      "description" : "Route messages to a number of dynamically specified recipients",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "delimiter" : {
          "type" : "string",
          "title" : "Delimiter",
          "description" : "Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value false. The default value is ,",
          "default" : ","
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
        },
        "aggregationStrategyMethodAllowNull" : {
          "type" : "boolean",
          "title" : "Aggregation Strategy Method Allow Null",
          "description" : "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"
        },
        "parallelAggregate" : {
          "type" : "boolean",
          "title" : "Parallel Aggregate",
          "description" : "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."
        },
        "parallelProcessing" : {
          "type" : "boolean",
          "title" : "Parallel Processing",
          "description" : "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. However, if you want to use the original thread that called the recipient list, then make sure to enable the synchronous option as well."
        },
        "synchronous" : {
          "type" : "boolean",
          "title" : "Synchronous",
          "description" : "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."
        },
        "timeout" : {
          "type" : "string",
          "title" : "Timeout",
          "description" : "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. Notice if you provide a TimeoutAwareAggregationStrategy then 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 continue to run. So use this option with a bit of care.",
          "default" : "0"
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "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.",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "stopOnException" : {
          "type" : "boolean",
          "title" : "Stop On Exception",
          "description" : "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 pipeline, which is used by the routing engine. The default behavior is to not stop but continue processing till the end"
        },
        "ignoreInvalidEndpoints" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoints",
          "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
        },
        "streaming" : {
          "type" : "boolean",
          "title" : "Streaming",
          "description" : "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."
        },
        "onPrepare" : {
          "type" : "string",
          "title" : "On Prepare",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.Processor"
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        },
        "shareUnitOfWork" : {
          "type" : "boolean",
          "title" : "Share Unit Of Work",
          "description" : "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."
        }
      },
      "$comment" : "expression"
    }
  },
  "removeHeader" : {
    "model" : {
      "kind" : "model",
      "name" : "removeHeader",
      "title" : "Remove Header",
      "description" : "Removes a named header from the message",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.RemoveHeaderDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Name of header to remove"
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "Name of header to remove"
        }
      },
      "title" : "Remove Header",
      "description" : "Removes a named header from the message"
    }
  },
  "removeHeaders" : {
    "model" : {
      "kind" : "model",
      "name" : "removeHeaders",
      "title" : "Remove Headers",
      "description" : "Removes message headers whose name matches a specified pattern",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.RemoveHeadersDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "pattern" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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)."
      },
      "excludePattern" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Exclude Pattern",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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)."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "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)."
        },
        "excludePattern" : {
          "type" : "string",
          "title" : "Exclude Pattern",
          "description" : "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)."
        }
      },
      "title" : "Remove Headers",
      "description" : "Removes message headers whose name matches a specified pattern"
    }
  },
  "removeProperties" : {
    "model" : {
      "kind" : "model",
      "name" : "removeProperties",
      "title" : "Remove Properties",
      "description" : "Removes message exchange properties whose name matches a specified pattern",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.RemovePropertiesDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "pattern" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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)."
      },
      "excludePattern" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Exclude Pattern",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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)."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "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)."
        },
        "excludePattern" : {
          "type" : "string",
          "title" : "Exclude Pattern",
          "description" : "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)."
        }
      },
      "title" : "Remove Properties",
      "description" : "Removes message exchange properties whose name matches a specified pattern"
    }
  },
  "removeProperty" : {
    "model" : {
      "kind" : "model",
      "name" : "removeProperty",
      "title" : "Remove Property",
      "description" : "Removes a named property from the message exchange",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.RemovePropertyDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Name of property to remove."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "Name of property to remove."
        }
      },
      "title" : "Remove Property",
      "description" : "Removes a named property from the message exchange"
    }
  },
  "removeVariable" : {
    "model" : {
      "kind" : "model",
      "name" : "removeVariable",
      "title" : "Remove Variable",
      "description" : "Removes a named variable",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.RemoveVariableDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Name of variable to remove."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "Name of variable to remove."
        }
      },
      "title" : "Remove Variable",
      "description" : "Removes a named variable"
    }
  },
  "resequence" : {
    "model" : {
      "kind" : "model",
      "name" : "resequence",
      "title" : "Resequence",
      "description" : "Resequences (re-order) messages based on an expression",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ResequenceDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to use for re-ordering the messages, such as a header with a sequence number"
      },
      "resequencerConfig" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Resequencer Config",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.config.ResequencerConfig",
        "oneOf" : [ "batchConfig", "streamConfig" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To configure the resequencer in using either batch or stream configuration. Will by default use batch configuration."
      },
      "outputs" : {
        "index" : 5,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Resequence",
      "description" : "Resequences (re-order) messages based on an expression",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "expression,steps"
    }
  },
  "resumable" : {
    "model" : {
      "kind" : "model",
      "name" : "resumable",
      "title" : "Resumable",
      "description" : "Resume EIP to support resuming processing from last known offset.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ResumableDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "resumeStrategy" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Resume Strategy",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.resume.ResumeStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the resume strategy to use"
      },
      "loggingLevel" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Logging Level",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.LoggingLevel",
        "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "ERROR"
      },
      "intermittent" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Intermittent",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Sets whether the offsets will be intermittently present or whether they must be present in every exchange"
      }
    },
    "propertiesSchema" : {
      "title" : "Resumable",
      "description" : "Resume EIP to support resuming processing from last known offset.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "resumeStrategy" : {
          "type" : "string",
          "title" : "Resume Strategy",
          "description" : "Sets the resume strategy to use",
          "$comment" : "class:org.apache.camel.resume.ResumeStrategy"
        },
        "loggingLevel" : {
          "type" : "string",
          "title" : "Logging Level",
          "default" : "ERROR",
          "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ]
        },
        "intermittent" : {
          "type" : "boolean",
          "title" : "Intermittent",
          "description" : "Sets whether the offsets will be intermittently present or whether they must be present in every exchange"
        }
      },
      "required" : [ "resumeStrategy" ]
    }
  },
  "rollback" : {
    "model" : {
      "kind" : "model",
      "name" : "rollback",
      "title" : "Rollback",
      "description" : "Forces a rollback by stopping routing the message",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.RollbackDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "message" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Message",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Message to use in rollback exception"
      },
      "markRollbackOnly" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Mark Rollback Only",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Mark the transaction for rollback only (cannot be overruled to commit)"
      },
      "markRollbackOnlyLast" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Mark Rollback Only Last",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Mark only last sub transaction for rollback only. When using sub transactions (if the transaction manager support this)"
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "message" : {
          "type" : "string",
          "title" : "Message",
          "description" : "Message to use in rollback exception"
        },
        "markRollbackOnly" : {
          "type" : "boolean",
          "title" : "Mark Rollback Only",
          "description" : "Mark the transaction for rollback only (cannot be overruled to commit)"
        },
        "markRollbackOnlyLast" : {
          "type" : "boolean",
          "title" : "Mark Rollback Only Last",
          "description" : "Mark only last sub transaction for rollback only. When using sub transactions (if the transaction manager support this)"
        }
      },
      "title" : "Rollback",
      "description" : "Forces a rollback by stopping routing the message"
    }
  },
  "routingSlip" : {
    "model" : {
      "kind" : "model",
      "name" : "routingSlip",
      "title" : "Routing Slip",
      "description" : "Routes a message through a series of steps that are pre-determined (the slip)",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.RoutingSlipDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "uriDelimiter" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Uri Delimiter",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : ",",
        "description" : "Sets the uri delimiter to use"
      },
      "ignoreInvalidEndpoints" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoints",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
      },
      "cacheSize" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "uriDelimiter" : {
          "type" : "string",
          "title" : "Uri Delimiter",
          "description" : "Sets the uri delimiter to use",
          "default" : ","
        },
        "ignoreInvalidEndpoints" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoints",
          "description" : "Ignore the invalidate endpoint exception when try to create a producer with that endpoint"
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        }
      },
      "title" : "Routing Slip",
      "description" : "Routes a message through a series of steps that are pre-determined (the slip)",
      "$comment" : "expression"
    }
  },
  "saga" : {
    "model" : {
      "kind" : "model",
      "name" : "saga",
      "title" : "Saga",
      "description" : "Enables Sagas on the route",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.SagaDefinition",
      "supportLevel" : "Stable",
      "abstract" : true,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "sagaService" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Saga Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.saga.CamelSagaService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Refers to the id to lookup in the registry for the specific CamelSagaService to use."
      },
      "propagation" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Propagation",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.model.SagaPropagation",
        "enum" : [ "REQUIRED", "REQUIRES_NEW", "MANDATORY", "SUPPORTS", "NOT_SUPPORTED", "NEVER" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "REQUIRED",
        "description" : "Set the Saga propagation mode (REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER)."
      },
      "completionMode" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Completion Mode",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.model.SagaCompletionMode",
        "enum" : [ "AUTO", "MANUAL" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "AUTO",
        "description" : "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."
      },
      "timeout" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Timeout",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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)."
      },
      "compensation" : {
        "index" : 7,
        "kind" : "element",
        "displayName" : "Compensation",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.SagaActionUriDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "completion" : {
        "index" : 8,
        "kind" : "element",
        "displayName" : "Completion",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.SagaActionUriDefinition",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "option" : {
        "index" : 9,
        "kind" : "element",
        "displayName" : "Option",
        "label" : "advanced",
        "required" : false,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.PropertyExpressionDefinition>",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 10,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Saga",
      "description" : "Enables Sagas on the route",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "sagaService" : {
          "type" : "string",
          "title" : "Saga Service",
          "description" : "Refers to the id to lookup in the registry for the specific CamelSagaService to use.",
          "$comment" : "class:org.apache.camel.saga.CamelSagaService"
        },
        "propagation" : {
          "type" : "string",
          "title" : "Propagation",
          "description" : "Set the Saga propagation mode (REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER).",
          "default" : "REQUIRED",
          "enum" : [ "REQUIRED", "REQUIRES_NEW", "MANDATORY", "SUPPORTS", "NOT_SUPPORTED", "NEVER" ]
        },
        "completionMode" : {
          "type" : "string",
          "title" : "Completion Mode",
          "description" : "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.",
          "default" : "AUTO",
          "enum" : [ "AUTO", "MANUAL" ]
        },
        "timeout" : {
          "type" : "string",
          "title" : "Timeout",
          "description" : "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)."
        },
        "compensation" : {
          "title" : "Compensation",
          "description" : "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.",
          "$ref" : "#/definitions/org.apache.camel.model.SagaActionUriDefinition",
          "$comment" : "class:org.apache.camel.model.SagaActionUriDefinition"
        },
        "completion" : {
          "title" : "Completion",
          "description" : "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.",
          "$ref" : "#/definitions/org.apache.camel.model.SagaActionUriDefinition",
          "$comment" : "class:org.apache.camel.model.SagaActionUriDefinition"
        },
        "option" : {
          "type" : "array",
          "title" : "Option",
          "description" : "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.",
          "items" : {
            "$ref" : "#/definitions/org.apache.camel.model.PropertyExpressionDefinition"
          }
        }
      },
      "$comment" : "steps",
      "definitions" : {
        "org.apache.camel.model.SagaActionUriDefinition" : {
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "description" : {
              "type" : "string"
            },
            "disabled" : {
              "type" : "boolean"
            },
            "id" : {
              "type" : "string"
            },
            "parameters" : {
              "type" : "object"
            },
            "uri" : {
              "type" : "string"
            }
          }
        },
        "org.apache.camel.model.PropertyExpressionDefinition" : {
          "title" : "Property Expression",
          "description" : "A key value pair where the value is an expression.",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "key" : {
              "type" : "string",
              "title" : "Key",
              "description" : "Property key"
            },
            "expression" : {
              "title" : "Expression",
              "type" : "object",
              "$comment" : "expression"
            }
          },
          "required" : [ "key" ],
          "$comment" : "expression"
        },
        "org.apache.camel.model.language.ExpressionDefinition" : {
          "type" : "object",
          "properties" : { }
        }
      }
    }
  },
  "sample" : {
    "model" : {
      "kind" : "model",
      "name" : "sample",
      "title" : "Sample",
      "description" : "Extract a sample of the messages passing through a route",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.SamplingDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "samplePeriod" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Sample Period",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "1000",
        "description" : "Sets the sample period during which only a single Exchange will pass through."
      },
      "messageFrequency" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Message Frequency",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Long",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the sample message count which only a single Exchange will pass through after this many received."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "samplePeriod" : {
          "type" : "string",
          "title" : "Sample Period",
          "description" : "Sets the sample period during which only a single Exchange will pass through.",
          "default" : "1000"
        },
        "messageFrequency" : {
          "type" : "number",
          "title" : "Message Frequency",
          "description" : "Sets the sample message count which only a single Exchange will pass through after this many received."
        }
      },
      "title" : "Sample",
      "description" : "Extract a sample of the messages passing through a route"
    }
  },
  "script" : {
    "model" : {
      "kind" : "model",
      "name" : "script",
      "title" : "Script",
      "description" : "Executes a script from a language which does not change the message body.",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.ScriptDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to return the transformed message body (the new message body to use)"
      }
    },
    "propertiesSchema" : {
      "title" : "Script",
      "description" : "Executes a script from a language which does not change the message body.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "expression"
    }
  },
  "setBody" : {
    "model" : {
      "kind" : "model",
      "name" : "setBody",
      "title" : "Set Body",
      "description" : "Sets the contents of the message body",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.SetBodyDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression that returns the new body to use"
      }
    },
    "propertiesSchema" : {
      "title" : "Set Body",
      "description" : "Sets the contents of the message body",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "expression"
    }
  },
  "setExchangePattern" : {
    "model" : {
      "kind" : "model",
      "name" : "setExchangePattern",
      "title" : "Set Exchange Pattern",
      "description" : "Sets the exchange pattern on the message exchange",
      "deprecated" : false,
      "label" : "configuration",
      "javaType" : "org.apache.camel.model.SetExchangePatternDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "pattern" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "required" : true,
        "type" : "enum",
        "javaType" : "org.apache.camel.ExchangePattern",
        "enum" : [ "InOnly", "InOut" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the new exchange pattern of the Exchange to be used from this point forward"
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "Sets the new exchange pattern of the Exchange to be used from this point forward",
          "enum" : [ "InOnly", "InOut" ]
        }
      },
      "title" : "Set Exchange Pattern",
      "description" : "Sets the exchange pattern on the message exchange"
    }
  },
  "setHeader" : {
    "model" : {
      "kind" : "model",
      "name" : "setHeader",
      "title" : "Set Header",
      "description" : "Sets the value of a message header",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.SetHeaderDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 4,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to return the value of the header"
      }
    },
    "propertiesSchema" : {
      "title" : "Set Header",
      "description" : "Sets the value of a message header",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "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."
        }
      },
      "required" : [ "name" ],
      "$comment" : "expression"
    }
  },
  "setHeaders" : {
    "model" : {
      "kind" : "model",
      "name" : "setHeaders",
      "title" : "Set Headers",
      "description" : "Allows setting multiple headers on the message at the same time.",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.SetHeadersDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      }
    },
    "propertiesSchema" : {
      "title" : "Set Headers",
      "description" : "Allows setting multiple headers on the message at the same time.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "headers" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/org.apache.camel.model.SetHeaderDefinition"
          },
          "title" : "Headers",
          "description" : "Headers to set"
        }
      },
      "definitions" : {
        "org.apache.camel.model.SetHeaderDefinition" : {
          "title" : "Set Header",
          "description" : "Sets the value of a message header",
          "type" : "object",
          "additionalProperties" : false,
          "properties" : {
            "id" : {
              "type" : "string",
              "title" : "Id",
              "description" : "Sets the id of this node"
            },
            "description" : {
              "type" : "string",
              "title" : "Description",
              "description" : "Sets the description of this node"
            },
            "disabled" : {
              "type" : "boolean",
              "title" : "Disabled",
              "description" : "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."
            },
            "name" : {
              "type" : "string",
              "title" : "Name",
              "description" : "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."
            }
          },
          "required" : [ "name" ],
          "$comment" : "expression"
        }
      }
    }
  },
  "setProperty" : {
    "model" : {
      "kind" : "model",
      "name" : "setProperty",
      "title" : "Set Property",
      "description" : "Sets a named property on the message exchange",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.SetPropertyDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 4,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to return the value of the message exchange property"
      }
    },
    "propertiesSchema" : {
      "title" : "Set Property",
      "description" : "Sets a named property on the message exchange",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "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."
        }
      },
      "required" : [ "name" ],
      "$comment" : "expression"
    }
  },
  "setVariable" : {
    "model" : {
      "kind" : "model",
      "name" : "setVariable",
      "title" : "Set Variable",
      "description" : "Sets the value of a variable",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.SetVariableDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 4,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to return the value of the variable"
      }
    },
    "propertiesSchema" : {
      "title" : "Set Variable",
      "description" : "Sets the value of a variable",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "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."
        }
      },
      "required" : [ "name" ],
      "$comment" : "expression"
    }
  },
  "sort" : {
    "model" : {
      "kind" : "model",
      "name" : "sort",
      "title" : "Sort",
      "description" : "Sorts the contents of the message",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.SortDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Optional expression to sort by something else than the message body"
      },
      "comparator" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Comparator",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.Comparator",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the comparator to use for sorting"
      }
    },
    "propertiesSchema" : {
      "title" : "Sort",
      "description" : "Sorts the contents of the message",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "comparator" : {
          "type" : "string",
          "title" : "Comparator",
          "description" : "Sets the comparator to use for sorting",
          "$comment" : "class:java.util.Comparator"
        }
      },
      "$comment" : "expression"
    }
  },
  "split" : {
    "model" : {
      "kind" : "model",
      "name" : "split",
      "title" : "Split",
      "description" : "Splits a single message into many sub-messages.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.SplitDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression of how to split the message body, such as as-is, using a tokenizer, or using a xpath."
      },
      "delimiter" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Delimiter",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : ",",
        "description" : "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."
      },
      "aggregationStrategy" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.AggregationStrategy",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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"
      },
      "aggregationStrategyMethodName" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Name",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
      },
      "aggregationStrategyMethodAllowNull" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Aggregation Strategy Method Allow Null",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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"
      },
      "parallelAggregate" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Parallel Aggregate",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "parallelProcessing" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Parallel Processing",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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 want to use the original thread that called the splitter, then make sure to enable the synchronous option as well."
      },
      "synchronous" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Synchronous",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "streaming" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Streaming",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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 message one by one. This requires to keep all the split messages in memory and therefore requires more memory. The total size is provided in the org.apache.camel.Exchange#SPLIT_SIZE header. The streaming mode also affects the aggregation behavior. If enabled then Camel will process replies out-of-order, e.g. in the order they come back. If disabled, Camel will process replies in the same order as the messages was split."
      },
      "stopOnException" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Stop On Exception",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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, which is used by the routing engine. The default behavior is to not stop but continue processing till the end"
      },
      "timeout" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "Timeout",
        "label" : "advanced",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "0",
        "description" : "Sets a total timeout specified in millis, when using parallel processing. If the Splitter hasn't been able to split and process all the sub messages within the given timeframe, then the timeout triggers and the Splitter breaks out and continues. Notice if you provide a TimeoutAwareAggregationStrategy then 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 continue to run. So use this option with a bit of care."
      },
      "executorService" : {
        "index" : 14,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "onPrepare" : {
        "index" : 15,
        "kind" : "attribute",
        "displayName" : "On Prepare",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.Processor",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "shareUnitOfWork" : {
        "index" : 16,
        "kind" : "attribute",
        "displayName" : "Share Unit Of Work",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 17,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Split",
      "description" : "Splits a single message into many sub-messages.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "delimiter" : {
          "type" : "string",
          "title" : "Delimiter",
          "description" : "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.",
          "default" : ","
        },
        "aggregationStrategy" : {
          "type" : "string",
          "title" : "Aggregation Strategy",
          "description" : "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",
          "$comment" : "class:org.apache.camel.AggregationStrategy"
        },
        "aggregationStrategyMethodName" : {
          "type" : "string",
          "title" : "Aggregation Strategy Method Name",
          "description" : "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy."
        },
        "aggregationStrategyMethodAllowNull" : {
          "type" : "boolean",
          "title" : "Aggregation Strategy Method Allow Null",
          "description" : "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"
        },
        "parallelAggregate" : {
          "type" : "boolean",
          "title" : "Parallel Aggregate",
          "description" : "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."
        },
        "parallelProcessing" : {
          "type" : "boolean",
          "title" : "Parallel Processing",
          "description" : "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 want to use the original thread that called the splitter, then make sure to enable the synchronous option as well."
        },
        "synchronous" : {
          "type" : "boolean",
          "title" : "Synchronous",
          "description" : "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."
        },
        "streaming" : {
          "type" : "boolean",
          "title" : "Streaming",
          "description" : "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 message one by one. This requires to keep all the split messages in memory and therefore requires more memory. The total size is provided in the org.apache.camel.Exchange#SPLIT_SIZE header. The streaming mode also affects the aggregation behavior. If enabled then Camel will process replies out-of-order, e.g. in the order they come back. If disabled, Camel will process replies in the same order as the messages was split."
        },
        "stopOnException" : {
          "type" : "boolean",
          "title" : "Stop On Exception",
          "description" : "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, which is used by the routing engine. The default behavior is to not stop but continue processing till the end"
        },
        "timeout" : {
          "type" : "string",
          "title" : "Timeout",
          "description" : "Sets a total timeout specified in millis, when using parallel processing. If the Splitter hasn't been able to split and process all the sub messages within the given timeframe, then the timeout triggers and the Splitter breaks out and continues. Notice if you provide a TimeoutAwareAggregationStrategy then 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 continue to run. So use this option with a bit of care.",
          "default" : "0"
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "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.",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "onPrepare" : {
          "type" : "string",
          "title" : "On Prepare",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.Processor"
        },
        "shareUnitOfWork" : {
          "type" : "boolean",
          "title" : "Share Unit Of Work",
          "description" : "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."
        }
      },
      "$comment" : "expression,steps"
    }
  },
  "step" : {
    "model" : {
      "kind" : "model",
      "name" : "step",
      "title" : "Step",
      "description" : "Routes the message to a sequence of processors which is grouped together as one logical name",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.StepDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Step",
      "description" : "Routes the message to a sequence of processors which is grouped together as one logical name",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "stop" : {
    "model" : {
      "kind" : "model",
      "name" : "stop",
      "title" : "Stop",
      "description" : "Stops the processing of the current message",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.StopDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      }
    },
    "propertiesSchema" : {
      "title" : "Stop",
      "description" : "Stops the processing of the current message",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      }
    }
  },
  "threads" : {
    "model" : {
      "kind" : "model",
      "name" : "threads",
      "title" : "Threads",
      "description" : "Specifies that all steps after this node are processed asynchronously",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ThreadsDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "executorService" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a custom thread pool"
      },
      "poolSize" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Pool Size",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the core pool size"
      },
      "maxPoolSize" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Max Pool Size",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the maximum pool size"
      },
      "keepAliveTime" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Keep Alive Time",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Long",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the keep alive time for idle threads"
      },
      "timeUnit" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Time Unit",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "java.util.concurrent.TimeUnit",
        "enum" : [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the keep alive time unit. By default SECONDS is used."
      },
      "maxQueueSize" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Max Queue Size",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue"
      },
      "allowCoreThreadTimeOut" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Allow Core Thread Time Out",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size Is by default false"
      },
      "threadName" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Thread Name",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "Threads",
        "description" : "Sets the thread name to use."
      },
      "rejectedPolicy" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Rejected Policy",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy",
        "enum" : [ "Abort", "CallerRuns" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the handler for tasks which cannot be executed by the thread pool."
      },
      "callerRunsWhenRejected" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Caller Runs When Rejected",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "true",
        "description" : "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"
      }
    },
    "propertiesSchema" : {
      "title" : "Threads",
      "description" : "Specifies that all steps after this node are processed asynchronously",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "To use a custom thread pool",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "poolSize" : {
          "type" : "number",
          "title" : "Pool Size",
          "description" : "Sets the core pool size"
        },
        "maxPoolSize" : {
          "type" : "number",
          "title" : "Max Pool Size",
          "description" : "Sets the maximum pool size"
        },
        "keepAliveTime" : {
          "type" : "number",
          "title" : "Keep Alive Time",
          "description" : "Sets the keep alive time for idle threads"
        },
        "timeUnit" : {
          "type" : "string",
          "title" : "Time Unit",
          "description" : "Sets the keep alive time unit. By default SECONDS is used.",
          "enum" : [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ]
        },
        "maxQueueSize" : {
          "type" : "number",
          "title" : "Max Queue Size",
          "description" : "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue"
        },
        "allowCoreThreadTimeOut" : {
          "type" : "boolean",
          "title" : "Allow Core Thread Time Out",
          "description" : "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size Is by default false"
        },
        "threadName" : {
          "type" : "string",
          "title" : "Thread Name",
          "description" : "Sets the thread name to use.",
          "default" : "Threads"
        },
        "rejectedPolicy" : {
          "type" : "string",
          "title" : "Rejected Policy",
          "description" : "Sets the handler for tasks which cannot be executed by the thread pool.",
          "enum" : [ "Abort", "CallerRuns" ]
        },
        "callerRunsWhenRejected" : {
          "type" : "string",
          "title" : "Caller Runs When Rejected",
          "description" : "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",
          "default" : "true"
        }
      }
    }
  },
  "throttle" : {
    "model" : {
      "kind" : "model",
      "name" : "throttle",
      "title" : "Throttle",
      "description" : "Controls the rate at which messages are passed to the next node in the route",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ThrottleDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to configure the maximum number of messages to throttle per request"
      },
      "mode" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Mode",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.model.ThrottlingMode",
        "enum" : [ "TotalRequests", "ConcurrentRequests" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "TotalRequests",
        "description" : "Sets the throttling mode to one of the available modes enumerated in ThrottlingMode"
      },
      "correlationExpression" : {
        "index" : 5,
        "kind" : "expression",
        "displayName" : "Correlation Expression",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.ExpressionSubElementDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The expression used to calculate the correlation key to use for throttle grouping. The Exchange which has the same correlation key is throttled together."
      },
      "executorService" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a custom thread pool (ScheduledExecutorService) by the throttler."
      },
      "asyncDelayed" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Async Delayed",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Enables asynchronous delay which means the thread will not block while delaying."
      },
      "callerRunsWhenRejected" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Caller Runs When Rejected",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true"
      },
      "rejectExecution" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Reject Execution",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit Is by default false"
      },
      "timePeriodMillis" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Time Period Millis",
        "required" : false,
        "type" : "duration",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "1000",
        "description" : "Sets the time period during which the maximum request count is valid for"
      }
    },
    "propertiesSchema" : {
      "title" : "Throttle",
      "description" : "Controls the rate at which messages are passed to the next node in the route",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "mode" : {
          "type" : "string",
          "title" : "Mode",
          "description" : "Sets the throttling mode to one of the available modes enumerated in ThrottlingMode",
          "default" : "TotalRequests",
          "enum" : [ "TotalRequests", "ConcurrentRequests" ]
        },
        "correlationExpression" : {
          "title" : "Correlation Expression",
          "description" : "The expression used to calculate the correlation key to use for throttle grouping. The Exchange which has the same correlation key is throttled together.",
          "type" : "object",
          "$comment" : "expression"
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "To use a custom thread pool (ScheduledExecutorService) by the throttler.",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "asyncDelayed" : {
          "type" : "boolean",
          "title" : "Async Delayed",
          "description" : "Enables asynchronous delay which means the thread will not block while delaying."
        },
        "callerRunsWhenRejected" : {
          "type" : "boolean",
          "title" : "Caller Runs When Rejected",
          "description" : "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true"
        },
        "rejectExecution" : {
          "type" : "boolean",
          "title" : "Reject Execution",
          "description" : "Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit Is by default false"
        },
        "timePeriodMillis" : {
          "type" : "string",
          "title" : "Time Period Millis",
          "description" : "Sets the time period during which the maximum request count is valid for",
          "default" : "1000"
        }
      },
      "$comment" : "expression"
    }
  },
  "throwException" : {
    "model" : {
      "kind" : "model",
      "name" : "throwException",
      "title" : "Throw Exception",
      "description" : "Throws an exception",
      "deprecated" : false,
      "label" : "error",
      "javaType" : "org.apache.camel.model.ThrowExceptionDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "message" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Message",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To create a new exception instance and use the given message as caused message (supports simple language)"
      },
      "exceptionType" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Exception Type",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The class of the exception to create using the message."
      },
      "ref" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Ref",
        "label" : "advanced",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Reference to the exception instance to lookup from the registry to throw"
      }
    },
    "propertiesSchema" : {
      "title" : "Throw Exception",
      "description" : "Throws an exception",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "message" : {
          "type" : "string",
          "title" : "Message",
          "description" : "To create a new exception instance and use the given message as caused message (supports simple language)"
        },
        "exceptionType" : {
          "type" : "string",
          "title" : "Exception Type",
          "description" : "The class of the exception to create using the message."
        },
        "ref" : {
          "type" : "string",
          "title" : "Ref",
          "description" : "Reference to the exception instance to lookup from the registry to throw"
        }
      }
    }
  },
  "to" : {
    "model" : {
      "kind" : "model",
      "name" : "to",
      "title" : "To",
      "description" : "Sends the message to a static endpoint",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ToDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "variableSend" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Variable Send",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 everything else is as usual."
      },
      "variableReceive" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "uri" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Uri",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the uri of the endpoint to send to."
      },
      "pattern" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.ExchangePattern",
        "enum" : [ "InOnly", "InOut" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the optional ExchangePattern used to invoke this endpoint"
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "variableSend" : {
          "type" : "string",
          "title" : "Variable Send",
          "description" : "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 everything else is as usual."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "Sets the optional ExchangePattern used to invoke this endpoint",
          "enum" : [ "InOnly", "InOut" ]
        }
      },
      "title" : "To",
      "description" : "Sends the message to a static endpoint"
    }
  },
  "toD" : {
    "model" : {
      "kind" : "model",
      "name" : "toD",
      "title" : "To D",
      "description" : "Sends the message to a dynamic endpoint",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.ToDynamicDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "uri" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Uri",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression."
      },
      "variableSend" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Variable Send",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "variableReceive" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 everything else is as usual."
      },
      "pattern" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.ExchangePattern",
        "enum" : [ "InOnly", "InOut" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the optional ExchangePattern used to invoke this endpoint"
      },
      "cacheSize" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      },
      "ignoreInvalidEndpoint" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoint",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Whether to ignore invalid endpoint URIs and skip sending the message."
      },
      "allowOptimisedComponents" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Allow Optimised Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware ."
      },
      "autoStartComponents" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Auto Start Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to auto startup components when toD is starting up."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "uri" : {
          "type" : "string",
          "title" : "Uri",
          "description" : "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression."
        },
        "variableSend" : {
          "type" : "string",
          "title" : "Variable Send",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "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 everything else is as usual."
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "Sets the optional ExchangePattern used to invoke this endpoint",
          "enum" : [ "InOnly", "InOut" ]
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        },
        "ignoreInvalidEndpoint" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoint",
          "description" : "Whether to ignore invalid endpoint URIs and skip sending the message."
        },
        "allowOptimisedComponents" : {
          "type" : "boolean",
          "title" : "Allow Optimised Components",
          "description" : "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware ."
        },
        "autoStartComponents" : {
          "type" : "boolean",
          "title" : "Auto Start Components",
          "description" : "Whether to auto startup components when toD is starting up."
        },
        "parameters" : {
          "type" : "object",
          "title" : "Parameters",
          "description" : "URI parameters"
        }
      },
      "title" : "To D",
      "description" : "Sends the message to a dynamic endpoint"
    }
  },
  "transacted" : {
    "model" : {
      "kind" : "model",
      "name" : "transacted",
      "title" : "Transacted",
      "description" : "Enables transaction on the route",
      "deprecated" : false,
      "label" : "configuration",
      "javaType" : "org.apache.camel.model.TransactedDefinition",
      "supportLevel" : "Stable",
      "abstract" : true,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "ref" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to use for lookup the policy in the registry."
      }
    },
    "propertiesSchema" : {
      "title" : "Transacted",
      "description" : "Enables transaction on the route",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "ref" : {
          "type" : "string",
          "title" : "Ref",
          "description" : "Sets a reference to use for lookup the policy in the registry."
        }
      },
      "$comment" : "steps"
    }
  },
  "transform" : {
    "model" : {
      "kind" : "model",
      "name" : "transform",
      "title" : "Transform",
      "description" : "Transforms the message body based on an expression",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.TransformDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Expression to return the transformed message body (the new message body to use)"
      },
      "fromType" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "From Type",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "From type used in data type transformation."
      },
      "toType" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "To Type",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To type used as a target data type in the transformation."
      }
    },
    "propertiesSchema" : {
      "title" : "Transform",
      "description" : "Transforms the message body based on an expression",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "fromType" : {
          "type" : "string",
          "title" : "From Type",
          "description" : "From type used in data type transformation."
        },
        "toType" : {
          "type" : "string",
          "title" : "To Type",
          "description" : "To type used as a target data type in the transformation."
        }
      },
      "$comment" : "expression"
    }
  },
  "doTry" : {
    "model" : {
      "kind" : "model",
      "name" : "doTry",
      "title" : "Do Try",
      "description" : "Marks the beginning of a try, catch, finally block",
      "deprecated" : false,
      "label" : "error",
      "javaType" : "org.apache.camel.model.TryDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "outputs" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "Do Try",
      "description" : "Marks the beginning of a try, catch, finally block",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "steps"
    }
  },
  "unmarshal" : {
    "model" : {
      "kind" : "model",
      "name" : "unmarshal",
      "title" : "Unmarshal",
      "description" : "Converts the message data received from the wire into a format that Apache Camel processors can consume",
      "deprecated" : false,
      "label" : "dataformat,transformation",
      "javaType" : "org.apache.camel.model.UnmarshalDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "dataFormatType" : {
        "index" : 3,
        "kind" : "element",
        "displayName" : "Data Format Type",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.DataFormatDefinition",
        "oneOf" : [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "fhirJson", "fhirXml", "flatpack", "grok", "gzipDeflater", "hl7", "ical", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "parquetAvro", "pgp", "protobuf", "rss", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "tidyMarkup", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The data format to be used"
      },
      "variableSend" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Variable Send",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "variableReceive" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "allowNullBody" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Allow Null Body",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Indicates whether null is allowed as value of a body to unmarshall."
      }
    },
    "propertiesSchema" : {
      "title" : "Unmarshal",
      "description" : "Converts the message data received from the wire into a format that Apache Camel processors can consume",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "variableSend" : {
          "type" : "string",
          "title" : "Variable Send",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "allowNullBody" : {
          "type" : "boolean",
          "title" : "Allow Null Body",
          "description" : "Indicates whether null is allowed as value of a body to unmarshall."
        }
      },
      "$comment" : "dataformat"
    }
  },
  "validate" : {
    "model" : {
      "kind" : "model",
      "name" : "validate",
      "title" : "Validate",
      "description" : "Validates a message based on an expression",
      "deprecated" : false,
      "label" : "eip,transformation",
      "javaType" : "org.apache.camel.model.ValidateDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "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."
      },
      "predicateExceptionFactory" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Predicate Exception Factory",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.spi.PredicateExceptionFactory",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      }
    },
    "propertiesSchema" : {
      "title" : "Validate",
      "description" : "Validates a message based on an expression",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "predicateExceptionFactory" : {
          "type" : "string",
          "title" : "Predicate Exception Factory",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.spi.PredicateExceptionFactory"
        }
      },
      "$comment" : "expression"
    }
  },
  "when" : {
    "model" : {
      "kind" : "model",
      "name" : "when",
      "title" : "When",
      "description" : "Triggers a route when the expression evaluates to true",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.WhenDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "Expression used as the predicate to evaluate whether this when should trigger and route the message or not."
      },
      "outputs" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "When",
      "description" : "Triggers a route when the expression evaluates to true",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "expression,steps"
    }
  },
  "whenSkipSendToEndpoint" : {
    "model" : {
      "kind" : "model",
      "name" : "whenSkipSendToEndpoint",
      "title" : "When Skip Send To Endpoint",
      "description" : "Predicate to determine if the message should be sent or not to the endpoint, when using interceptSentToEndpoint.",
      "deprecated" : false,
      "label" : "configuration",
      "javaType" : "org.apache.camel.model.WhenSkipSendToEndpointDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : true
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "expression" : {
        "index" : 3,
        "kind" : "expression",
        "displayName" : "Expression",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.language.ExpressionDefinition",
        "oneOf" : [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "asPredicate" : true,
        "description" : "Expression used as the predicate to evaluate whether the message should be sent or not to the endpoint"
      },
      "outputs" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Outputs",
        "required" : true,
        "type" : "array",
        "javaType" : "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>",
        "oneOf" : [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "marshal", "multicast", "onCompletion", "onException", "onFallback", "otherwise", "pausable", "pipeline", "policy", "pollEnrich", "process", "recipientList", "removeHeader", "removeHeaders", "removeProperties", "removeProperty", "removeVariable", "resequence", "resumable", "rollback", "routingSlip", "saga", "sample", "script", "serviceCall", "setBody", "setExchangePattern", "setHeader", "setHeaders", "setProperty", "setVariable", "sort", "split", "step", "stop", "threads", "throttle", "throwException", "to", "toD", "transacted", "transform", "unmarshal", "validate", "when", "whenSkipSendToEndpoint", "wireTap" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false
      }
    },
    "propertiesSchema" : {
      "title" : "When Skip Send To Endpoint",
      "description" : "Predicate to determine if the message should be sent or not to the endpoint, when using interceptSentToEndpoint.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        }
      },
      "$comment" : "expression,steps"
    }
  },
  "wireTap" : {
    "model" : {
      "kind" : "model",
      "name" : "wireTap",
      "title" : "Wire Tap",
      "description" : "Routes a copy of a message (or creates a new message) to a secondary destination while continue routing the original message.",
      "deprecated" : false,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.WireTapDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "copy" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Copy",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Uses a copy of the original exchange"
      },
      "dynamicUri" : {
        "index" : 4,
        "kind" : "attribute",
        "displayName" : "Dynamic Uri",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "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."
      },
      "onPrepare" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "On Prepare",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.Processor",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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."
      },
      "executorService" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Executor Service",
        "label" : "advanced",
        "required" : false,
        "type" : "object",
        "javaType" : "java.util.concurrent.ExecutorService",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Uses a custom thread pool"
      },
      "uri" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Uri",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression."
      },
      "variableSend" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Variable Send",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
      },
      "variableReceive" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Variable Receive",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 everything else is as usual."
      },
      "pattern" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "label" : "advanced",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.ExchangePattern",
        "enum" : [ "InOnly", "InOut" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the optional ExchangePattern used to invoke this endpoint"
      },
      "cacheSize" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Cache Size",
        "label" : "advanced",
        "required" : false,
        "type" : "integer",
        "javaType" : "java.lang.Integer",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
      },
      "ignoreInvalidEndpoint" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Ignore Invalid Endpoint",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "Whether to ignore invalid endpoint URIs and skip sending the message."
      },
      "allowOptimisedComponents" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "Allow Optimised Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware ."
      },
      "autoStartComponents" : {
        "index" : 14,
        "kind" : "attribute",
        "displayName" : "Auto Start Components",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : true,
        "description" : "Whether to auto startup components when toD is starting up."
      }
    },
    "propertiesSchema" : {
      "title" : "Wire Tap",
      "description" : "Routes a copy of a message (or creates a new message) to a secondary destination while continue routing the original message.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "copy" : {
          "type" : "boolean",
          "title" : "Copy",
          "description" : "Uses a copy of the original exchange"
        },
        "dynamicUri" : {
          "type" : "boolean",
          "title" : "Dynamic Uri",
          "description" : "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."
        },
        "onPrepare" : {
          "type" : "string",
          "title" : "On Prepare",
          "description" : "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.",
          "$comment" : "class:org.apache.camel.Processor"
        },
        "executorService" : {
          "type" : "string",
          "title" : "Executor Service",
          "description" : "Uses a custom thread pool",
          "$comment" : "class:java.util.concurrent.ExecutorService"
        },
        "variableSend" : {
          "type" : "string",
          "title" : "Variable Send",
          "description" : "To use a variable to store the received message body (only body, not headers). This is handy for easy access to the received message body via variables. Important: When using receive variable then the received body is stored only in this variable and not on the current org.apache.camel.Message ."
        },
        "variableReceive" : {
          "type" : "string",
          "title" : "Variable Receive",
          "description" : "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 everything else is as usual."
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "Sets the optional ExchangePattern used to invoke this endpoint",
          "enum" : [ "InOnly", "InOut" ]
        },
        "cacheSize" : {
          "type" : "number",
          "title" : "Cache Size",
          "description" : "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 prototype scoped and will be stopped and discarded after use. This reduces memory usage as otherwise producers/endpoints are stored in memory in the caches. However if there are a high degree of dynamic endpoints that have been used before, then it can benefit to use the cache to reuse both producers and endpoints and therefore the cache size can be set accordingly or rely on the default size (1000). If there is a mix of unique and used before dynamic endpoints, then setting a reasonable cache size can help reduce memory usage to avoid storing too many non frequent used producers."
        },
        "ignoreInvalidEndpoint" : {
          "type" : "boolean",
          "title" : "Ignore Invalid Endpoint",
          "description" : "Whether to ignore invalid endpoint URIs and skip sending the message."
        },
        "allowOptimisedComponents" : {
          "type" : "boolean",
          "title" : "Allow Optimised Components",
          "description" : "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware ."
        },
        "autoStartComponents" : {
          "type" : "boolean",
          "title" : "Auto Start Components",
          "description" : "Whether to auto startup components when toD is starting up."
        }
      },
      "required" : [ "uri" ]
    }
  },
  "serviceCall" : {
    "model" : {
      "kind" : "model",
      "name" : "serviceCall",
      "title" : "Service Call",
      "description" : "To call remote services",
      "deprecated" : true,
      "label" : "eip,routing",
      "javaType" : "org.apache.camel.model.cloud.ServiceCallDefinition",
      "supportLevel" : "Stable",
      "abstract" : false,
      "input" : true,
      "output" : false
    },
    "properties" : {
      "id" : {
        "index" : 0,
        "kind" : "attribute",
        "displayName" : "Id",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the id of this node"
      },
      "description" : {
        "index" : 1,
        "kind" : "element",
        "displayName" : "Description",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the description of this node"
      },
      "disabled" : {
        "index" : 2,
        "kind" : "attribute",
        "displayName" : "Disabled",
        "label" : "advanced",
        "required" : false,
        "type" : "boolean",
        "javaType" : "java.lang.Boolean",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : false,
        "description" : "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."
      },
      "name" : {
        "index" : 3,
        "kind" : "attribute",
        "displayName" : "Name",
        "required" : true,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the name of the service to use"
      },
      "expression" : {
        "index" : 4,
        "kind" : "element",
        "displayName" : "Expression",
        "required" : false,
        "type" : "object",
        "javaType" : "org.apache.camel.model.cloud.ServiceCallExpressionConfiguration",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Configures the Expression using the given configuration."
      },
      "uri" : {
        "index" : 5,
        "kind" : "attribute",
        "displayName" : "Uri",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression."
      },
      "component" : {
        "index" : 6,
        "kind" : "attribute",
        "displayName" : "Component",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "defaultValue" : "http",
        "description" : "The component to use."
      },
      "pattern" : {
        "index" : 7,
        "kind" : "attribute",
        "displayName" : "Pattern",
        "required" : false,
        "type" : "enum",
        "javaType" : "org.apache.camel.ExchangePattern",
        "enum" : [ "InOnly", "InOut" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets the optional ExchangePattern used to invoke this endpoint"
      },
      "configurationRef" : {
        "index" : 8,
        "kind" : "attribute",
        "displayName" : "Configuration Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Refers to a ServiceCall configuration to use"
      },
      "serviceDiscoveryRef" : {
        "index" : 9,
        "kind" : "attribute",
        "displayName" : "Service Discovery Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to a custom ServiceDiscovery to use."
      },
      "serviceFilterRef" : {
        "index" : 10,
        "kind" : "attribute",
        "displayName" : "Service Filter Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to a custom ServiceFilter to use."
      },
      "serviceChooserRef" : {
        "index" : 11,
        "kind" : "attribute",
        "displayName" : "Service Chooser Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to a custom ServiceChooser to use."
      },
      "loadBalancerRef" : {
        "index" : 12,
        "kind" : "attribute",
        "displayName" : "Load Balancer Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Sets a reference to a custom ServiceLoadBalancer to use."
      },
      "expressionRef" : {
        "index" : 13,
        "kind" : "attribute",
        "displayName" : "Expression Ref",
        "required" : false,
        "type" : "string",
        "javaType" : "java.lang.String",
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Set a reference to a custom Expression to use."
      },
      "serviceDiscoveryConfiguration" : {
        "index" : 14,
        "kind" : "element",
        "displayName" : "Service Discovery Configuration",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.cloud.ServiceCallServiceDiscoveryConfiguration",
        "oneOf" : [ "cachingServiceDiscovery", "combinedServiceDiscovery", "consulServiceDiscovery", "dnsServiceDiscovery", "kubernetesServiceDiscovery", "staticServiceDiscovery", "zookeeperServiceDiscovery" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Configures the ServiceDiscovery using the given configuration."
      },
      "serviceFilterConfiguration" : {
        "index" : 15,
        "kind" : "element",
        "displayName" : "Service Filter Configuration",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.cloud.ServiceCallServiceFilterConfiguration",
        "oneOf" : [ "blacklistServiceFilter", "combinedServiceFilter", "customServiceFilter", "healthyServiceFilter", "passThroughServiceFilter" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Configures the ServiceFilter using the given configuration."
      },
      "loadBalancerConfiguration" : {
        "index" : 16,
        "kind" : "element",
        "displayName" : "Load Balancer Configuration",
        "required" : true,
        "type" : "object",
        "javaType" : "org.apache.camel.model.cloud.ServiceCallServiceLoadBalancerConfiguration",
        "oneOf" : [ "defaultLoadBalancer" ],
        "deprecated" : false,
        "autowired" : false,
        "secret" : false,
        "description" : "Configures the LoadBalancer using the given configuration."
      }
    },
    "propertiesSchema" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "title" : "Id",
          "description" : "Sets the id of this node"
        },
        "description" : {
          "type" : "string",
          "title" : "Description",
          "description" : "Sets the description of this node"
        },
        "disabled" : {
          "type" : "boolean",
          "title" : "Disabled",
          "description" : "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."
        },
        "name" : {
          "type" : "string",
          "title" : "Name",
          "description" : "Sets the name of the service to use"
        },
        "uri" : {
          "type" : "string",
          "title" : "Uri",
          "description" : "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression."
        },
        "component" : {
          "type" : "string",
          "title" : "Component",
          "description" : "The component to use.",
          "default" : "http"
        },
        "pattern" : {
          "type" : "string",
          "title" : "Pattern",
          "description" : "Sets the optional ExchangePattern used to invoke this endpoint",
          "enum" : [ "InOnly", "InOut" ]
        },
        "configurationRef" : {
          "type" : "string",
          "title" : "Configuration Ref",
          "description" : "Refers to a ServiceCall configuration to use"
        },
        "serviceDiscoveryRef" : {
          "type" : "string",
          "title" : "Service Discovery Ref",
          "description" : "Sets a reference to a custom ServiceDiscovery to use."
        },
        "serviceFilterRef" : {
          "type" : "string",
          "title" : "Service Filter Ref",
          "description" : "Sets a reference to a custom ServiceFilter to use."
        },
        "serviceChooserRef" : {
          "type" : "string",
          "title" : "Service Chooser Ref",
          "description" : "Sets a reference to a custom ServiceChooser to use."
        },
        "loadBalancerRef" : {
          "type" : "string",
          "title" : "Load Balancer Ref",
          "description" : "Sets a reference to a custom ServiceLoadBalancer to use."
        },
        "expressionRef" : {
          "type" : "string",
          "title" : "Expression Ref",
          "description" : "Set a reference to a custom Expression to use."
        }
      },
      "title" : "Service Call",
      "description" : "To call remote services"
    }
  }
}