You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2025/06/17 09:47:01 UTC

(camel) branch rv created (now 8b9ad445dfa)

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

davsclaus pushed a change to branch rv
in repository https://gitbox.apache.org/repos/asf/camel.git


      at 8b9ad445dfa CAMEL-22121: rest-dsl: Add client response validator

This branch includes the following new commits:

     new 8b9ad445dfa CAMEL-22121: rest-dsl: Add client response validator

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/01: CAMEL-22121: rest-dsl: Add client response validator

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8b9ad445dfaf3b9af97c6f9032f18e3724491c7c
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Jun 17 11:13:42 2025 +0200

    CAMEL-22121: rest-dsl: Add client response validator
---
 .../camel/catalog/components/rest-openapi.json     |  56 ++++-----
 .../main/camel-main-configuration-metadata.json    |   1 +
 .../org/apache/camel/catalog/models/delete.json    |  13 ++-
 .../org/apache/camel/catalog/models/get.json       |  13 ++-
 .../org/apache/camel/catalog/models/head.json      |  13 ++-
 .../org/apache/camel/catalog/models/patch.json     |  13 ++-
 .../org/apache/camel/catalog/models/post.json      |  13 ++-
 .../org/apache/camel/catalog/models/put.json       |  13 ++-
 .../camel/catalog/models/responseMessage.json      |   9 +-
 .../org/apache/camel/catalog/models/rest.json      |  15 +--
 .../apache/camel/catalog/models/restBinding.json   |   7 +-
 .../camel/catalog/models/restConfiguration.json    |  23 ++--
 .../apache/camel/catalog/schemas/camel-spring.xsd  |  57 +++++++++
 .../apache/camel/catalog/schemas/camel-xml-io.xsd  |  57 +++++++++
 .../helper/CamelJavaRestDslParserHelper.java       |   5 +
 .../parser/helper/CamelXmlRestDslParserHelper.java |   3 +
 .../parser/model/RestConfigurationDetails.java     |   9 ++
 .../camel/parser/model/RestServiceDetails.java     |   9 ++
 .../apache/camel/parser/model/RestVerbDetails.java |   9 ++
 ...tyClientResponseValidationResponseCodeTest.java |  91 +++++++++++++++
 ...ttyInvalidJSonClientResponseValidationTest.java |  68 +++++++++++
 ...ctory => rest-client-request-validator-factory} |   0
 ...tory => rest-client-response-validator-factory} |   2 +-
 .../src/main/docs/openapi-validator.adoc           |   4 +-
 .../client/OpenApiRestClientResponseValidator.java | 129 +++++++++++++++++++++
 .../OpenApiRestClientRequestValidatorTest.java     |  11 +-
 .../OpenApiRestClientResponseValidatorTest.java    |  96 +++++++++++++++
 .../src/test/resources/petstore-v3.json            |   3 +-
 .../VertxClientResponseCodeValidationTest.java     |  84 ++++++++++++++
 ...ertxInvalidJSonClientRequestValidationTest.java |  65 +++++++++++
 ...rtxInvalidJSonClientResponseValidationTest.java |  65 +++++++++++
 .../openapi/RestOpenApiComponentConfigurer.java    |   6 +
 .../openapi/RestOpenApiEndpointConfigurer.java     |   6 +
 .../openapi/RestOpenApiEndpointUriFactory.java     |   3 +-
 .../camel/component/rest/openapi/rest-openapi.json |  56 ++++-----
 .../rest/openapi/RestOpenApiComponent.java         |  12 ++
 .../rest/openapi/RestOpenApiEndpoint.java          |  11 ++
 .../rest/openapi/RestOpenApiProcessor.java         |   1 +
 .../camel/spi/RestClientRequestValidator.java      |   2 +-
 ...dator.java => RestClientResponseValidator.java} |  25 ++--
 .../org/apache/camel/spi/RestConfiguration.java    |  18 ++-
 .../camel/impl/RestConfigurationConfigurer.java    |   6 +
 .../org/apache/camel/model/rest/delete.json        |  13 ++-
 .../META-INF/org/apache/camel/model/rest/get.json  |  13 ++-
 .../META-INF/org/apache/camel/model/rest/head.json |  13 ++-
 .../org/apache/camel/model/rest/patch.json         |  13 ++-
 .../META-INF/org/apache/camel/model/rest/post.json |  13 ++-
 .../META-INF/org/apache/camel/model/rest/put.json  |  13 ++-
 .../apache/camel/model/rest/responseMessage.json   |   9 +-
 .../META-INF/org/apache/camel/model/rest/rest.json |  15 +--
 .../org/apache/camel/model/rest/restBinding.json   |   7 +-
 .../apache/camel/model/rest/restConfiguration.json |  23 ++--
 .../model/rest/ResponseMessageDefinition.java      |  18 +++
 .../camel/model/rest/RestBindingDefinition.java    |  54 +++++++++
 .../model/rest/RestConfigurationDefinition.java    |  45 +++++++
 .../apache/camel/model/rest/RestDefinition.java    |  53 ++++++++-
 .../apache/camel/model/rest/VerbDefinition.java    |  18 +++
 .../camel/reifier/rest/RestBindingReifier.java     |   7 ++
 .../RestConfigurationPropertiesConfigurer.java     |   7 ++
 .../camel-main-configuration-metadata.json         |   1 +
 core/camel-main/src/main/docs/main.adoc            |   3 +-
 .../camel/main/RestConfigurationProperties.java    |  12 ++
 .../DefaultRestClientResponseValidator.java        |  79 +++++++++++++
 .../camel/support/processor/RestBindingAdvice.java |  33 ++++--
 .../processor/RestBindingAdviceFactory.java        |  30 ++++-
 .../processor/RestBindingConfiguration.java        |  27 +++++
 .../java/org/apache/camel/xml/in/ModelParser.java  |   5 +
 .../java/org/apache/camel/xml/out/ModelWriter.java |   5 +
 .../org/apache/camel/yaml/out/ModelWriter.java     |   5 +
 docs/user-manual/modules/ROOT/pages/rest-dsl.adoc  |  22 +++-
 .../dsl/RestOpenapiComponentBuilderFactory.java    |  20 ++++
 .../dsl/RestOpenApiEndpointBuilderFactory.java     |  34 ++++++
 .../dsl/yaml/deserializers/ModelDeserializers.java |  60 ++++++++++
 .../generated/resources/schema/camelYamlDsl.json   |  50 ++++++++
 74 files changed, 1601 insertions(+), 221 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/rest-openapi.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/rest-openapi.json
index 2287b3407c3..127b15a76c3 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/rest-openapi.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/rest-openapi.json
@@ -29,20 +29,21 @@
     "apiContextPath": { "index": 2, "kind": "property", "displayName": "Api Context Path", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the context-path to use for servicing the OpenAPI specification" },
     "bridgeErrorHandler": { "index": 3, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the like [...]
     "clientRequestValidation": { "index": 4, "kind": "property", "displayName": "Client Request Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the incoming request is valid according to the OpenAPI specification" },
-    "missingOperation": { "index": 5, "kind": "property", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
-    "bindingPackageScan": { "index": 6, "kind": "property", "displayName": "Binding Package Scan", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma." },
-    "consumerComponentName": { "index": 7, "kind": "property", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfac [...]
-    "mockIncludePattern": { "index": 8, "kind": "property", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified sepa [...]
-    "restOpenapiProcessorStrategy": { "index": 9, "kind": "property", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
-    "host": { "index": 10, "kind": "property", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a na [...]
-    "lazyStartProducer": { "index": 11, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fai [...]
-    "requestValidationEnabled": { "index": 12, "kind": "property", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
-    "componentName": { "index": 13, "kind": "property", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH [...]
-    "consumes": { "index": 14, "kind": "property", "displayName": "Consumes", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates to the va [...]
-    "produces": { "index": 15, "kind": "property", "displayName": "Produces", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi s [...]
-    "autowiredEnabled": { "index": 16, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching  [...]
-    "sslContextParameters": { "index": 17, "kind": "property", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context" },
-    "useGlobalSslContextParameters": { "index": 18, "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters." }
+    "clientResponseValidation": { "index": 5, "kind": "property", "displayName": "Client Response Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the outgoing response from Camel is valid according to the OpenAPI specification" },
+    "missingOperation": { "index": 6, "kind": "property", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
+    "bindingPackageScan": { "index": 7, "kind": "property", "displayName": "Binding Package Scan", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma." },
+    "consumerComponentName": { "index": 8, "kind": "property", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfac [...]
+    "mockIncludePattern": { "index": 9, "kind": "property", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified sepa [...]
+    "restOpenapiProcessorStrategy": { "index": 10, "kind": "property", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
+    "host": { "index": 11, "kind": "property", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a na [...]
+    "lazyStartProducer": { "index": 12, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fai [...]
+    "requestValidationEnabled": { "index": 13, "kind": "property", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
+    "componentName": { "index": 14, "kind": "property", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH [...]
+    "consumes": { "index": 15, "kind": "property", "displayName": "Consumes", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates to the va [...]
+    "produces": { "index": 16, "kind": "property", "displayName": "Produces", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi s [...]
+    "autowiredEnabled": { "index": 17, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching  [...]
+    "sslContextParameters": { "index": 18, "kind": "property", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context" },
+    "useGlobalSslContextParameters": { "index": 19, "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters." }
   },
   "properties": {
     "specificationUri": { "index": 0, "kind": "path", "displayName": "Specification Uri", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "openapi.json", "description": "Path to the OpenApi specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not  [...]
@@ -50,18 +51,19 @@
     "basePath": { "index": 2, "kind": "parameter", "displayName": "Base Path", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "API basePath, for example \/v3. Default is unset, if set overrides the value present in OpenApi specification and in the component configuration." },
     "apiContextPath": { "index": 3, "kind": "parameter", "displayName": "Api Context Path", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the context-path to use for servicing the OpenAPI specification" },
     "clientRequestValidation": { "index": 4, "kind": "parameter", "displayName": "Client Request Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the incoming request is valid according to the OpenAPI specification" },
-    "consumes": { "index": 5, "kind": "parameter", "displayName": "Consumes", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates or multiple types as applicat [...]
-    "missingOperation": { "index": 6, "kind": "parameter", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
-    "bridgeErrorHandler": { "index": 7, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming  [...]
-    "consumerComponentName": { "index": 8, "kind": "parameter", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfa [...]
-    "exceptionHandler": { "index": 9, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By def [...]
-    "exchangePattern": { "index": 10, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "mockIncludePattern": { "index": 11, "kind": "parameter", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified se [...]
-    "restOpenapiProcessorStrategy": { "index": 12, "kind": "parameter", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
-    "host": { "index": 13, "kind": "parameter", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a n [...]
-    "produces": { "index": 14, "kind": "parameter", "displayName": "Produces", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Overr [...]
-    "requestValidationEnabled": { "index": 15, "kind": "parameter", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
-    "componentName": { "index": 16, "kind": "parameter", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPAT [...]
-    "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
+    "clientResponseValidation": { "index": 5, "kind": "parameter", "displayName": "Client Response Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the outgoing response from Camel is valid according to the OpenAPI specification" },
+    "consumes": { "index": 6, "kind": "parameter", "displayName": "Consumes", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates or multiple types as applicat [...]
+    "missingOperation": { "index": 7, "kind": "parameter", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
+    "bridgeErrorHandler": { "index": 8, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming  [...]
+    "consumerComponentName": { "index": 9, "kind": "parameter", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfa [...]
+    "exceptionHandler": { "index": 10, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 11, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "mockIncludePattern": { "index": 12, "kind": "parameter", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified se [...]
+    "restOpenapiProcessorStrategy": { "index": 13, "kind": "parameter", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
+    "host": { "index": 14, "kind": "parameter", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a n [...]
+    "produces": { "index": 15, "kind": "parameter", "displayName": "Produces", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Overr [...]
+    "requestValidationEnabled": { "index": 16, "kind": "parameter", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
+    "componentName": { "index": 17, "kind": "parameter", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPAT [...]
+    "lazyStartProducer": { "index": 18, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index 6435a1d6bcc..339f9e360d2 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -262,6 +262,7 @@
     { "name": "camel.rest.bindingMode", "description": "Sets the binding mode to be used by the REST consumer", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "object", "javaType": "org.apache.camel.spi.RestBindingMode", "defaultValue": "RestBindingMode.off", "enum": [ "auto", "off", "json", "xml", "json_xml" ] },
     { "name": "camel.rest.bindingPackageScan", "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma.", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.rest.clientRequestValidation", "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or  [...]
+    { "name": "camel.rest.clientResponseValidation", "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "boolean", "java [...]
     { "name": "camel.rest.component", "description": "Sets the name of the Camel component to use as the REST consumer", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.rest.componentProperties", "description": "Sets additional options on component level", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "object", "javaType": "java.util.Map" },
     { "name": "camel.rest.consumerProperties", "description": "Sets additional options on consumer level", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "object", "javaType": "java.util.Map" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delete.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delete.json
index ae68c1f76da..a53f94eb88d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delete.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delete.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/get.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/get.json
index 11222cda6be..99f7669ae4c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/get.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/get.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/head.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/head.json
index 3d9d345020e..bb0601922ac 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/head.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/head.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/patch.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/patch.json
index edcdcf62df2..5ca95be45b8 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/patch.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/patch.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/post.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/post.json
index 6931ae8e516..96272abe037 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/post.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/post.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/put.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/put.json
index 9d40144e8bd..7decb24eee8 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/put.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/put.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/responseMessage.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/responseMessage.json
index bac95a6e8bd..e43a5b1bb32 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/responseMessage.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/responseMessage.json
@@ -13,9 +13,10 @@
   },
   "properties": {
     "code": { "index": 0, "kind": "attribute", "displayName": "Code", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "200", "description": "The response code such as a HTTP status code" },
-    "message": { "index": 1, "kind": "attribute", "displayName": "Message", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response message (description)" },
-    "responseModel": { "index": 2, "kind": "attribute", "displayName": "Response Model", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response model" },
-    "header": { "index": 3, "kind": "element", "displayName": "Header", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.ResponseHeaderDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Adds a response header" },
-    "examples": { "index": 4, "kind": "element", "displayName": "Examples", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Examples of response messages" }
+    "contentType": { "index": 1, "kind": "attribute", "displayName": "Content Type", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response content-type such as application\/json." },
+    "message": { "index": 2, "kind": "attribute", "displayName": "Message", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response message (description)" },
+    "responseModel": { "index": 3, "kind": "attribute", "displayName": "Response Model", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response model" },
+    "header": { "index": 4, "kind": "element", "displayName": "Header", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.ResponseHeaderDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Adds a response header" },
+    "examples": { "index": 5, "kind": "element", "displayName": "Examples", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Examples of response messages" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/rest.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/rest.json
index 032828142ef..3b09514b418 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/rest.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/rest.json
@@ -21,12 +21,13 @@
     "bindingMode": { "index": 6, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is auto" },
     "skipBindingOnErrorCode": { "index": 7, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success me [...]
     "clientRequestValidation": { "index": 8, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acce [...]
-    "enableCORS": { "index": 9, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 10, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 11, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true." },
-    "tag": { "index": 12, "kind": "attribute", "displayName": "Tag", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To configure a special tag for the operations within this rest definition." },
-    "openApi": { "index": 13, "kind": "element", "displayName": "Open Api", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.OpenApiDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing OpenAPI specification as contract-first for Camel Rest DSL." },
-    "securityDefinitions": { "index": 14, "kind": "element", "displayName": "Security Definitions", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.RestSecuritiesDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security definitions such as Basic, OAuth2 etc." },
-    "securityRequirements": { "index": 15, "kind": "element", "displayName": "Security Requirements", "group": "security", "label": "security", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.SecurityDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security requirement(s) for all endpoints." }
+    "clientResponseValidation": { "index": 9, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers  [...]
+    "enableCORS": { "index": 10, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 11, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 12, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true." },
+    "tag": { "index": 13, "kind": "attribute", "displayName": "Tag", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To configure a special tag for the operations within this rest definition." },
+    "openApi": { "index": 14, "kind": "element", "displayName": "Open Api", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.OpenApiDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing OpenAPI specification as contract-first for Camel Rest DSL." },
+    "securityDefinitions": { "index": 15, "kind": "element", "displayName": "Security Definitions", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.RestSecuritiesDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security definitions such as Basic, OAuth2 etc." },
+    "securityRequirements": { "index": 16, "kind": "element", "displayName": "Security Requirements", "group": "security", "label": "security", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.SecurityDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security requirement(s) for all endpoints." }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restBinding.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restBinding.json
index 87f2cc574da..ecf0fad99b1 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restBinding.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restBinding.json
@@ -21,8 +21,9 @@
     "outType": { "index": 6, "kind": "attribute", "displayName": "Out Type", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the class name to use for binding from POJO to output for the outgoing data The name of the class of the input data. Append a to the end of the name if you want the input to be an array type." },
     "skipBindingOnErrorCode": { "index": 7, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success me [...]
     "clientRequestValidation": { "index": 8, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acce [...]
-    "enableCORS": { "index": 9, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
-    "enableNoContentResponse": { "index": 10, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "component": { "index": 11, "kind": "attribute", "displayName": "Component", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the component name that this definition will apply to" }
+    "clientResponseValidation": { "index": 9, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers  [...]
+    "enableCORS": { "index": 10, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
+    "enableNoContentResponse": { "index": 11, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "component": { "index": 12, "kind": "attribute", "displayName": "Component", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the component name that this definition will apply to" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restConfiguration.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restConfiguration.json
index 740a4708e86..a1da1650ec6 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restConfiguration.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/restConfiguration.json
@@ -30,16 +30,17 @@
     "bindingPackageScan": { "index": 15, "kind": "attribute", "displayName": "Binding Package Scan", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma." },
     "skipBindingOnErrorCode": { "index": 16, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 17, "kind": "attribute", "displayName": "Client Request Validation", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if vali [...]
-    "enableCORS": { "index": 18, "kind": "attribute", "displayName": "Enable CORS", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
-    "enableNoContentResponse": { "index": 19, "kind": "attribute", "displayName": "Enable No Content Response", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "inlineRoutes": { "index": 20, "kind": "attribute", "displayName": "Inline Routes", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Inline routes in rest-dsl which are linked using direct endpoints. Each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the  [...]
-    "jsonDataFormat": { "index": 21, "kind": "attribute", "displayName": "Json Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
-    "xmlDataFormat": { "index": 22, "kind": "attribute", "displayName": "Xml Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
-    "componentProperty": { "index": 23, "kind": "element", "displayName": "Component Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest component in use." },
-    "endpointProperty": { "index": 24, "kind": "element", "displayName": "Endpoint Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest endpoint in use." },
-    "consumerProperty": { "index": 25, "kind": "element", "displayName": "Consumer Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest consumer in use." },
-    "dataFormatProperty": { "index": 26, "kind": "element", "displayName": "Data Format Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the data formats in use. For example set property prettyPrint to true to have json outputted in pretty mo [...]
-    "apiProperty": { "index": 27, "kind": "element", "displayName": "Api Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the api documentation. For example set property api.title to my cool stuff" },
-    "corsHeaders": { "index": 28, "kind": "element", "displayName": "Cors Headers", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure custom CORS headers." }
+    "clientResponseValidation": { "index": 18, "kind": "attribute", "displayName": "Client Response Validation", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whet [...]
+    "enableCORS": { "index": 19, "kind": "attribute", "displayName": "Enable CORS", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
+    "enableNoContentResponse": { "index": 20, "kind": "attribute", "displayName": "Enable No Content Response", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "inlineRoutes": { "index": 21, "kind": "attribute", "displayName": "Inline Routes", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Inline routes in rest-dsl which are linked using direct endpoints. Each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the  [...]
+    "jsonDataFormat": { "index": 22, "kind": "attribute", "displayName": "Json Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
+    "xmlDataFormat": { "index": 23, "kind": "attribute", "displayName": "Xml Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
+    "componentProperty": { "index": 24, "kind": "element", "displayName": "Component Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest component in use." },
+    "endpointProperty": { "index": 25, "kind": "element", "displayName": "Endpoint Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest endpoint in use." },
+    "consumerProperty": { "index": 26, "kind": "element", "displayName": "Consumer Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest consumer in use." },
+    "dataFormatProperty": { "index": 27, "kind": "element", "displayName": "Data Format Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the data formats in use. For example set property prettyPrint to true to have json outputted in pretty mo [...]
+    "apiProperty": { "index": 28, "kind": "element", "displayName": "Api Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the api documentation. For example set property api.title to my cool stuff" },
+    "corsHeaders": { "index": 29, "kind": "element", "displayName": "Cors Headers", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure custom CORS headers." }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
index 8ad794311e3..119c7ad7ed1 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
@@ -15268,6 +15268,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="clientResponseValidation" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
         </xs:documentation>
       </xs:annotation>
@@ -15439,6 +15451,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientResponseValidation" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
             </xs:documentation>
           </xs:annotation>
@@ -15848,6 +15872,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientResponseValidation" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
             </xs:documentation>
           </xs:annotation>
@@ -16046,6 +16082,15 @@ Examples of response messages.
         <xs:documentation xml:lang="en">
 <![CDATA[
 The response code such as a HTTP status code. Default value: 200
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="contentType" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+The response content-type such as application/json.
 ]]>
         </xs:documentation>
       </xs:annotation>
@@ -17719,6 +17764,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientResponseValidation" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
             </xs:documentation>
           </xs:annotation>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd
index e90723ec228..03be38284e2 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd
@@ -13962,6 +13962,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="clientResponseValidation" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
         </xs:documentation>
       </xs:annotation>
@@ -14133,6 +14145,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientResponseValidation" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
             </xs:documentation>
           </xs:annotation>
@@ -14542,6 +14566,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientResponseValidation" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
             </xs:documentation>
           </xs:annotation>
@@ -14740,6 +14776,15 @@ Examples of response messages.
         <xs:documentation xml:lang="en">
 <![CDATA[
 The response code such as a HTTP status code. Default value: 200
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="contentType" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+The response content-type such as application/json.
 ]]>
         </xs:documentation>
       </xs:annotation>
@@ -16413,6 +16458,18 @@ returns HTTP Status 415 if validation error. 2) Accept header matches what the R
 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if
 validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); returns HTTP
 Status 400 if validation error. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="clientResponseValidation" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL
+response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If
+the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. Default value:
+false
 ]]>
             </xs:documentation>
           </xs:annotation>
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaRestDslParserHelper.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaRestDslParserHelper.java
index 6d4d29aedd2..0b870e9e885 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaRestDslParserHelper.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaRestDslParserHelper.java
@@ -224,6 +224,7 @@ public final class CamelJavaRestDslParserHelper {
                 node.setProduces(verb.getProduces());
                 node.setSkipBindingOnErrorCode(verb.getSkipBindingOnErrorCode());
                 node.setClientRequestValidation(verb.getClientRequestValidation());
+                node.setClientResponseValidation(verb.getClientResponseValidation());
                 node.setApiDocs(verb.getApiDocs());
                 node.setDescription(verb.getDescription());
             }
@@ -282,6 +283,8 @@ public final class CamelJavaRestDslParserHelper {
             node.setSkipBindingOnErrorCode(extractValueFromFirstArgument(clazz, block, mi));
         } else if ("clientRequestValidation".equals(name)) {
             node.setClientRequestValidation(extractValueFromFirstArgument(clazz, block, mi));
+        } else if ("clientResponseValidation".equals(name)) {
+            node.setClientResponseValidation(extractValueFromFirstArgument(clazz, block, mi));
         } else if ("enableCORS".equals(name)) {
             node.setEnableCORS(extractValueFromFirstArgument(clazz, block, mi));
         } else if ("jsonDataFormat".equals(name)) {
@@ -355,6 +358,8 @@ public final class CamelJavaRestDslParserHelper {
             verb.setSkipBindingOnErrorCode(extractValueFromFirstArgument(clazz, block, mi));
         } else if ("clientRequestValidation".equals(name)) {
             verb.setClientRequestValidation(extractValueFromFirstArgument(clazz, block, mi));
+        } else if ("clientResponseValidation".equals(name)) {
+            verb.setClientResponseValidation(extractValueFromFirstArgument(clazz, block, mi));
         } else if ("consumes".equals(name)) {
             verb.setConsumes(extractValueFromFirstArgument(clazz, block, mi));
         } else if ("produces".equals(name)) {
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlRestDslParserHelper.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlRestDslParserHelper.java
index e27d187951f..b93e88855b8 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlRestDslParserHelper.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlRestDslParserHelper.java
@@ -76,6 +76,7 @@ public final class CamelXmlRestDslParserHelper {
             detail.setBindingMode(extractAttribute(map, "bindingMode"));
             detail.setSkipBindingOnErrorCode(extractAttribute(map, "skipBindingOnErrorCode"));
             detail.setClientRequestValidation(extractAttribute(map, "clientRequestValidation"));
+            detail.setClientResponseValidation(extractAttribute(map, "clientResponseValidation"));
             detail.setEnableCORS(extractAttribute(map, "enableCORS"));
             detail.setJsonDataFormat(extractAttribute(map, "jsonDataFormat"));
             detail.setXmlDataFormat(extractAttribute(map, "xmlDataFormat"));
@@ -218,6 +219,7 @@ public final class CamelXmlRestDslParserHelper {
         detail.setApiDocs(extractAttribute(map, "apiDocs"));
         detail.setBindingMode(extractAttribute(map, "bindingMode"));
         detail.setClientRequestValidation(extractAttribute(map, "clientRequestValidation"));
+        detail.setClientResponseValidation(extractAttribute(map, "clientResponseValidation"));
         detail.setEnableCORS(extractAttribute(map, "enableCORS"));
         detail.setPath(extractAttribute(map, "path"));
         detail.setSkipBindingOnErrorCode(extractAttribute(map, "skipBindingOnErrorCode"));
@@ -232,6 +234,7 @@ public final class CamelXmlRestDslParserHelper {
         detail.setApiDocs(extractAttribute(map, "apiDocs"));
         detail.setBindingMode(extractAttribute(map, "bindingMode"));
         detail.setClientRequestValidation(extractAttribute(map, "clientRequestValidation"));
+        detail.setClientResponseValidation(extractAttribute(map, "clientResponseValidation"));
         detail.setSkipBindingOnErrorCode(extractAttribute(map, "skipBindingOnErrorCode"));
         detail.setType(extractAttribute(map, "type"));
         detail.setOutType(extractAttribute(map, "outType"));
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestConfigurationDetails.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestConfigurationDetails.java
index 0760e6dd41a..42d4c71db08 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestConfigurationDetails.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestConfigurationDetails.java
@@ -47,6 +47,7 @@ public class RestConfigurationDetails {
     private String bindingMode;
     private String skipBindingOnErrorCode;
     private String clientRequestValidation;
+    private String clientResponseValidation;
     private String enableCORS;
     private String jsonDataFormat;
     private String xmlDataFormat;
@@ -228,6 +229,14 @@ public class RestConfigurationDetails {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getEnableCORS() {
         return enableCORS;
     }
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestServiceDetails.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestServiceDetails.java
index 9cbce0280ec..1519f67a4a4 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestServiceDetails.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestServiceDetails.java
@@ -39,6 +39,7 @@ public class RestServiceDetails {
     private String bindingMode;
     private String skipBindingOnErrorCode;
     private String clientRequestValidation;
+    private String clientResponseValidation;
     private String enableCORS;
     private String apiDocs;
     private String description;
@@ -148,6 +149,14 @@ public class RestServiceDetails {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getEnableCORS() {
         return enableCORS;
     }
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestVerbDetails.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestVerbDetails.java
index 3fcf091633e..cd6ffed1b57 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestVerbDetails.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/RestVerbDetails.java
@@ -36,6 +36,7 @@ public class RestVerbDetails {
     private String bindingMode;
     private String skipBindingOnErrorCode;
     private String clientRequestValidation;
+    private String clientResponseValidation;
     private String type;
     private String outType;
     private String description;
@@ -146,6 +147,14 @@ public class RestVerbDetails {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getType() {
         return type;
     }
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyClientResponseValidationResponseCodeTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyClientResponseValidationResponseCodeTest.java
new file mode 100644
index 00000000000..778f449a6f0
--- /dev/null
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyClientResponseValidationResponseCodeTest.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jetty.rest;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.Exchange;
+import org.apache.camel.FluentProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jetty.BaseJettyTest;
+import org.apache.camel.http.base.HttpOperationFailedException;
+import org.apache.camel.model.rest.RestBindingMode;
+import org.junit.jupiter.api.Test;
+
+import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+public class RestJettyClientResponseValidationResponseCodeTest extends BaseJettyTest {
+
+    @Test
+    public void testResponseCode() {
+        FluentProducerTemplate requestTemplate = fluentTemplate.withHeader(Exchange.CONTENT_TYPE, "application/json")
+                .withHeader(Exchange.HTTP_METHOD, "post")
+                .withBody("{\"name\": \"Donald\"}") // the body is ok
+                .to("http://localhost:" + getPort() + "/users/123/update");
+
+        Exception ex = assertThrows(CamelExecutionException.class, () -> requestTemplate.request(String.class));
+
+        HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, ex.getCause());
+        assertEquals(500, cause.getStatusCode());
+        assertEquals("Invalid content-type: application/xml for response code: 200", cause.getResponseBody());
+    }
+
+    @Test
+    public void testResponseHeader() {
+        FluentProducerTemplate requestTemplate = fluentTemplate.withHeader(Exchange.CONTENT_TYPE, "application/json")
+                .withHeader(Exchange.HTTP_METHOD, "post")
+                .withBody("{\"name\": \"Donald\"}") // the body is ok
+                .to("http://localhost:" + getPort() + "/users/123/update2");
+
+        Exception ex = assertThrows(CamelExecutionException.class, () -> requestTemplate.request(String.class));
+
+        HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, ex.getCause());
+        assertEquals(500, cause.getStatusCode());
+        assertEquals("Some of the response HTTP headers are missing.", cause.getResponseBody());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // configure to use jetty on localhost with the given port
+                restConfiguration().component("jetty").host("localhost").port(getPort())
+                        .bindingMode(RestBindingMode.json)
+                        // turn on response validation
+                        .clientResponseValidation(true);
+
+                // use the rest DSL to define the rest services
+                rest("/users/").post("{id}/update")
+                        .consumes("application/json").produces("application/json")
+                        .responseMessage().code(200).contentType("application/json").message("updates an user").endResponseMessage()
+                        .to("direct:update");
+                rest("/users/").post("{id}/update2")
+                        .consumes("application/json").produces("application/xml")
+                        .responseMessage().code(200).contentType("application/xml").message("updates an user")
+                        .header("category").description("The category of the user").endResponseHeader()
+                        .endResponseMessage()
+                        .to("direct:update");
+                from("direct:update")
+                        .setHeader(Exchange.CONTENT_TYPE, constant("application/xml"))
+                        .setBody(constant("<status>ok</status>"));
+            }
+        };
+    }
+
+}
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyInvalidJSonClientResponseValidationTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyInvalidJSonClientResponseValidationTest.java
new file mode 100644
index 00000000000..0c91f330e26
--- /dev/null
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyInvalidJSonClientResponseValidationTest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jetty.rest;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.Exchange;
+import org.apache.camel.FluentProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jetty.BaseJettyTest;
+import org.apache.camel.http.base.HttpOperationFailedException;
+import org.apache.camel.model.rest.RestBindingMode;
+import org.junit.jupiter.api.Test;
+
+import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+public class RestJettyInvalidJSonClientResponseValidationTest extends BaseJettyTest {
+
+    @Test
+    public void testJettyInvalidJSon() {
+        FluentProducerTemplate requestTemplate = fluentTemplate.withHeader(Exchange.CONTENT_TYPE, "application/json")
+                .withHeader(Exchange.HTTP_METHOD, "post")
+                .withBody("{\"name\": \"Donald\"}") // the body is ok
+                .to("http://localhost:" + getPort() + "/users/123/update");
+
+        Exception ex = assertThrows(CamelExecutionException.class, () -> requestTemplate.request(String.class));
+
+        HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, ex.getCause());
+        assertEquals(500, cause.getStatusCode());
+        assertEquals("Invalid response JSon payload.", cause.getResponseBody());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // configure to use jetty on localhost with the given port
+                restConfiguration().component("jetty").host("localhost").port(getPort())
+                        .bindingMode(RestBindingMode.json)
+                        // turn on response validation
+                        .clientResponseValidation(true);
+
+                // use the rest DSL to define the rest services
+                rest("/users/").post("{id}/update")
+                        .consumes("application/json").produces("application/json")
+                        .to("direct:update");
+                from("direct:update").setBody(constant("{ \"status\": \"ok\"")); // this json is invalid
+            }
+        };
+    }
+
+}
diff --git a/components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-validator-factory b/components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-request-validator-factory
similarity index 100%
copy from components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-validator-factory
copy to components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-request-validator-factory
diff --git a/components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-validator-factory b/components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-response-validator-factory
similarity index 78%
rename from components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-validator-factory
rename to components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-response-validator-factory
index d8d8016f187..3de5e60dcff 100644
--- a/components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-validator-factory
+++ b/components/camel-openapi-validator/src/generated/resources/META-INF/services/org/apache/camel/rest-client-response-validator-factory
@@ -1,2 +1,2 @@
 # Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.rest.openapi.validator.client.OpenApiRestClientRequestValidator
+class=org.apache.camel.component.rest.openapi.validator.client.OpenApiRestClientResponseValidator
diff --git a/components/camel-openapi-validator/src/main/docs/openapi-validator.adoc b/components/camel-openapi-validator/src/main/docs/openapi-validator.adoc
index 695cabbebcd..e16bab971a5 100644
--- a/components/camel-openapi-validator/src/main/docs/openapi-validator.adoc
+++ b/components/camel-openapi-validator/src/main/docs/openapi-validator.adoc
@@ -9,10 +9,10 @@
 
 *Since Camel {since}*
 
-Camel comes with a default client request validator for the Camel Rest DSL.
+Camel comes with a default client request/response validator for the Camel Rest DSL.
 
 The `camel-openapi-validator` uses the third party https://bitbucket.org/atlassian/swagger-request-validator/src/master/[Atlassian Swagger Request Validator]
-library instead for client request validator. This library is a more extensive validator than
+library instead for client request/response validator. This library is a more extensive validator than
 the default validator from `camel-core`.
 
 NOTE: This library does not work with running in `camel-jbang`.
diff --git a/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientResponseValidator.java b/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientResponseValidator.java
new file mode 100644
index 00000000000..bf45f1fea63
--- /dev/null
+++ b/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientResponseValidator.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.rest.openapi.validator.client;
+
+import com.atlassian.oai.validator.OpenApiInteractionValidator;
+import com.atlassian.oai.validator.model.Request;
+import com.atlassian.oai.validator.model.SimpleResponse;
+import com.atlassian.oai.validator.report.JsonValidationReportFormat;
+import com.atlassian.oai.validator.report.SimpleValidationReportFormat;
+import com.atlassian.oai.validator.report.ValidationReport;
+import io.swagger.v3.oas.models.OpenAPI;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.rest.openapi.RestOpenApiComponent;
+import org.apache.camel.component.rest.openapi.RestOpenApiHelper;
+import org.apache.camel.http.base.HttpHeaderFilterStrategy;
+import org.apache.camel.spi.RestClientResponseValidator;
+import org.apache.camel.spi.annotations.JdkService;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.MessageHelper;
+
+@JdkService(RestClientResponseValidator.FACTORY)
+public class OpenApiRestClientResponseValidator implements RestClientResponseValidator {
+
+    private final HttpHeaderFilterStrategy filter = new HttpHeaderFilterStrategy();
+
+    public OpenApiRestClientResponseValidator() {
+        // add extra additional HTTP request headers to skip
+        filter.getOutFilter().add("accept");
+        filter.getOutFilter().add("authorization");
+        filter.getOutFilter().add("content-encoding");
+        filter.getOutFilter().add("cookie");
+        filter.getOutFilter().add("origin");
+        filter.getOutFilter().add("user-agent");
+        // content-type as header should be skipped for validator
+        filter.getOutFilter().add("content-type");
+    }
+
+    @Override
+    public ValidationError validate(Exchange exchange, ValidationContext validationContent) {
+        OpenAPI openAPI = exchange.getProperty(Exchange.REST_OPENAPI, OpenAPI.class);
+        if (openAPI == null) {
+            return null;
+        }
+
+        String method = exchange.getMessage().getHeader(Exchange.HTTP_METHOD, String.class);
+        String path = exchange.getMessage().getHeader(Exchange.HTTP_PATH, String.class);
+
+        // find the base-path which can be configured in various places
+        RestOpenApiComponent comp = (RestOpenApiComponent) exchange.getContext().hasComponent("rest-openapi");
+        String basePath = RestOpenApiHelper.determineBasePath(exchange.getContext(), comp, null, openAPI);
+        // need to clip base-path
+        if (path != null && path.startsWith(basePath)) {
+            path = path.substring(basePath.length());
+        }
+        if (path == null) {
+            path = "/";
+        }
+
+        String accept = exchange.getMessage().getHeader("Accept", String.class);
+        String contentType = ExchangeHelper.getContentType(exchange);
+        String body = MessageHelper.extractBodyAsString(exchange.getIn());
+        int status = exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE, 200, int.class);
+
+        SimpleResponse.Builder builder = new SimpleResponse.Builder(status);
+        if (contentType != null) {
+            builder.withContentType(contentType);
+        }
+        if (body != null) {
+            builder.withBody(body);
+        }
+        // Use all non-Camel/non-HTTP headers
+        for (var header : exchange.getMessage().getHeaders().entrySet()) {
+            String key = header.getKey();
+            Object value = header.getValue();
+            boolean customHeader
+                    = !startsWithIgnoreCase(key, "Camel") && !filter.applyFilterToCamelHeaders(key, value, exchange);
+            if (customHeader) {
+                builder.withHeader(key, exchange.getMessage().getHeader(key, String.class));
+            }
+        }
+
+        OpenApiInteractionValidator validator = OpenApiInteractionValidator.createFor(openAPI).build();
+        ValidationReport report = validator.validateResponse(path, asMethod(method), builder.build());
+        if (report.hasErrors()) {
+            String msg;
+            if (accept != null && accept.contains("application/json")) {
+                msg = JsonValidationReportFormat.getInstance().apply(report);
+            } else {
+                msg = SimpleValidationReportFormat.getInstance().apply(report);
+            }
+            return new ValidationError(400, msg);
+        }
+
+        return null;
+    }
+
+    private static boolean startsWithIgnoreCase(String s, String prefix) {
+        return s.regionMatches(true, 0, prefix, 0, prefix.length());
+    }
+
+    private static Request.Method asMethod(String method) {
+        Request.Method answer;
+        switch (method) {
+            case "POST" -> answer = Request.Method.POST;
+            case "PUT" -> answer = Request.Method.PUT;
+            case "PATCH" -> answer = Request.Method.PATCH;
+            case "DELETE" -> answer = Request.Method.DELETE;
+            case "HEAD" -> answer = Request.Method.HEAD;
+            case "OPTIONS" -> answer = Request.Method.OPTIONS;
+            case "TRACE" -> answer = Request.Method.TRACE;
+            default -> answer = Request.Method.GET;
+        }
+        return answer;
+    }
+}
diff --git a/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidatorTest.java b/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidatorTest.java
index d1d88a9238c..eb1764b6eaa 100644
--- a/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidatorTest.java
+++ b/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidatorTest.java
@@ -46,21 +46,25 @@ public class OpenApiRestClientRequestValidatorTest extends ExchangeTestSupport {
     @Test
     public void testValidateBody() {
         exchange.setProperty(Exchange.REST_OPENAPI, openAPI);
-        exchange.setProperty(Exchange.CONTENT_TYPE, "application/json");
         exchange.getMessage().setHeader(Exchange.HTTP_METHOD, "PUT");
         exchange.getMessage().setHeader(Exchange.HTTP_PATH, "pet");
+        exchange.getMessage().setHeader("Content-Type", "application/json");
         exchange.getMessage().setHeader("Accept", "application/json");
         exchange.getMessage().setBody("");
 
         RestClientRequestValidator.ValidationError error
                 = validator.validate(exchange, new RestClientRequestValidator.ValidationContext(
                         "application/json", "application/json", true, null, null, null, null));
-
         Assertions.assertNotNull(error);
         Assertions.assertTrue(error.body().contains("A request body is required but none found"));
 
-        exchange.getMessage().setBody("{ some body here }");
+        exchange.getMessage().setBody("{ \"name\": \"tiger\" }");
+        error = validator.validate(exchange, new RestClientRequestValidator.ValidationContext(
+                "application/json", "application/json", true, null, null, null, null));
+        Assertions.assertNotNull(error);
+        Assertions.assertTrue(error.body().contains("Object has missing required properties ([\\\"photoUrls\\\"])"));
 
+        exchange.getMessage().setBody("{ \"name\": \"tiger\", \"photoUrls\": [\"image.jpg\"] }");
         error = validator.validate(exchange, new RestClientRequestValidator.ValidationContext(
                 "application/json", "application/json", true, null, null, null, null));
         Assertions.assertNull(error);
@@ -69,7 +73,6 @@ public class OpenApiRestClientRequestValidatorTest extends ExchangeTestSupport {
     @Test
     public void testValidateQueryParam() {
         exchange.setProperty(Exchange.REST_OPENAPI, openAPI);
-        exchange.setProperty(Exchange.CONTENT_TYPE, "application/json");
         exchange.getMessage().setHeader(Exchange.HTTP_METHOD, "GET");
         exchange.getMessage().setHeader(Exchange.HTTP_PATH, "pet/findByStatus");
         exchange.getMessage().setHeader("Accept", "application/json");
diff --git a/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientResponseValidatorTest.java b/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientResponseValidatorTest.java
new file mode 100644
index 00000000000..cfcae76d543
--- /dev/null
+++ b/components/camel-openapi-validator/src/test/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientResponseValidatorTest.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.rest.openapi.validator.client;
+
+import java.io.IOException;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.parser.OpenAPIV3Parser;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
+import org.apache.camel.Exchange;
+import org.apache.camel.spi.RestClientResponseValidator;
+import org.apache.camel.test.junit5.ExchangeTestSupport;
+import org.apache.camel.util.IOHelper;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+public class OpenApiRestClientResponseValidatorTest extends ExchangeTestSupport {
+
+    static OpenAPI openAPI;
+    static OpenApiRestClientResponseValidator validator;
+
+    @BeforeAll
+    static void setup() throws IOException {
+        String data = IOHelper.loadText(OpenApiRestClientResponseValidatorTest.class.getResourceAsStream("/petstore-v3.json"));
+        OpenAPIV3Parser parser = new OpenAPIV3Parser();
+        SwaggerParseResult out = parser.readContents(data);
+        openAPI = out.getOpenAPI();
+        validator = new OpenApiRestClientResponseValidator();
+    }
+
+    @Test
+    public void testValidateBody() {
+        exchange.setProperty(Exchange.REST_OPENAPI, openAPI);
+        exchange.getMessage().setHeader(Exchange.CONTENT_TYPE, "application/json");
+        exchange.getMessage().setHeader(Exchange.HTTP_METHOD, "PUT");
+        exchange.getMessage().setHeader(Exchange.HTTP_PATH, "pet");
+        exchange.getMessage().setHeader("Accept", "application/json");
+        exchange.getMessage().setBody("");
+
+        RestClientResponseValidator.ValidationError error
+                = validator.validate(exchange, new RestClientResponseValidator.ValidationContext(
+                        "application/json", "application/json", null, null));
+
+        Assertions.assertNotNull(error);
+        Assertions
+                .assertTrue(error.body().contains("PUT on path '/pet' defines a response schema but no response body found."));
+
+        exchange.getMessage().setBody("{ \"name\": \"tiger\" }");
+        error = validator.validate(exchange, new RestClientResponseValidator.ValidationContext(
+                "application/json", "application/json", null, null));
+        Assertions.assertTrue(error.body().contains("Object has missing required properties ([\\\"photoUrls\\\"])"));
+
+        exchange.getMessage().setBody("{ \"name\": \"tiger\", \"photoUrls\": [\"image.jpg\"] }");
+        error = validator.validate(exchange, new RestClientResponseValidator.ValidationContext(
+                "application/json", "application/json", null, null));
+        Assertions.assertNull(error);
+    }
+
+    @Test
+    public void testValidateHeader() {
+        exchange.setProperty(Exchange.REST_OPENAPI, openAPI);
+        exchange.getMessage().setHeader(Exchange.HTTP_METHOD, "GET");
+        exchange.getMessage().setHeader(Exchange.HTTP_PATH, "user/login");
+        exchange.getMessage().setHeader("Accept", "application/json");
+        exchange.getMessage().setBody("{ the user is here }");
+
+        RestClientResponseValidator.ValidationError error
+                = validator.validate(exchange, new RestClientResponseValidator.ValidationContext(
+                        null, "application/json", null, null));
+
+        Assertions.assertNotNull(error);
+        Assertions.assertTrue(
+                error.body().contains("X-Rate-Limit' is expected on path '/user/login' but not found in response."));
+
+        exchange.getMessage().setHeader("X-Rate-Limit", 123);
+
+        error = validator.validate(exchange, new RestClientResponseValidator.ValidationContext(
+                "application/json", "application/json", null, null));
+        Assertions.assertNull(error);
+    }
+}
diff --git a/components/camel-openapi-validator/src/test/resources/petstore-v3.json b/components/camel-openapi-validator/src/test/resources/petstore-v3.json
index 53d445fd579..f0b88bf0d26 100644
--- a/components/camel-openapi-validator/src/test/resources/petstore-v3.json
+++ b/components/camel-openapi-validator/src/test/resources/petstore-v3.json
@@ -767,13 +767,14 @@
             "headers": {
               "X-Rate-Limit": {
                 "description": "calls per hour allowed by the user",
+                "required": true,
                 "schema": {
                   "type": "integer",
                   "format": "int32"
                 }
               },
               "X-Expires-After": {
-                "description": "date in UTC when toekn expires",
+                "description": "date in UTC when token expires",
                 "schema": {
                   "type": "string",
                   "format": "date-time"
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxClientResponseCodeValidationTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxClientResponseCodeValidationTest.java
new file mode 100644
index 00000000000..e19c6945035
--- /dev/null
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxClientResponseCodeValidationTest.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.platform.http.vertx;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.rest.RestBindingMode;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.equalTo;
+
+public class VertxClientResponseCodeValidationTest {
+
+    @Test
+    public void testInvalidResponseCode() throws Exception {
+        final CamelContext context = VertxPlatformHttpEngineTest.createCamelContext();
+
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() throws Exception {
+                    restConfiguration()
+                            .bindingMode(RestBindingMode.json)
+                            // turn on response validation
+                            .clientResponseValidation(true);
+
+                    // use the rest DSL to define the rest services
+                    rest("/users/").post("{id}/update3")
+                            .consumes("application/json").produces("application/json")
+                            .responseMessage().code(200).contentType("application/json").message("updates an user").endResponseMessage()
+                            .to("direct:update");
+                    rest("/users/").post("{id}/update4")
+                            .consumes("application/json").produces("application/xml")
+                            .responseMessage().code(200).contentType("application/xml").message("updates an user")
+                            .header("category").description("The category of the user").endResponseHeader()
+                            .endResponseMessage()
+                            .to("direct:update");
+                    from("direct:update")
+                            .setHeader(Exchange.CONTENT_TYPE, constant("application/xml"))
+                            .setBody(constant("<status>ok</status>"));
+                }
+            });
+
+            context.start();
+
+            given()
+                    .when()
+                    .contentType("application/json")
+                    .body("{\"name\": \"Donald\"}")
+                    .post("/users/123/update3")
+                    .then()
+                    .statusCode(500)
+                    .body(equalTo("Invalid content-type: application/xml for response code: 200"));
+
+            given()
+                    .when()
+                    .contentType("application/json")
+                    .body("{\"name\": \"Donald\"}")
+                    .post("/users/123/update4")
+                    .then()
+                    .statusCode(500)
+                    .body(equalTo("Some of the response HTTP headers are missing."));
+        } finally {
+            context.stop();
+        }
+    }
+
+}
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxInvalidJSonClientRequestValidationTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxInvalidJSonClientRequestValidationTest.java
new file mode 100644
index 00000000000..5f139337b9b
--- /dev/null
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxInvalidJSonClientRequestValidationTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.platform.http.vertx;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.rest.RestBindingMode;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.equalTo;
+
+public class VertxInvalidJSonClientRequestValidationTest {
+
+    @Test
+    public void testInvalidJSon() throws Exception {
+        final CamelContext context = VertxPlatformHttpEngineTest.createCamelContext();
+
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() throws Exception {
+                    restConfiguration()
+                            .bindingMode(RestBindingMode.json)
+                            // turn on request validation
+                            .clientRequestValidation(true);
+
+                    // use the rest DSL to define the rest services
+                    rest("/users/").post("{id}/update2")
+                            .consumes("application/json").produces("application/json")
+                            .to("direct:update");
+                    from("direct:update").setBody(constant("{ \"status\": \"ok\"}"));
+                }
+            });
+
+            context.start();
+
+            given()
+                    .when()
+                    .contentType("application/json")
+                    .body("{\"name\": \"Donald\"") // the body is invalid as the ending } is missing
+                    .post("/users/123/update2")
+                    .then()
+                    .statusCode(400)
+                    .body(equalTo("Invalid JSon payload."));
+        } finally {
+            context.stop();
+        }
+    }
+
+}
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxInvalidJSonClientResponseValidationTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxInvalidJSonClientResponseValidationTest.java
new file mode 100644
index 00000000000..838a2e820ea
--- /dev/null
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxInvalidJSonClientResponseValidationTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.platform.http.vertx;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.rest.RestBindingMode;
+import org.junit.jupiter.api.Test;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.equalTo;
+
+public class VertxInvalidJSonClientResponseValidationTest {
+
+    @Test
+    public void testInvalidJSon() throws Exception {
+        final CamelContext context = VertxPlatformHttpEngineTest.createCamelContext();
+
+        try {
+            context.addRoutes(new RouteBuilder() {
+                @Override
+                public void configure() throws Exception {
+                    restConfiguration()
+                            .bindingMode(RestBindingMode.json)
+                            // turn on response validation
+                            .clientResponseValidation(true);
+
+                    // use the rest DSL to define the rest services
+                    rest("/users/").post("{id}/update")
+                            .consumes("application/json").produces("application/json")
+                            .to("direct:update");
+                    from("direct:update").setBody(constant("{ \"status\": \"ok\"")); // this json is invalid
+                }
+            });
+
+            context.start();
+
+            given()
+                    .when()
+                    .contentType("application/json")
+                    .body("{\"name\": \"Donald\"}")
+                    .post("/users/123/update")
+                    .then()
+                    .statusCode(500)
+                    .body(equalTo("Invalid response JSon payload."));
+        } finally {
+            context.stop();
+        }
+    }
+
+}
diff --git a/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiComponentConfigurer.java b/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiComponentConfigurer.java
index dd7f725a7bb..e66534ce2a8 100644
--- a/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiComponentConfigurer.java
+++ b/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiComponentConfigurer.java
@@ -35,6 +35,8 @@ public class RestOpenApiComponentConfigurer extends PropertyConfigurerSupport im
         case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
         case "clientrequestvalidation":
         case "clientRequestValidation": target.setClientRequestValidation(property(camelContext, boolean.class, value)); return true;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": target.setClientResponseValidation(property(camelContext, boolean.class, value)); return true;
         case "componentname":
         case "componentName": target.setComponentName(property(camelContext, java.lang.String.class, value)); return true;
         case "consumercomponentname":
@@ -77,6 +79,8 @@ public class RestOpenApiComponentConfigurer extends PropertyConfigurerSupport im
         case "bridgeErrorHandler": return boolean.class;
         case "clientrequestvalidation":
         case "clientRequestValidation": return boolean.class;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return boolean.class;
         case "componentname":
         case "componentName": return java.lang.String.class;
         case "consumercomponentname":
@@ -120,6 +124,8 @@ public class RestOpenApiComponentConfigurer extends PropertyConfigurerSupport im
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "clientrequestvalidation":
         case "clientRequestValidation": return target.isClientRequestValidation();
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return target.isClientResponseValidation();
         case "componentname":
         case "componentName": return target.getComponentName();
         case "consumercomponentname":
diff --git a/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointConfigurer.java b/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointConfigurer.java
index 4095e21ff66..5fa644a83f8 100644
--- a/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointConfigurer.java
+++ b/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointConfigurer.java
@@ -31,6 +31,8 @@ public class RestOpenApiEndpointConfigurer extends PropertyConfigurerSupport imp
         case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
         case "clientrequestvalidation":
         case "clientRequestValidation": target.setClientRequestValidation(property(camelContext, boolean.class, value)); return true;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": target.setClientResponseValidation(property(camelContext, boolean.class, value)); return true;
         case "componentname":
         case "componentName": target.setComponentName(property(camelContext, java.lang.String.class, value)); return true;
         case "consumercomponentname":
@@ -67,6 +69,8 @@ public class RestOpenApiEndpointConfigurer extends PropertyConfigurerSupport imp
         case "bridgeErrorHandler": return boolean.class;
         case "clientrequestvalidation":
         case "clientRequestValidation": return boolean.class;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return boolean.class;
         case "componentname":
         case "componentName": return java.lang.String.class;
         case "consumercomponentname":
@@ -104,6 +108,8 @@ public class RestOpenApiEndpointConfigurer extends PropertyConfigurerSupport imp
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "clientrequestvalidation":
         case "clientRequestValidation": return target.isClientRequestValidation();
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return target.isClientResponseValidation();
         case "componentname":
         case "componentName": return target.getComponentName();
         case "consumercomponentname":
diff --git a/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointUriFactory.java b/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointUriFactory.java
index ddfb8196a34..72f3ffd8b82 100644
--- a/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointUriFactory.java
+++ b/components/camel-rest-openapi/src/generated/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpointUriFactory.java
@@ -23,11 +23,12 @@ public class RestOpenApiEndpointUriFactory extends org.apache.camel.support.comp
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(18);
+        Set<String> props = new HashSet<>(19);
         props.add("apiContextPath");
         props.add("basePath");
         props.add("bridgeErrorHandler");
         props.add("clientRequestValidation");
+        props.add("clientResponseValidation");
         props.add("componentName");
         props.add("consumerComponentName");
         props.add("consumes");
diff --git a/components/camel-rest-openapi/src/generated/resources/META-INF/org/apache/camel/component/rest/openapi/rest-openapi.json b/components/camel-rest-openapi/src/generated/resources/META-INF/org/apache/camel/component/rest/openapi/rest-openapi.json
index 2287b3407c3..127b15a76c3 100644
--- a/components/camel-rest-openapi/src/generated/resources/META-INF/org/apache/camel/component/rest/openapi/rest-openapi.json
+++ b/components/camel-rest-openapi/src/generated/resources/META-INF/org/apache/camel/component/rest/openapi/rest-openapi.json
@@ -29,20 +29,21 @@
     "apiContextPath": { "index": 2, "kind": "property", "displayName": "Api Context Path", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the context-path to use for servicing the OpenAPI specification" },
     "bridgeErrorHandler": { "index": 3, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the like [...]
     "clientRequestValidation": { "index": 4, "kind": "property", "displayName": "Client Request Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the incoming request is valid according to the OpenAPI specification" },
-    "missingOperation": { "index": 5, "kind": "property", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
-    "bindingPackageScan": { "index": 6, "kind": "property", "displayName": "Binding Package Scan", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma." },
-    "consumerComponentName": { "index": 7, "kind": "property", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfac [...]
-    "mockIncludePattern": { "index": 8, "kind": "property", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified sepa [...]
-    "restOpenapiProcessorStrategy": { "index": 9, "kind": "property", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
-    "host": { "index": 10, "kind": "property", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a na [...]
-    "lazyStartProducer": { "index": 11, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fai [...]
-    "requestValidationEnabled": { "index": 12, "kind": "property", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
-    "componentName": { "index": 13, "kind": "property", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH [...]
-    "consumes": { "index": 14, "kind": "property", "displayName": "Consumes", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates to the va [...]
-    "produces": { "index": 15, "kind": "property", "displayName": "Produces", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi s [...]
-    "autowiredEnabled": { "index": 16, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching  [...]
-    "sslContextParameters": { "index": 17, "kind": "property", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context" },
-    "useGlobalSslContextParameters": { "index": 18, "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters." }
+    "clientResponseValidation": { "index": 5, "kind": "property", "displayName": "Client Response Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the outgoing response from Camel is valid according to the OpenAPI specification" },
+    "missingOperation": { "index": 6, "kind": "property", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
+    "bindingPackageScan": { "index": 7, "kind": "property", "displayName": "Binding Package Scan", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma." },
+    "consumerComponentName": { "index": 8, "kind": "property", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfac [...]
+    "mockIncludePattern": { "index": 9, "kind": "property", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified sepa [...]
+    "restOpenapiProcessorStrategy": { "index": 10, "kind": "property", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
+    "host": { "index": 11, "kind": "property", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a na [...]
+    "lazyStartProducer": { "index": 12, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fai [...]
+    "requestValidationEnabled": { "index": 13, "kind": "property", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
+    "componentName": { "index": 14, "kind": "property", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH [...]
+    "consumes": { "index": 15, "kind": "property", "displayName": "Consumes", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates to the va [...]
+    "produces": { "index": 16, "kind": "property", "displayName": "Produces", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi s [...]
+    "autowiredEnabled": { "index": 17, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching  [...]
+    "sslContextParameters": { "index": 18, "kind": "property", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context" },
+    "useGlobalSslContextParameters": { "index": 19, "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters." }
   },
   "properties": {
     "specificationUri": { "index": 0, "kind": "path", "displayName": "Specification Uri", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "openapi.json", "description": "Path to the OpenApi specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not  [...]
@@ -50,18 +51,19 @@
     "basePath": { "index": 2, "kind": "parameter", "displayName": "Base Path", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "API basePath, for example \/v3. Default is unset, if set overrides the value present in OpenApi specification and in the component configuration." },
     "apiContextPath": { "index": 3, "kind": "parameter", "displayName": "Api Context Path", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the context-path to use for servicing the OpenAPI specification" },
     "clientRequestValidation": { "index": 4, "kind": "parameter", "displayName": "Client Request Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the incoming request is valid according to the OpenAPI specification" },
-    "consumes": { "index": 5, "kind": "parameter", "displayName": "Consumes", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates or multiple types as applicat [...]
-    "missingOperation": { "index": 6, "kind": "parameter", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
-    "bridgeErrorHandler": { "index": 7, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming  [...]
-    "consumerComponentName": { "index": 8, "kind": "parameter", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfa [...]
-    "exceptionHandler": { "index": 9, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By def [...]
-    "exchangePattern": { "index": 10, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "mockIncludePattern": { "index": 11, "kind": "parameter", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified se [...]
-    "restOpenapiProcessorStrategy": { "index": 12, "kind": "parameter", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
-    "host": { "index": 13, "kind": "parameter", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a n [...]
-    "produces": { "index": 14, "kind": "parameter", "displayName": "Produces", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Overr [...]
-    "requestValidationEnabled": { "index": 15, "kind": "parameter", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
-    "componentName": { "index": 16, "kind": "parameter", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPAT [...]
-    "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
+    "clientResponseValidation": { "index": 5, "kind": "parameter", "displayName": "Client Response Validation", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check if the outgoing response from Camel is valid according to the OpenAPI specification" },
+    "consumes": { "index": 6, "kind": "parameter", "displayName": "Consumes", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component capable of consuming. Could be one type, like application\/json or multiple types as application\/json, application\/xml; q=0.5 according to the RFC7231. This equates or multiple types as applicat [...]
+    "missingOperation": { "index": 7, "kind": "parameter", "displayName": "Missing Operation", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "fail", "ignore", "mock" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "description": "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route." },
+    "bridgeErrorHandler": { "index": 8, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming  [...]
+    "consumerComponentName": { "index": 9, "kind": "parameter", "displayName": "Consumer Component Name", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will service the requests. The component must be present in Camel registry and it must implement RestOpenApiConsumerFactory service provider interfa [...]
+    "exceptionHandler": { "index": 10, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 11, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "mockIncludePattern": { "index": 12, "kind": "parameter", "displayName": "Mock Include Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "classpath:camel-mock\/**", "description": "Used for inclusive filtering of mock data from directories. The pattern is using Ant-path style pattern. Multiple patterns can be specified se [...]
+    "restOpenapiProcessorStrategy": { "index": 13, "kind": "parameter", "displayName": "Rest Openapi Processor Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.rest.openapi.RestOpenapiProcessorStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom strategy for how to process Rest DSL requests" },
+    "host": { "index": 14, "kind": "parameter", "displayName": "Host", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Scheme hostname and port to direct the HTTP requests to in the form of https:\/\/hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a n [...]
+    "produces": { "index": 15, "kind": "parameter", "displayName": "Produces", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "What payload type this component is producing. For example application\/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Overr [...]
+    "requestValidationEnabled": { "index": 16, "kind": "parameter", "displayName": "Request Validation Enabled", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable validation of requests against the configured OpenAPI specification" },
+    "componentName": { "index": 17, "kind": "parameter", "displayName": "Component Name", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPAT [...]
+    "lazyStartProducer": { "index": 18, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
   }
 }
diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
index d5698328f32..9c06f57b0a0 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
@@ -126,6 +126,9 @@ public final class RestOpenApiComponent extends DefaultComponent implements SSLC
     @Metadata(label = "consumer",
               description = "Whether to enable validation of the client request to check if the incoming request is valid according to the OpenAPI specification")
     private boolean clientRequestValidation;
+    @Metadata(label = "consumer",
+              description = "Whether to enable validation of the client request to check if the outgoing response from Camel is valid according to the OpenAPI specification")
+    private boolean clientResponseValidation;
     @Metadata(label = "producer", description = "Enable validation of requests against the configured OpenAPI specification")
     private boolean requestValidationEnabled;
     @Metadata(description = "Whether the consumer should fail,ignore or return a mock response for OpenAPI operations that are not mapped to a corresponding route.",
@@ -160,6 +163,7 @@ public final class RestOpenApiComponent extends DefaultComponent implements SSLC
         endpoint.setBasePath(getBasePath());
         endpoint.setBindingPackageScan(getBindingPackageScan());
         endpoint.setClientRequestValidation(isClientRequestValidation());
+        endpoint.setClientResponseValidation(isClientResponseValidation());
         endpoint.setComponentName(getComponentName());
         endpoint.setConsumerComponentName(getConsumerComponentName());
         endpoint.setConsumes(getConsumes());
@@ -316,6 +320,14 @@ public final class RestOpenApiComponent extends DefaultComponent implements SSLC
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public boolean isClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    public void setClientResponseValidation(boolean clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getBindingPackageScan() {
         return bindingPackageScan;
     }
diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
index ca65bb57979..20429aa8e89 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
@@ -154,6 +154,9 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
     @UriParam(label = "consumer",
               description = "Whether to enable validation of the client request to check if the incoming request is valid according to the OpenAPI specification")
     private boolean clientRequestValidation;
+    @UriParam(label = "consumer",
+              description = "Whether to enable validation of the client request to check if the outgoing response from Camel is valid according to the OpenAPI specification")
+    private boolean clientResponseValidation;
     @UriParam(label = "producer", description = "Enable validation of requests against the configured OpenAPI specification")
     private boolean requestValidationEnabled;
     @UriParam(description = "To use a custom strategy for how to process Rest DSL requests", label = "consumer,advanced")
@@ -436,6 +439,14 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public boolean isClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    public void setClientResponseValidation(boolean clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public RestOpenapiProcessorStrategy getRestOpenapiProcessorStrategy() {
         return restOpenapiProcessorStrategy;
     }
diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
index 626372536f7..1f7218b7f32 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
@@ -200,6 +200,7 @@ public class RestOpenApiProcessor extends DelegateAsyncProcessor implements Came
         bc.setEnableCORS(config.isEnableCORS());
         bc.setCorsHeaders(config.getCorsHeaders());
         bc.setClientRequestValidation(config.isClientRequestValidation() || endpoint.isClientRequestValidation());
+        bc.setClientResponseValidation(config.isClientResponseValidation() || endpoint.isClientResponseValidation());
         bc.setEnableNoContentResponse(config.isEnableNoContentResponse());
         bc.setSkipBindingOnErrorCode(config.isSkipBindingOnErrorCode());
 
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java b/core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java
index 9470e2ba01b..15479e86a9d 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java
@@ -28,7 +28,7 @@ import org.apache.camel.Exchange;
  */
 public interface RestClientRequestValidator {
 
-    String FACTORY = "rest-client-validator-factory";
+    String FACTORY = "rest-client-request-validator-factory";
 
     /**
      * Validation error
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java b/core/camel-api/src/main/java/org/apache/camel/spi/RestClientResponseValidator.java
similarity index 62%
copy from core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java
copy to core/camel-api/src/main/java/org/apache/camel/spi/RestClientResponseValidator.java
index 9470e2ba01b..b01d1dbc7d9 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RestClientRequestValidator.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RestClientResponseValidator.java
@@ -22,13 +22,13 @@ import java.util.Set;
 import org.apache.camel.Exchange;
 
 /**
- * Used for validating incoming client requests with Camel Rest DSL.
+ * Used for validating incoming client responses with Camel Rest DSL.
  * <p>
  * This allows to plugin different validators.
  */
-public interface RestClientRequestValidator {
+public interface RestClientResponseValidator {
 
-    String FACTORY = "rest-client-validator-factory";
+    String FACTORY = "rest-client-response-validator-factory";
 
     /**
      * Validation error
@@ -42,24 +42,17 @@ public interface RestClientRequestValidator {
     /**
      * Validation context to use during validation
      *
-     * @param consumes                content-type this service can consume
-     * @param produces                content-type this service can produce
-     * @param requiredBody            whether the message body is required
-     * @param queryDefaultValues      default values for HTTP query parameters
-     * @param queryAllowedValues      allowed values for HTTP query parameters
-     * @param requiredQueryParameters names of HTTP query parameters that are required
-     * @param requiredHeaders         names of HTTP headers parameters that are required
+     * @param consumes        content-type this service can consume
+     * @param produces        content-type this service can produce
+     * @param responseCode    the different response codes and their content-type
+     * @param responseHeaders the response headers
      */
     record ValidationContext(String consumes, String produces,
-            boolean requiredBody,
-            Map<String, String> queryDefaultValues,
-            Map<String, String> queryAllowedValues,
-            Set<String> requiredQueryParameters,
-            Set<String> requiredHeaders) {
+            Map<String, String> responseCode, Set<String> responseHeaders) {
     }
 
     /**
-     * Validates the incoming client request
+     * Validates the incoming client response
      *
      * @param  exchange          the current exchange
      * @param  validationContent validation context
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java b/core/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
index 0ecd481b5a9..6b4c6844919 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
@@ -67,6 +67,7 @@ public class RestConfiguration {
     private String bindingPackageScan;
     private boolean skipBindingOnErrorCode = true;
     private boolean clientRequestValidation;
+    private boolean clientResponseValidation;
     private boolean inlineRoutes = true;
     private boolean enableCORS;
     private boolean enableNoContentResponse;
@@ -414,8 +415,23 @@ public class RestConfiguration {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public boolean isClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
     /**
-     * To specify whether to enable CORS which means Camel will automatic include CORS in the HTTP headers in the
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public void setClientResponseValidation(boolean clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
+    /**
+     * To specify whether to enable CORS which means Camel will automatically include CORS in the HTTP headers in the
      * response.
      * <p/>
      * This option is default <tt>false</tt>
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/RestConfigurationConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/RestConfigurationConfigurer.java
index 4900a6ff614..0dd2169d743 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/RestConfigurationConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/RestConfigurationConfigurer.java
@@ -41,6 +41,8 @@ public class RestConfigurationConfigurer extends org.apache.camel.support.compon
         case "bindingPackageScan": target.setBindingPackageScan(property(camelContext, java.lang.String.class, value)); return true;
         case "clientrequestvalidation":
         case "clientRequestValidation": target.setClientRequestValidation(property(camelContext, boolean.class, value)); return true;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": target.setClientResponseValidation(property(camelContext, boolean.class, value)); return true;
         case "component": target.setComponent(property(camelContext, java.lang.String.class, value)); return true;
         case "componentproperties":
         case "componentProperties": target.setComponentProperties(property(camelContext, java.util.Map.class, value)); return true;
@@ -102,6 +104,8 @@ public class RestConfigurationConfigurer extends org.apache.camel.support.compon
         case "bindingPackageScan": return java.lang.String.class;
         case "clientrequestvalidation":
         case "clientRequestValidation": return boolean.class;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return boolean.class;
         case "component": return java.lang.String.class;
         case "componentproperties":
         case "componentProperties": return java.util.Map.class;
@@ -164,6 +168,8 @@ public class RestConfigurationConfigurer extends org.apache.camel.support.compon
         case "bindingPackageScan": return target.getBindingPackageScan();
         case "clientrequestvalidation":
         case "clientRequestValidation": return target.isClientRequestValidation();
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return target.isClientResponseValidation();
         case "component": return target.getComponent();
         case "componentproperties":
         case "componentProperties": return target.getComponentProperties();
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/delete.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/delete.json
index ae68c1f76da..a53f94eb88d 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/delete.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/delete.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/get.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/get.json
index 11222cda6be..99f7669ae4c 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/get.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/get.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/head.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/head.json
index 3d9d345020e..bb0601922ac 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/head.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/head.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/patch.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/patch.json
index edcdcf62df2..5ca95be45b8 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/patch.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/patch.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/post.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/post.json
index 6931ae8e516..96272abe037 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/post.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/post.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/put.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/put.json
index 9d40144e8bd..7decb24eee8 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/put.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/put.json
@@ -27,11 +27,12 @@
     "bindingMode": { "index": 12, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off" },
     "skipBindingOnErrorCode": { "index": 13, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 14, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acc [...]
-    "enableCORS": { "index": 15, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 16, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 17, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
-    "deprecated": { "index": 18, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
-    "streamCache": { "index": 19, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
-    "routeId": { "index": 20, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
+    "clientResponseValidation": { "index": 15, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers [...]
+    "enableCORS": { "index": 16, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 17, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 18, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. The default value is true." },
+    "deprecated": { "index": 19, "kind": "attribute", "displayName": "Deprecated", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Marks this rest operation as deprecated in OpenApi documentation." },
+    "streamCache": { "index": 20, "kind": "attribute", "displayName": "Stream Cache", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether stream caching is enabled on this rest operation." },
+    "routeId": { "index": 21, "kind": "attribute", "displayName": "Route Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of the route" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/responseMessage.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/responseMessage.json
index bac95a6e8bd..e43a5b1bb32 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/responseMessage.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/responseMessage.json
@@ -13,9 +13,10 @@
   },
   "properties": {
     "code": { "index": 0, "kind": "attribute", "displayName": "Code", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "200", "description": "The response code such as a HTTP status code" },
-    "message": { "index": 1, "kind": "attribute", "displayName": "Message", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response message (description)" },
-    "responseModel": { "index": 2, "kind": "attribute", "displayName": "Response Model", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response model" },
-    "header": { "index": 3, "kind": "element", "displayName": "Header", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.ResponseHeaderDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Adds a response header" },
-    "examples": { "index": 4, "kind": "element", "displayName": "Examples", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Examples of response messages" }
+    "contentType": { "index": 1, "kind": "attribute", "displayName": "Content Type", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response content-type such as application\/json." },
+    "message": { "index": 2, "kind": "attribute", "displayName": "Message", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response message (description)" },
+    "responseModel": { "index": 3, "kind": "attribute", "displayName": "Response Model", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The response model" },
+    "header": { "index": 4, "kind": "element", "displayName": "Header", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.ResponseHeaderDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Adds a response header" },
+    "examples": { "index": 5, "kind": "element", "displayName": "Examples", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Examples of response messages" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/rest.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/rest.json
index 032828142ef..3b09514b418 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/rest.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/rest.json
@@ -21,12 +21,13 @@
     "bindingMode": { "index": 6, "kind": "attribute", "displayName": "Binding Mode", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "off", "auto", "json", "xml", "json_xml" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "off", "description": "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is auto" },
     "skipBindingOnErrorCode": { "index": 7, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success me [...]
     "clientRequestValidation": { "index": 8, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acce [...]
-    "enableCORS": { "index": 9, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
-    "enableNoContentResponse": { "index": 10, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "apiDocs": { "index": 11, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true." },
-    "tag": { "index": 12, "kind": "attribute", "displayName": "Tag", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To configure a special tag for the operations within this rest definition." },
-    "openApi": { "index": 13, "kind": "element", "displayName": "Open Api", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.OpenApiDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing OpenAPI specification as contract-first for Camel Rest DSL." },
-    "securityDefinitions": { "index": 14, "kind": "element", "displayName": "Security Definitions", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.RestSecuritiesDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security definitions such as Basic, OAuth2 etc." },
-    "securityRequirements": { "index": 15, "kind": "element", "displayName": "Security Requirements", "group": "security", "label": "security", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.SecurityDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security requirement(s) for all endpoints." }
+    "clientResponseValidation": { "index": 9, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers  [...]
+    "enableCORS": { "index": 10, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false." },
+    "enableNoContentResponse": { "index": 11, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "apiDocs": { "index": 12, "kind": "attribute", "displayName": "Api Docs", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true." },
+    "tag": { "index": 13, "kind": "attribute", "displayName": "Tag", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To configure a special tag for the operations within this rest definition." },
+    "openApi": { "index": 14, "kind": "element", "displayName": "Open Api", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.OpenApiDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing OpenAPI specification as contract-first for Camel Rest DSL." },
+    "securityDefinitions": { "index": 15, "kind": "element", "displayName": "Security Definitions", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.model.rest.RestSecuritiesDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security definitions such as Basic, OAuth2 etc." },
+    "securityRequirements": { "index": 16, "kind": "element", "displayName": "Security Requirements", "group": "security", "label": "security", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.SecurityDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the security requirement(s) for all endpoints." }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restBinding.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restBinding.json
index 87f2cc574da..ecf0fad99b1 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restBinding.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restBinding.json
@@ -21,8 +21,9 @@
     "outType": { "index": 6, "kind": "attribute", "displayName": "Out Type", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the class name to use for binding from POJO to output for the outgoing data The name of the class of the input data. Append a to the end of the name if you want the input to be an array type." },
     "skipBindingOnErrorCode": { "index": 7, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success me [...]
     "clientRequestValidation": { "index": 8, "kind": "attribute", "displayName": "Client Request Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Acce [...]
-    "enableCORS": { "index": 9, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
-    "enableNoContentResponse": { "index": 10, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "component": { "index": 11, "kind": "attribute", "displayName": "Component", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the component name that this definition will apply to" }
+    "clientResponseValidation": { "index": 9, "kind": "attribute", "displayName": "Client Response Validation", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers  [...]
+    "enableCORS": { "index": 10, "kind": "attribute", "displayName": "Enable CORS", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
+    "enableNoContentResponse": { "index": 11, "kind": "attribute", "displayName": "Enable No Content Response", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "component": { "index": 12, "kind": "attribute", "displayName": "Component", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the component name that this definition will apply to" }
   }
 }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restConfiguration.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restConfiguration.json
index 740a4708e86..a1da1650ec6 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restConfiguration.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/rest/restConfiguration.json
@@ -30,16 +30,17 @@
     "bindingPackageScan": { "index": 15, "kind": "attribute", "displayName": "Binding Package Scan", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma." },
     "skipBindingOnErrorCode": { "index": 16, "kind": "attribute", "displayName": "Skip Binding On Error Code", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json \/ xml etc, as success m [...]
     "clientRequestValidation": { "index": 17, "kind": "attribute", "displayName": "Client Request Validation", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if vali [...]
-    "enableCORS": { "index": 18, "kind": "attribute", "displayName": "Enable CORS", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
-    "enableNoContentResponse": { "index": 19, "kind": "attribute", "displayName": "Enable No Content Response", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
-    "inlineRoutes": { "index": 20, "kind": "attribute", "displayName": "Inline Routes", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Inline routes in rest-dsl which are linked using direct endpoints. Each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the  [...]
-    "jsonDataFormat": { "index": 21, "kind": "attribute", "displayName": "Json Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
-    "xmlDataFormat": { "index": 22, "kind": "attribute", "displayName": "Xml Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
-    "componentProperty": { "index": 23, "kind": "element", "displayName": "Component Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest component in use." },
-    "endpointProperty": { "index": 24, "kind": "element", "displayName": "Endpoint Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest endpoint in use." },
-    "consumerProperty": { "index": 25, "kind": "element", "displayName": "Consumer Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest consumer in use." },
-    "dataFormatProperty": { "index": 26, "kind": "element", "displayName": "Data Format Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the data formats in use. For example set property prettyPrint to true to have json outputted in pretty mo [...]
-    "apiProperty": { "index": 27, "kind": "element", "displayName": "Api Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the api documentation. For example set property api.title to my cool stuff" },
-    "corsHeaders": { "index": 28, "kind": "element", "displayName": "Cors Headers", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure custom CORS headers." }
+    "clientResponseValidation": { "index": 18, "kind": "attribute", "displayName": "Client Response Validation", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whet [...]
+    "enableCORS": { "index": 19, "kind": "attribute", "displayName": "Enable CORS", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to enable CORS headers in the HTTP response. The default value is false." },
+    "enableNoContentResponse": { "index": 20, "kind": "attribute", "displayName": "Enable No Content Response", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false." },
+    "inlineRoutes": { "index": 21, "kind": "attribute", "displayName": "Inline Routes", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Inline routes in rest-dsl which are linked using direct endpoints. Each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the  [...]
+    "jsonDataFormat": { "index": 22, "kind": "attribute", "displayName": "Json Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
+    "xmlDataFormat": { "index": 23, "kind": "attribute", "displayName": "Xml Data Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance." },
+    "componentProperty": { "index": 24, "kind": "element", "displayName": "Component Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest component in use." },
+    "endpointProperty": { "index": 25, "kind": "element", "displayName": "Endpoint Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest endpoint in use." },
+    "consumerProperty": { "index": 26, "kind": "element", "displayName": "Consumer Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the rest consumer in use." },
+    "dataFormatProperty": { "index": 27, "kind": "element", "displayName": "Data Format Property", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the data formats in use. For example set property prettyPrint to true to have json outputted in pretty mo [...]
+    "apiProperty": { "index": 28, "kind": "element", "displayName": "Api Property", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure as many additional properties for the api documentation. For example set property api.title to my cool stuff" },
+    "corsHeaders": { "index": 29, "kind": "element", "displayName": "Cors Headers", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.rest.RestPropertyDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to configure custom CORS headers." }
   }
 }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/ResponseMessageDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/ResponseMessageDefinition.java
index ef7d72584d8..d103427879d 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/ResponseMessageDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/ResponseMessageDefinition.java
@@ -43,6 +43,8 @@ public class ResponseMessageDefinition {
     @XmlAttribute
     @Metadata(defaultValue = "200")
     private String code;
+    @XmlAttribute
+    private String contentType;
     @XmlAttribute(required = true)
     private String message;
     @XmlAttribute
@@ -70,6 +72,14 @@ public class ResponseMessageDefinition {
         this.code = code;
     }
 
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
     public String getResponseModel() {
         return responseModel;
     }
@@ -122,6 +132,14 @@ public class ResponseMessageDefinition {
         return this;
     }
 
+    /**
+     * The response content-type such as application/json.
+     */
+    public ResponseMessageDefinition contentType(String contentType) {
+        setContentType(contentType);
+        return this;
+    }
+
     /**
      * The response message (description)
      */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
index bb53392c9f2..6eb5f400d21 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
@@ -48,6 +48,10 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
     private Set<String> requiredHeaders;
     @XmlTransient
     private Set<String> requiredQueryParameters;
+    @XmlTransient
+    private Map<String, String> responseCodes;
+    @XmlTransient
+    private Set<String> responseHeaders;
 
     @XmlAttribute
     private String consumes;
@@ -74,6 +78,9 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
     private String clientRequestValidation;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
+    private String clientResponseValidation;
+    @XmlAttribute
+    @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
     private String enableCORS;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
@@ -136,6 +143,38 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
         return requiredQueryParameters;
     }
 
+    /**
+     * Adds a response code
+     */
+    public void addResponseCode(String code, String contentType) {
+        if (responseCodes == null) {
+            responseCodes = new HashMap<>();
+        }
+        responseCodes.put(code, contentType);
+    }
+
+    public Map<String, String> getResponseCodes() {
+        return responseCodes;
+    }
+
+    /**
+     * Adds a response code
+     */
+    public void addResponseHeader(String headerName) {
+        // content-type header should be skipped
+        if ("content-type".equalsIgnoreCase(headerName)) {
+            return;
+        }
+        if (responseHeaders == null) {
+            responseHeaders = new HashSet<>();
+        }
+        responseHeaders.add(headerName);
+    }
+
+    public Set<String> getResponseHeaders() {
+        return responseHeaders;
+    }
+
     /**
      * Adds a required HTTP header
      *
@@ -296,6 +335,21 @@ public class RestBindingDefinition extends OptionalIdentifiedDefinition<RestBind
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getEnableCORS() {
         return enableCORS;
     }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
index 400ee466fd6..69b4bd44fd3 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
@@ -93,6 +93,9 @@ public class RestConfigurationDefinition {
     private String clientRequestValidation;
     @XmlAttribute
     @Metadata(label = "consumer,advanced", javaType = "java.lang.Boolean", defaultValue = "false")
+    private String clientResponseValidation;
+    @XmlAttribute
+    @Metadata(label = "consumer,advanced", javaType = "java.lang.Boolean", defaultValue = "false")
     private String enableCORS;
     @XmlAttribute
     @Metadata(label = "consumer,advanced", javaType = "java.lang.Boolean", defaultValue = "false")
@@ -356,6 +359,21 @@ public class RestConfigurationDefinition {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getEnableCORS() {
         return enableCORS;
     }
@@ -724,6 +742,30 @@ public class RestConfigurationDefinition {
         return this;
     }
 
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public RestConfigurationDefinition clientResponseValidation(boolean clientResponseValidation) {
+        setClientResponseValidation(clientResponseValidation ? "true" : "false");
+        return this;
+    }
+
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public RestConfigurationDefinition clientResponseValidation(String clientResponseValidation) {
+        setClientResponseValidation(clientResponseValidation);
+        return this;
+    }
+
     /**
      * To specify whether to enable CORS which means Camel will automatic include CORS in the HTTP headers in the
      * response.
@@ -989,6 +1031,9 @@ public class RestConfigurationDefinition {
         if (clientRequestValidation != null) {
             target.setClientRequestValidation(CamelContextHelper.parseBoolean(context, clientRequestValidation));
         }
+        if (clientResponseValidation != null) {
+            target.setClientResponseValidation(CamelContextHelper.parseBoolean(context, clientResponseValidation));
+        }
         if (enableCORS != null) {
             target.setEnableCORS(CamelContextHelper.parseBoolean(context, enableCORS));
         }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
index 9b20ec0165b..dcf9912bc08 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
@@ -85,6 +85,9 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
     private String clientRequestValidation;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
+    private String clientResponseValidation;
+    @XmlAttribute
+    @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
     private String enableCORS;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
@@ -251,6 +254,21 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getEnableCORS() {
         return enableCORS;
     }
@@ -687,6 +705,18 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
         return this;
     }
 
+    public RestDefinition clientResponseValidation(boolean clientResponseValidation) {
+        if (getVerbs().isEmpty()) {
+            this.clientResponseValidation = Boolean.toString(clientResponseValidation);
+        } else {
+            // add on last verb as that is how the Java DSL works
+            VerbDefinition verb = getVerbs().get(getVerbs().size() - 1);
+            verb.setClientResponseValidation(Boolean.toString(clientResponseValidation));
+        }
+
+        return this;
+    }
+
     public RestDefinition enableCORS(boolean enableCORS) {
         if (getVerbs().isEmpty()) {
             this.enableCORS = Boolean.toString(enableCORS);
@@ -1169,6 +1199,11 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
             } else {
                 binding.setClientRequestValidation(getClientRequestValidation());
             }
+            if (verb.getClientResponseValidation() != null) {
+                binding.setClientResponseValidation(parseText(camelContext, verb.getClientResponseValidation()));
+            } else {
+                binding.setClientResponseValidation(getClientResponseValidation());
+            }
             if (verb.getEnableCORS() != null) {
                 binding.setEnableCORS(parseText(camelContext, verb.getEnableCORS()));
             } else {
@@ -1182,27 +1217,37 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
             for (ParamDefinition param : verb.getParams()) {
                 // register all the default values for the query and header parameters
                 RestParamType type = param.getType();
+                String name = parseText(camelContext, param.getName());
                 if ((RestParamType.query == type || RestParamType.header == type)
                         && ObjectHelper.isNotEmpty(param.getDefaultValue())) {
-                    binding.addDefaultValue(param.getName(), parseText(camelContext, param.getDefaultValue()));
+                    binding.addDefaultValue(name, parseText(camelContext, param.getDefaultValue()));
                 }
                 // register all allowed values for the query and header parameters
                 if ((RestParamType.query == type || RestParamType.header == type)
                         && param.getAllowableValues() != null) {
-                    binding.addAllowedValue(param.getName(), parseText(camelContext, param.getAllowableValuesAsCommaString()));
+                    binding.addAllowedValue(name, parseText(camelContext, param.getAllowableValuesAsCommaString()));
                 }
                 // register which parameters are required
                 Boolean required = param.getRequired();
                 if (required != null && required) {
                     if (RestParamType.query == type) {
-                        binding.addRequiredQueryParameter(param.getName());
+                        binding.addRequiredQueryParameter(name);
                     } else if (RestParamType.header == type) {
-                        binding.addRequiredHeader(param.getName());
+                        binding.addRequiredHeader(name);
                     } else if (RestParamType.body == type) {
                         binding.setRequiredBody(true);
                     }
                 }
             }
+            for (ResponseMessageDefinition rm : verb.getResponseMsgs()) {
+                binding.addResponseCode(rm.getCode(), rm.getContentType());
+                if (rm.getHeaders() != null) {
+                    for (var header : rm.getHeaders()) {
+                        String name = parseText(camelContext, header.getName());
+                        binding.addResponseHeader(name);
+                    }
+                }
+            }
 
             route.setRestBindingDefinition(binding);
 
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
index d0e96f54488..69ccfd651ad 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/VerbDefinition.java
@@ -77,6 +77,9 @@ public abstract class VerbDefinition extends OptionalIdentifiedDefinition<VerbDe
     private String clientRequestValidation;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
+    private String clientResponseValidation;
+    @XmlAttribute
+    @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
     private String enableCORS;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "java.lang.Boolean", defaultValue = "false")
@@ -279,6 +282,21 @@ public abstract class VerbDefinition extends OptionalIdentifiedDefinition<VerbDe
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public String getClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public void setClientResponseValidation(String clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public String getEnableCORS() {
         return enableCORS;
     }
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
index 670568f79c5..7798198e7e6 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
@@ -66,6 +66,11 @@ public class RestBindingReifier extends AbstractReifier {
             validation = parseBoolean(definition.getClientRequestValidation(), false);
         }
         rbc.setClientRequestValidation(validation);
+        validation = config.isClientResponseValidation();
+        if (definition.getClientResponseValidation() != null) {
+            validation = parseBoolean(definition.getClientResponseValidation(), false);
+        }
+        rbc.setClientResponseValidation(validation);
         rbc.setConsumes(parseString(definition.getConsumes()));
         rbc.setProduces(parseString(definition.getProduces()));
         rbc.setCorsHeaders(config.getCorsHeaders());
@@ -78,6 +83,8 @@ public class RestBindingReifier extends AbstractReifier {
         rbc.setTypeClass(definition.getTypeClass());
         rbc.setOutType(parseString(definition.getOutType()));
         rbc.setOutTypeClass(definition.getOutTypeClass());
+        rbc.setResponseCodes(definition.getResponseCodes());
+        rbc.setResponseHeaders(definition.getResponseHeaders());
 
         // use factory to create advice
         return RestBindingAdviceFactory.build(camelContext, rbc);
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java
index 7a0c05825fa..10a21a902d2 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java
@@ -31,6 +31,7 @@ public class RestConfigurationPropertiesConfigurer extends org.apache.camel.supp
         map.put("BindingMode", java.lang.String.class);
         map.put("BindingPackageScan", java.lang.String.class);
         map.put("ClientRequestValidation", boolean.class);
+        map.put("ClientResponseValidation", boolean.class);
         map.put("Component", java.lang.String.class);
         map.put("ComponentProperties", java.util.Map.class);
         map.put("ConsumerProperties", java.util.Map.class);
@@ -76,6 +77,8 @@ public class RestConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "bindingPackageScan": target.setBindingPackageScan(property(camelContext, java.lang.String.class, value)); return true;
         case "clientrequestvalidation":
         case "clientRequestValidation": target.setClientRequestValidation(property(camelContext, boolean.class, value)); return true;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": target.setClientResponseValidation(property(camelContext, boolean.class, value)); return true;
         case "component": target.setComponent(property(camelContext, java.lang.String.class, value)); return true;
         case "componentproperties":
         case "componentProperties": target.setComponentProperties(property(camelContext, java.util.Map.class, value)); return true;
@@ -142,6 +145,8 @@ public class RestConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "bindingPackageScan": return java.lang.String.class;
         case "clientrequestvalidation":
         case "clientRequestValidation": return boolean.class;
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return boolean.class;
         case "component": return java.lang.String.class;
         case "componentproperties":
         case "componentProperties": return java.util.Map.class;
@@ -204,6 +209,8 @@ public class RestConfigurationPropertiesConfigurer extends org.apache.camel.supp
         case "bindingPackageScan": return target.getBindingPackageScan();
         case "clientrequestvalidation":
         case "clientRequestValidation": return target.isClientRequestValidation();
+        case "clientresponsevalidation":
+        case "clientResponseValidation": return target.isClientResponseValidation();
         case "component": return target.getComponent();
         case "componentproperties":
         case "componentProperties": return target.getComponentProperties();
diff --git a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index 6435a1d6bcc..339f9e360d2 100644
--- a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -262,6 +262,7 @@
     { "name": "camel.rest.bindingMode", "description": "Sets the binding mode to be used by the REST consumer", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "object", "javaType": "org.apache.camel.spi.RestBindingMode", "defaultValue": "RestBindingMode.off", "enum": [ "auto", "off", "json", "xml", "json_xml" ] },
     { "name": "camel.rest.bindingPackageScan", "description": "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma.", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.rest.clientRequestValidation", "description": "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or  [...]
+    { "name": "camel.rest.clientResponseValidation", "description": "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "boolean", "java [...]
     { "name": "camel.rest.component", "description": "Sets the name of the Camel component to use as the REST consumer", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.rest.componentProperties", "description": "Sets additional options on component level", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "object", "javaType": "java.util.Map" },
     { "name": "camel.rest.consumerProperties", "description": "Sets additional options on consumer level", "sourceType": "org.apache.camel.spi.RestConfiguration", "type": "object", "javaType": "java.util.Map" },
diff --git a/core/camel-main/src/main/docs/main.adoc b/core/camel-main/src/main/docs/main.adoc
index 75097722a2d..4ebb925893b 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -363,7 +363,7 @@ The camel.health supports 8 options, which are listed below.
 
 
 === Camel Rest-DSL configurations
-The camel.rest supports 29 options, which are listed below.
+The camel.rest supports 30 options, which are listed below.
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
@@ -377,6 +377,7 @@ The camel.rest supports 29 options, which are listed below.
 | *camel.rest.bindingMode* | Sets the binding mode to be used by the REST consumer | RestBindingMode.off | RestBindingMode
 | *camel.rest.bindingPackageScan* | Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma. |  | String
 | *camel.rest.clientRequest{zwsp}Validation* | Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode mus [...]
+| *camel.rest.clientResponse{zwsp}Validation* | Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. | false | boolean
 | *camel.rest.component* | Sets the name of the Camel component to use as the REST consumer |  | String
 | *camel.rest.componentProperties* | Sets additional options on component level |  | Map
 | *camel.rest.consumerProperties* | Sets additional options on consumer level |  | Map
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/RestConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/RestConfigurationProperties.java
index cd0a08f9cf2..11fd5db35c8 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/RestConfigurationProperties.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/RestConfigurationProperties.java
@@ -243,6 +243,18 @@ public class RestConfigurationProperties extends RestConfiguration implements Bo
         return this;
     }
 
+    /**
+     * Whether to check what Camel is returning as response to the client:
+     *
+     * 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included
+     * according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid
+     * JSon. Returns 500 if validation error detected.
+     */
+    public RestConfigurationProperties withClientResponseValidation(boolean clientResponseValidation) {
+        setClientResponseValidation(clientResponseValidation);
+        return this;
+    }
+
     /**
      * Whether to enable CORS headers in the HTTP response.
      * <p/>
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultRestClientResponseValidator.java b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultRestClientResponseValidator.java
new file mode 100644
index 00000000000..4f9f32a0851
--- /dev/null
+++ b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultRestClientResponseValidator.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.support.processor;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.spi.RestClientResponseValidator;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.MessageHelper;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.json.DeserializationException;
+import org.apache.camel.util.json.Jsoner;
+
+import static org.apache.camel.support.http.RestUtil.isValidOrAcceptedContentType;
+
+public class DefaultRestClientResponseValidator implements RestClientResponseValidator {
+
+    @Override
+    public ValidationError validate(Exchange exchange, ValidationContext validationContext) {
+        String contentType = ExchangeHelper.getContentType(exchange);
+
+        // does the content-type match for the given response codes
+        if (contentType != null && validationContext.responseCode() != null) {
+            String code = exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE, "200", String.class);
+            String found = null;
+            for (var e : validationContext.responseCode().entrySet()) {
+                String k = e.getKey();
+                if (code.equals(k)) {
+                    found = e.getValue();
+                }
+            }
+            // if no direct found then see if there is a default code
+            if (found == null) {
+                found = validationContext.responseCode().get("default");
+            }
+            if (found != null) {
+                if (!isValidOrAcceptedContentType(found, contentType)) {
+                    return new ValidationError(500, "Invalid content-type: " + contentType + " for response code: " + code);
+                }
+            }
+        }
+        // check for response http headers
+        if (validationContext.responseHeaders() != null
+                && !exchange.getMessage().getHeaders().keySet().containsAll(validationContext.responseHeaders())) {
+            return new ValidationError(500, "Some of the response HTTP headers are missing.");
+        }
+
+        Object body = exchange.getMessage().getBody();
+        // if content-type is json then lets validate the message body can be parsed to json
+        if (body != null && contentType != null && isValidOrAcceptedContentType("application/json", contentType)) {
+            String json = MessageHelper.extractBodyAsString(exchange.getIn());
+            if (!ObjectHelper.isEmpty(json)) {
+                try {
+                    Jsoner.deserialize(json);
+                } catch (DeserializationException e) {
+                    // request payload is not json
+                    return new ValidationError(500, "Invalid response JSon payload.");
+                }
+            }
+        }
+
+        // success
+        return null;
+    }
+
+}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdvice.java b/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdvice.java
index 9c5db6b4fc9..d60998ee062 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdvice.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdvice.java
@@ -31,14 +31,13 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.DataTypeAware;
 import org.apache.camel.spi.RestClientRequestValidator;
+import org.apache.camel.spi.RestClientResponseValidator;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Used for Rest DSL with binding to json/xml for incoming requests and outgoing responses.
@@ -52,13 +51,13 @@ import org.slf4j.LoggerFactory;
  */
 public class RestBindingAdvice extends ServiceSupport implements CamelInternalProcessorAdvice<Map<String, Object>> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RestBindingAdvice.class);
     private static final String STATE_KEY_DO_MARSHAL = "doMarshal";
     private static final String STATE_KEY_ACCEPT = "accept";
     private static final String STATE_JSON = "json";
     private static final String STATE_XML = "xml";
 
     private final RestClientRequestValidator clientRequestValidator;
+    private final RestClientResponseValidator clientResponseValidator;
     private final AsyncProcessor jsonUnmarshal;
     private final AsyncProcessor xmlUnmarshal;
     private final AsyncProcessor jsonMarshal;
@@ -68,6 +67,7 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
     private final String bindingMode;
     private final boolean skipBindingOnErrorCode;
     private final boolean clientRequestValidation;
+    private final boolean clientResponseValidation;
     private final boolean enableCORS;
     private final boolean enableNoContentResponse;
     private final Map<String, String> corsHeaders;
@@ -76,6 +76,8 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
     private final boolean requiredBody;
     private final Set<String> requiredQueryParameters;
     private final Set<String> requiredHeaders;
+    private final Map<String, String> responseCodes;
+    private final Set<String> responseHeaders;
 
     /**
      * Use {@link RestBindingAdviceFactory} to create.
@@ -83,14 +85,16 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
     public RestBindingAdvice(CamelContext camelContext, DataFormat jsonDataFormat, DataFormat xmlDataFormat,
                              DataFormat outJsonDataFormat, DataFormat outXmlDataFormat,
                              String consumes, String produces, String bindingMode,
-                             boolean skipBindingOnErrorCode, boolean clientRequestValidation, boolean enableCORS,
-                             boolean enableNoContentResponse,
+                             boolean skipBindingOnErrorCode, boolean clientRequestValidation, boolean clientResponseValidation,
+                             boolean enableCORS, boolean enableNoContentResponse,
                              Map<String, String> corsHeaders,
                              Map<String, String> queryDefaultValues,
                              Map<String, String> queryAllowedValues,
                              boolean requiredBody, Set<String> requiredQueryParameters,
                              Set<String> requiredHeaders,
-                             RestClientRequestValidator clientRequestValidator) throws Exception {
+                             Map<String, String> responseCodes, Set<String> responseHeaders,
+                             RestClientRequestValidator clientRequestValidator,
+                             RestClientResponseValidator clientResponseValidator) throws Exception {
 
         if (jsonDataFormat != null) {
             this.jsonUnmarshal = new UnmarshalProcessor(jsonDataFormat);
@@ -136,6 +140,7 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
         this.bindingMode = bindingMode;
         this.skipBindingOnErrorCode = skipBindingOnErrorCode;
         this.clientRequestValidation = clientRequestValidation;
+        this.clientResponseValidation = clientResponseValidation;
         this.enableCORS = enableCORS;
         this.corsHeaders = corsHeaders;
         this.queryDefaultValues = queryDefaultValues;
@@ -143,8 +148,11 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
         this.requiredBody = requiredBody;
         this.requiredQueryParameters = requiredQueryParameters;
         this.requiredHeaders = requiredHeaders;
+        this.responseCodes = responseCodes;
+        this.responseHeaders = responseHeaders;
         this.enableNoContentResponse = enableNoContentResponse;
         this.clientRequestValidator = clientRequestValidator;
+        this.clientResponseValidator = clientResponseValidator;
     }
 
     @Override
@@ -223,7 +231,7 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
         }
 
         // perform client request validation
-        if (clientRequestValidation) {
+        if (clientRequestValidation && clientRequestValidator != null) {
             RestClientRequestValidator.ValidationContext vc = new RestClientRequestValidator.ValidationContext(
                     consumes, produces, requiredBody, queryDefaultValues, queryAllowedValues, requiredQueryParameters,
                     requiredHeaders);
@@ -464,6 +472,17 @@ public class RestBindingAdvice extends ServiceSupport implements CamelInternalPr
         } catch (Exception e) {
             exchange.setException(e);
         }
+
+        // perform client response validation
+        if (clientResponseValidation && clientResponseValidator != null && !exchange.isFailed()) {
+            RestClientResponseValidator.ValidationContext vc = new RestClientResponseValidator.ValidationContext(
+                    consumes, produces, responseCodes, responseHeaders);
+            RestClientResponseValidator.ValidationError error = clientResponseValidator.validate(exchange, vc);
+            if (error != null) {
+                exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, error.statusCode());
+                exchange.getMessage().setBody(error.body());
+            }
+        }
     }
 
     private void setOutputDataType(Exchange exchange, DataType type) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdviceFactory.java b/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdviceFactory.java
index 97d9ace0504..b381c6fb7f9 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdviceFactory.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingAdviceFactory.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.RestClientRequestValidator;
+import org.apache.camel.spi.RestClientResponseValidator;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.EndpointHelper;
@@ -118,18 +119,21 @@ public class RestBindingAdviceFactory {
             }
         }
 
-        RestClientRequestValidator validator = null;
+        RestClientRequestValidator requestValidator = null;
         if (bc.isClientRequestValidation()) {
-            validator = lookupRestClientRequestValidator(camelContext);
+            requestValidator = lookupRestClientRequestValidator(camelContext);
+        }
+        RestClientResponseValidator responseValidator = null;
+        if (bc.isClientResponseValidation()) {
+            responseValidator = lookupRestClientResponseValidator(camelContext);
         }
 
         return new RestBindingAdvice(
                 camelContext, json, jaxb, outJson, outJaxb,
                 bc.getConsumes(), bc.getProduces(), mode, bc.isSkipBindingOnErrorCode(), bc.isClientRequestValidation(),
-                bc.isEnableCORS(),
-                bc.isEnableNoContentResponse(), bc.getCorsHeaders(),
+                bc.isClientResponseValidation(), bc.isEnableCORS(), bc.isEnableNoContentResponse(), bc.getCorsHeaders(),
                 bc.getQueryDefaultValues(), bc.getQueryAllowedValues(), bc.isRequiredBody(), bc.getRequiredQueryParameters(),
-                bc.getRequiredHeaders(), validator);
+                bc.getRequiredHeaders(), bc.getResponseCodes(), bc.getResponseHeaders(), requestValidator, responseValidator);
     }
 
     protected static void setupJson(
@@ -193,6 +197,22 @@ public class RestBindingAdviceFactory {
         return answer;
     }
 
+    protected static RestClientResponseValidator lookupRestClientResponseValidator(CamelContext camelContext) {
+        RestClientResponseValidator answer
+                = CamelContextHelper.findSingleByType(camelContext, RestClientResponseValidator.class);
+        if (answer == null) {
+            // lookup via classpath to find custom factory
+            Optional<RestClientResponseValidator> result = ResolverHelper.resolveService(
+                    camelContext,
+                    camelContext.getCamelContextExtension().getBootstrapFactoryFinder(),
+                    RestClientResponseValidator.FACTORY,
+                    RestClientResponseValidator.class);
+            // else use a default implementation
+            answer = result.orElseGet(DefaultRestClientResponseValidator::new);
+        }
+        return answer;
+    }
+
     private static void setAdditionalConfiguration(
             CamelContext camelContext, RestConfiguration config, DataFormat dataFormat, String prefix) {
         if (config.getDataFormatProperties() != null && !config.getDataFormatProperties().isEmpty()) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingConfiguration.java b/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingConfiguration.java
index d1c7e2f0a62..4a9b55ab5ee 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingConfiguration.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/processor/RestBindingConfiguration.java
@@ -30,6 +30,7 @@ public class RestBindingConfiguration {
     private String bindingPackageScan;
     private boolean skipBindingOnErrorCode;
     private boolean clientRequestValidation;
+    private boolean clientResponseValidation;
     private boolean enableCORS;
     private boolean enableNoContentResponse;
     private Map<String, String> corsHeaders;
@@ -42,6 +43,8 @@ public class RestBindingConfiguration {
     private Class<?> typeClass;
     private String outType;
     private Class<?> outTypeClass;
+    private Map<String, String> responseCodes;
+    private Set<String> responseHeaders;
 
     public String getConsumes() {
         return consumes;
@@ -91,6 +94,14 @@ public class RestBindingConfiguration {
         this.clientRequestValidation = clientRequestValidation;
     }
 
+    public boolean isClientResponseValidation() {
+        return clientResponseValidation;
+    }
+
+    public void setClientResponseValidation(boolean clientResponseValidation) {
+        this.clientResponseValidation = clientResponseValidation;
+    }
+
     public boolean isEnableCORS() {
         return enableCORS;
     }
@@ -186,4 +197,20 @@ public class RestBindingConfiguration {
     public void setOutTypeClass(Class<?> outTypeClass) {
         this.outTypeClass = outTypeClass;
     }
+
+    public Map<String, String> getResponseCodes() {
+        return responseCodes;
+    }
+
+    public void setResponseCodes(Map<String, String> responseCodes) {
+        this.responseCodes = responseCodes;
+    }
+
+    public Set<String> getResponseHeaders() {
+        return responseHeaders;
+    }
+
+    public void setResponseHeaders(Set<String> responseHeaders) {
+        this.responseHeaders = responseHeaders;
+    }
 }
diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
index 37e5bb36eda..d2b7a68b922 100644
--- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
+++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
@@ -931,6 +931,7 @@ public class ModelParser extends BaseParser {
                 case "apiDocs": def.setApiDocs(val); yield true;
                 case "bindingMode": def.setBindingMode(val); yield true;
                 case "clientRequestValidation": def.setClientRequestValidation(val); yield true;
+                case "clientResponseValidation": def.setClientResponseValidation(val); yield true;
                 case "consumes": def.setConsumes(val); yield true;
                 case "disabled": def.setDisabled(val); yield true;
                 case "enableCORS": def.setEnableCORS(val); yield true;
@@ -957,6 +958,7 @@ public class ModelParser extends BaseParser {
         return doParse(new RestBindingDefinition(), (def, key, val) -> switch (key) {
                 case "bindingMode": def.setBindingMode(val); yield true;
                 case "clientRequestValidation": def.setClientRequestValidation(val); yield true;
+                case "clientResponseValidation": def.setClientResponseValidation(val); yield true;
                 case "component": def.setComponent(val); yield true;
                 case "consumes": def.setConsumes(val); yield true;
                 case "enableCORS": def.setEnableCORS(val); yield true;
@@ -1431,6 +1433,7 @@ public class ModelParser extends BaseParser {
                 case "bindingMode": def.setBindingMode(RestBindingMode.valueOf(val)); yield true;
                 case "bindingPackageScan": def.setBindingPackageScan(val); yield true;
                 case "clientRequestValidation": def.setClientRequestValidation(val); yield true;
+                case "clientResponseValidation": def.setClientResponseValidation(val); yield true;
                 case "component": def.setComponent(val); yield true;
                 case "contextPath": def.setContextPath(val); yield true;
                 case "enableCORS": def.setEnableCORS(val); yield true;
@@ -2570,6 +2573,7 @@ public class ModelParser extends BaseParser {
             case "apiDocs": def.setApiDocs(val); yield true;
             case "bindingMode": def.setBindingMode(val); yield true;
             case "clientRequestValidation": def.setClientRequestValidation(val); yield true;
+            case "clientResponseValidation": def.setClientResponseValidation(val); yield true;
             case "consumes": def.setConsumes(val); yield true;
             case "deprecated": def.setDeprecated(val); yield true;
             case "disabled": def.setDisabled(val); yield true;
@@ -2615,6 +2619,7 @@ public class ModelParser extends BaseParser {
     protected ResponseMessageDefinition doParseResponseMessageDefinition() throws IOException, XmlPullParserException {
         return doParse(new ResponseMessageDefinition(), (def, key, val) -> switch (key) {
                 case "code": def.setCode(val); yield true;
+                case "contentType": def.setContentType(val); yield true;
                 case "message": def.setMessage(val); yield true;
                 case "responseModel": def.setResponseModel(val); yield true;
                 default: yield false;
diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
index 0bbad4cdd75..fcc91f1db0e 100644
--- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
+++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
@@ -3457,6 +3457,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("code", def.getCode(), "200");
         doWriteAttribute("responseModel", def.getResponseModel(), null);
         doWriteAttribute("message", def.getMessage(), null);
+        doWriteAttribute("contentType", def.getContentType(), null);
         doWriteList(null, "header", def.getHeaders(), this::doWriteResponseHeaderDefinition);
         doWriteList(null, "examples", def.getExamples(), this::doWriteRestPropertyDefinition);
         endElement(name);
@@ -3467,6 +3468,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("enableCORS", def.getEnableCORS(), "false");
         doWriteAttribute("type", def.getType(), null);
         doWriteAttribute("outType", def.getOutType(), null);
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("component", def.getComponent(), null);
         doWriteAttribute("bindingMode", def.getBindingMode(), "off");
         doWriteAttribute("enableNoContentResponse", def.getEnableNoContentResponse(), "false");
@@ -3493,6 +3495,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("apiHost", def.getApiHost(), null);
         doWriteAttribute("contextPath", def.getContextPath(), null);
         doWriteAttribute("apiContextRouteId", def.getApiContextRouteId(), null);
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("component", def.getComponent(), null);
         doWriteAttribute("bindingMode", toString(def.getBindingMode()), "off");
         doWriteAttribute("port", def.getPort(), null);
@@ -3513,6 +3516,7 @@ public class ModelWriter extends BaseWriter {
         startElement(name);
         doWriteOptionalIdentifiedDefinitionAttributes(def);
         doWriteAttribute("enableCORS", def.getEnableCORS(), "false");
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("path", def.getPath(), null);
         doWriteAttribute("bindingMode", def.getBindingMode(), "off");
         doWriteAttribute("apiDocs", def.getApiDocs(), "true");
@@ -3577,6 +3581,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("streamCache", def.getStreamCache(), null);
         doWriteAttribute("type", def.getType(), null);
         doWriteAttribute("outType", def.getOutType(), null);
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("path", def.getPath(), null);
         doWriteAttribute("routeId", def.getRouteId(), null);
         doWriteAttribute("bindingMode", def.getBindingMode(), "off");
diff --git a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
index 4ea0c3c9401..ba9234a2299 100644
--- a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
+++ b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
@@ -3457,6 +3457,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("code", def.getCode(), "200");
         doWriteAttribute("responseModel", def.getResponseModel(), null);
         doWriteAttribute("message", def.getMessage(), null);
+        doWriteAttribute("contentType", def.getContentType(), null);
         doWriteList(null, "header", def.getHeaders(), this::doWriteResponseHeaderDefinition);
         doWriteList(null, "examples", def.getExamples(), this::doWriteRestPropertyDefinition);
         endElement(name);
@@ -3467,6 +3468,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("enableCORS", def.getEnableCORS(), "false");
         doWriteAttribute("type", def.getType(), null);
         doWriteAttribute("outType", def.getOutType(), null);
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("component", def.getComponent(), null);
         doWriteAttribute("bindingMode", def.getBindingMode(), "off");
         doWriteAttribute("enableNoContentResponse", def.getEnableNoContentResponse(), "false");
@@ -3493,6 +3495,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("apiHost", def.getApiHost(), null);
         doWriteAttribute("contextPath", def.getContextPath(), null);
         doWriteAttribute("apiContextRouteId", def.getApiContextRouteId(), null);
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("component", def.getComponent(), null);
         doWriteAttribute("bindingMode", toString(def.getBindingMode()), "off");
         doWriteAttribute("port", def.getPort(), null);
@@ -3513,6 +3516,7 @@ public class ModelWriter extends BaseWriter {
         startElement(name);
         doWriteOptionalIdentifiedDefinitionAttributes(def);
         doWriteAttribute("enableCORS", def.getEnableCORS(), "false");
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("path", def.getPath(), null);
         doWriteAttribute("bindingMode", def.getBindingMode(), "off");
         doWriteAttribute("apiDocs", def.getApiDocs(), "true");
@@ -3577,6 +3581,7 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("streamCache", def.getStreamCache(), null);
         doWriteAttribute("type", def.getType(), null);
         doWriteAttribute("outType", def.getOutType(), null);
+        doWriteAttribute("clientResponseValidation", def.getClientResponseValidation(), "false");
         doWriteAttribute("path", def.getPath(), null);
         doWriteAttribute("routeId", def.getRouteId(), null);
         doWriteAttribute("bindingMode", def.getBindingMode(), "off");
diff --git a/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc b/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc
index de9c7d4fa1e..3f6efa3038d 100644
--- a/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc
+++ b/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc
@@ -549,6 +549,7 @@ The Rest DSL supports the following options:
 | *apiVendorExtension* | Whether a vendor extension is enabled in the Rest APIs. If enabled, then Camel will include additional information as a vendor extension (e.g., keys starting with `_x-_`) such as route ids, class names etc. Not all third party API gateways and tools support vendor-extensions when importing your API docs. | false | boolean
 | *bindingMode* | Sets the binding mode to be used by the REST consumer | RestBindingMode.off | RestBindingMode
 | *clientRequestValidation* | Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSON, XML or Auto binding mode must be enabled); re [...]
+| *clientResponseValidation* | Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected. | false | boolean
 | *component* | Sets the name of the Camel component to use as the REST consumer |  | String
 | *componentProperties* | Sets additional options on component level |  | Map
 | *consumerProperties* | Sets additional options on consumer level |  | Map
@@ -770,7 +771,7 @@ Request headers may also be defaulted in the same way.
       .post("/neworder").to("direct:customerNewOrder");
 ----
 
-== Client Request Validation
+== Client Request and Response Validation
 
 It is possible to enable validation of the incoming client request.
 The validation checks for the following:
@@ -793,6 +794,25 @@ restConfiguration().component("jetty").host("localhost")
     .clientRequestValidation(true);
 ----
 
+The validator is pluggable and Camel provides a default implementation out of the box.
+However, the `camel-openapi-validator` uses the third party https://bitbucket.org/atlassian/swagger-request-validator/src/master/[Atlassian Swagger Request Validator]
+library instead for client request validator. This library is a more extensive validator than
+the default validator from `camel-core`, such as being able to validate the payload
+is structured according to the OpenAPI specification.
+
+In **Camel 4.13** we added a _response validator_ as well which is intended more as development assistance
+that you can enable while building your Camel integrations, and help ensure what Camel is sending back
+to the HTTP client is valid. The response validator checks for the following:
+
+- Status-code and Content-Type matches Rest DSL response messages.
+- Check whether expected headers is included according to the Rest DSL repose message headers.
+- If the response body is JSon then check whether its valid JSon.
+
+If any error is detected the HTTP Status 500 is returned.
+
+Also, the `camel-openapi-validator` can be added to the classpath to have a more powerful response validator,
+that can be used to validate the response payload is structured according to the OpenAPI specification.
+
 == OpenAPI / Swagger API
 
 The Rest DSL supports OpenAPI and Swagger by
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestOpenapiComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestOpenapiComponentBuilderFactory.java
index cbac4ac44aa..de597ad724d 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestOpenapiComponentBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/RestOpenapiComponentBuilderFactory.java
@@ -150,6 +150,25 @@ public interface RestOpenapiComponentBuilderFactory {
         }
     
         
+        /**
+         * Whether to enable validation of the client request to check if the
+         * outgoing response from Camel is valid according to the OpenAPI
+         * specification.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param clientResponseValidation the value to set
+         * @return the dsl builder
+         */
+        default RestOpenapiComponentBuilder clientResponseValidation(boolean clientResponseValidation) {
+            doSetProperty("clientResponseValidation", clientResponseValidation);
+            return this;
+        }
+    
+        
         /**
          * Whether the consumer should fail,ignore or return a mock response for
          * OpenAPI operations that are not mapped to a corresponding route.
@@ -436,6 +455,7 @@ public interface RestOpenapiComponentBuilderFactory {
             case "apiContextPath": ((RestOpenApiComponent) component).setApiContextPath((java.lang.String) value); return true;
             case "bridgeErrorHandler": ((RestOpenApiComponent) component).setBridgeErrorHandler((boolean) value); return true;
             case "clientRequestValidation": ((RestOpenApiComponent) component).setClientRequestValidation((boolean) value); return true;
+            case "clientResponseValidation": ((RestOpenApiComponent) component).setClientResponseValidation((boolean) value); return true;
             case "missingOperation": ((RestOpenApiComponent) component).setMissingOperation((java.lang.String) value); return true;
             case "bindingPackageScan": ((RestOpenApiComponent) component).setBindingPackageScan((java.lang.String) value); return true;
             case "consumerComponentName": ((RestOpenApiComponent) component).setConsumerComponentName((java.lang.String) value); return true;
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestOpenApiEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestOpenApiEndpointBuilderFactory.java
index f1ff7f1cc3a..fc50a71c87a 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestOpenApiEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RestOpenApiEndpointBuilderFactory.java
@@ -105,6 +105,40 @@ public interface RestOpenApiEndpointBuilderFactory {
             doSetProperty("clientRequestValidation", clientRequestValidation);
             return this;
         }
+        /**
+         * Whether to enable validation of the client request to check if the
+         * outgoing response from Camel is valid according to the OpenAPI
+         * specification.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param clientResponseValidation the value to set
+         * @return the dsl builder
+         */
+        default RestOpenApiEndpointConsumerBuilder clientResponseValidation(boolean clientResponseValidation) {
+            doSetProperty("clientResponseValidation", clientResponseValidation);
+            return this;
+        }
+        /**
+         * Whether to enable validation of the client request to check if the
+         * outgoing response from Camel is valid according to the OpenAPI
+         * specification.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param clientResponseValidation the value to set
+         * @return the dsl builder
+         */
+        default RestOpenApiEndpointConsumerBuilder clientResponseValidation(String clientResponseValidation) {
+            doSetProperty("clientResponseValidation", clientResponseValidation);
+            return this;
+        }
         /**
          * What payload type this component capable of consuming. Could be one
          * type, like application/json or multiple types as application/json,
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index c2fac936142..e581baa526a 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -4770,6 +4770,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "deprecated", type = "boolean", description = "Marks this rest operation as deprecated in OpenApi documentation.", displayName = "Deprecated"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -4820,6 +4821,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
@@ -6290,6 +6296,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "deprecated", type = "boolean", description = "Marks this rest operation as deprecated in OpenApi documentation.", displayName = "Deprecated"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -6340,6 +6347,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
@@ -6748,6 +6760,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "deprecated", type = "boolean", description = "Marks this rest operation as deprecated in OpenApi documentation.", displayName = "Deprecated"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -6798,6 +6811,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
@@ -11607,6 +11625,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "deprecated", type = "boolean", description = "Marks this rest operation as deprecated in OpenApi documentation.", displayName = "Deprecated"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -11657,6 +11676,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
@@ -12156,6 +12180,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "deprecated", type = "boolean", description = "Marks this rest operation as deprecated in OpenApi documentation.", displayName = "Deprecated"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -12206,6 +12231,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
@@ -12687,6 +12717,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "deprecated", type = "boolean", description = "Marks this rest operation as deprecated in OpenApi documentation.", displayName = "Deprecated"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -12737,6 +12768,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
@@ -14083,6 +14119,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
             deprecated = false,
             properties = {
                     @YamlProperty(name = "code", type = "string", defaultValue = "200", description = "The response code such as a HTTP status code", displayName = "Code"),
+                    @YamlProperty(name = "contentType", type = "string", description = "The response content-type such as application/json.", displayName = "Content Type"),
                     @YamlProperty(name = "examples", type = "array:org.apache.camel.model.rest.RestPropertyDefinition", description = "Examples of response messages", displayName = "Examples"),
                     @YamlProperty(name = "header", type = "array:org.apache.camel.model.rest.ResponseHeaderDefinition", description = "Adds a response header", displayName = "Header"),
                     @YamlProperty(name = "message", type = "string", required = true, description = "The response message (description)", displayName = "Message"),
@@ -14109,6 +14146,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setCode(val);
                     break;
                 }
+                case "contentType": {
+                    String val = asText(node);
+                    target.setContentType(val);
+                    break;
+                }
                 case "examples": {
                     java.util.List<org.apache.camel.model.rest.RestPropertyDefinition> val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                     target.setExamples(val);
@@ -14147,6 +14189,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
             properties = {
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "component", type = "string", description = "Sets the component name that this definition will apply to", displayName = "Component"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json", displayName = "Consumes"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -14184,6 +14227,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "component": {
                     String val = asText(node);
                     target.setComponent(val);
@@ -14260,6 +14308,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "bindingMode", type = "enum:auto,json,json_xml,off,xml", defaultValue = "off", description = "Sets the binding mode to use. The default value is off", displayName = "Binding Mode"),
                     @YamlProperty(name = "bindingPackageScan", type = "string", description = "Package name to use as base (offset) for classpath scanning of POJO classes are located when using binding mode is enabled for JSon or XML. Multiple package names can be separated by comma.", displayName = "Binding Package Scan"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "component", type = "enum:platform-http,servlet,jetty,undertow,netty-http,coap", description = "The Camel Rest component to use for the REST transport (consumer), such as netty-http, jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then [...]
                     @YamlProperty(name = "componentProperty", type = "array:org.apache.camel.model.rest.RestPropertyDefinition", description = "Allows to configure as many additional properties for the rest component in use.", displayName = "Component Property"),
                     @YamlProperty(name = "consumerProperty", type = "array:org.apache.camel.model.rest.RestPropertyDefinition", description = "Allows to configure as many additional properties for the rest consumer in use.", displayName = "Consumer Property"),
@@ -14341,6 +14390,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "component": {
                     String val = asText(node);
                     target.setComponent(val);
@@ -14503,6 +14557,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     @YamlProperty(name = "apiDocs", type = "boolean", description = "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true.", displayName = "Api Docs"),
                     @YamlProperty(name = "bindingMode", type = "enum:off,auto,json,xml,json_xml", defaultValue = "off", description = "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is auto", displayName = "Binding Mode"),
                     @YamlProperty(name = "clientRequestValidation", type = "boolean", description = "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error o [...]
+                    @YamlProperty(name = "clientResponseValidation", type = "boolean", description = "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected.", displayName = "Client Response Validation"),
                     @YamlProperty(name = "consumes", type = "string", description = "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", displayName = "Consumes"),
                     @YamlProperty(name = "delete", type = "array:org.apache.camel.model.rest.DeleteDefinition"),
                     @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
@@ -14554,6 +14609,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
                     target.setClientRequestValidation(val);
                     break;
                 }
+                case "clientResponseValidation": {
+                    String val = asText(node);
+                    target.setClientResponseValidation(val);
+                    break;
+                }
                 case "consumes": {
                     String val = asText(node);
                     target.setConsumes(val);
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
index 6bf1f75fbbc..2840dfaae15 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
@@ -14544,6 +14544,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",
@@ -14668,6 +14673,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",
@@ -14792,6 +14802,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",
@@ -15135,6 +15150,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",
@@ -15259,6 +15279,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",
@@ -15383,6 +15408,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",
@@ -15552,6 +15582,11 @@
             "description" : "The response code such as a HTTP status code",
             "default" : "200"
           },
+          "contentType" : {
+            "type" : "string",
+            "title" : "Content Type",
+            "description" : "The response content-type such as application/json."
+          },
           "examples" : {
             "type" : "array",
             "title" : "Examples",
@@ -15599,6 +15634,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "component" : {
             "type" : "string",
             "title" : "Component",
@@ -15708,6 +15748,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "component" : {
             "type" : "string",
             "title" : "Component",
@@ -15852,6 +15897,11 @@
             "title" : "Client Request Validation",
             "description" : "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body (JSon, XML or Auto binding mode must be enabled); ret [...]
           },
+          "clientResponseValidation" : {
+            "type" : "boolean",
+            "title" : "Client Response Validation",
+            "description" : "Whether to check what Camel is returning as response to the client: 1) Status-code and Content-Type matches Rest DSL response messages. 2) Check whether expected headers is included according to the Rest DSL repose message headers. 3) If the response body is JSon then check whether its valid JSon. Returns 500 if validation error detected."
+          },
           "consumes" : {
             "type" : "string",
             "title" : "Consumes",