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

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


The following commit(s) were added to refs/heads/main by this push:
     new 3b0b778bb68 CAMEL-21040: ensure more consistency in the document 
sections
3b0b778bb68 is described below

commit 3b0b778bb68fdb06323deb4e90cb39013e8d8d40
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Fri Aug 9 09:08:42 2024 +0200

    CAMEL-21040: ensure more consistency in the document sections
    
    - Also fixed typos
    - Reorganized examples
    - Fixed grammar issues
---
 .../src/main/docs/milvus-component.adoc            |  11 +-
 .../src/main/docs/netty-http-component.adoc        |  10 +-
 .../camel-netty/src/main/docs/netty-component.adoc |  25 +--
 .../src/main/docs/nitrite-component.adoc           |   4 +-
 .../src/main/docs/oaipmh-component.adoc            |   4 +-
 .../src/main/docs/olingo2-component.adoc           |   6 +-
 .../src/main/docs/olingo4-component.adoc           |   6 +-
 .../src/main/docs/opensearch-component.adoc        |  53 +++---
 .../src/main/docs/openstack-cinder-component.adoc  |  19 +-
 .../src/main/docs/openstack-glance-component.adoc  |   5 +-
 .../main/docs/openstack-keystone-component.adoc    |  35 ++--
 .../src/main/docs/openstack-neutron-component.adoc |  25 ++-
 .../src/main/docs/openstack-nova-component.adoc    |  21 ++-
 .../src/main/docs/openstack-summary.adoc           |   1 +
 .../src/main/docs/openstack-swift-component.adoc   |  17 +-
 .../src/main/docs/opentelemetry.adoc               |  10 +-
 .../src/main/docs/optaplanner-component.adoc       |  14 +-
 .../src/main/docs/paho-mqtt5-component.adoc        |   4 +-
 .../camel-paho/src/main/docs/paho-component.adoc   |   3 +-
 .../src/main/docs/parquetAvro-dataformat.adoc      |   2 +-
 .../camel-pdf/src/main/docs/pdf-component.adoc     |   3 +-
 .../main/docs/pg-replication-slot-component.adoc   |  21 ++-
 .../src/main/docs/pgevent-component.adoc           |   8 +-
 .../src/main/docs/platform-http-component.adoc     |  37 ++--
 .../camel-plc4x/src/main/docs/plc4x-component.adoc |  37 ++--
 .../camel-printer/src/main/docs/lpr-component.adoc |  15 +-
 .../src/main/docs/protobuf-dataformat.adoc         |  22 ++-
 .../src/main/docs/pubnub-component.adoc            |   9 +-
 .../src/main/docs/python-language.adoc             |   2 +-
 .../src/main/docs/quartz-component.adoc            |  78 ++++----
 .../src/main/docs/quickfix-component.adoc          | 105 ++++++-----
 .../src/main/docs/reactive-streams-component.adoc  |  24 +--
 .../camel-ref/src/main/docs/ref-component.adoc     |   3 +-
 .../src/main/docs/resourceresolver-github.adoc     |   2 +-
 .../src/main/docs/rest-openapi-component.adoc      |  72 ++++----
 .../camel-rest/src/main/docs/rest-component.adoc   |  12 +-
 .../src/main/docs/rocketmq-component.adoc          |   4 +-
 .../camel-rss/src/main/docs/rss-component.adoc     |   6 +-
 .../camel-saga/src/main/docs/saga-component.adoc   |   2 +-
 .../src/main/docs/salesforce-component.adoc        | 200 +++++++++++----------
 .../src/main/docs/xquery-component.adoc            |  26 +--
 .../camel-saxon/src/main/docs/xquery-language.adoc |  12 +-
 .../src/main/docs/scheduler-component.adoc         |  45 ++---
 .../src/main/docs/schematron-component.adoc        |   8 +-
 .../camel-seda/src/main/docs/seda-component.adoc   |  16 +-
 .../src/main/docs/servicenow-component.adoc        |   2 +-
 .../src/main/docs/servlet-component.adoc           |  16 +-
 components/camel-shiro/src/main/docs/shiro.adoc    |  44 ++---
 48 files changed, 583 insertions(+), 523 deletions(-)

diff --git 
a/components/camel-ai/camel-milvus/src/main/docs/milvus-component.adoc 
b/components/camel-ai/camel-milvus/src/main/docs/milvus-component.adoc
index 9eb48290483..e2360d455f1 100644
--- a/components/camel-ai/camel-milvus/src/main/docs/milvus-component.adoc
+++ b/components/camel-ai/camel-milvus/src/main/docs/milvus-component.adoc
@@ -184,7 +184,7 @@ from("direct:in")
 
 The Milvus component provides a datatype transformer, from 
langchain4j-embeddings to an insert/upsert object compatible with Milvus.
 
-As an example you could think about these routes:
+As an example, you could think about these routes:
 
 [tabs]
 ====
@@ -215,11 +215,14 @@ Java::
 ----
 ====
 
-It's important to note that: Milvus SDK doesn't support upsert for autoID 
fields. This means if you set a field as key, and you set the autoID to true, 
the upsert won't be possible.
+It's important to note that Milvus SDK doesn't support upsert for autoID 
fields.
+This means if you set a field as key, and you set the autoID to true, the 
upsert won't be possible.
 
-That's the reason why, in the example we are setting the userID as keyName 
with a keyValue of 3. This is particularly important when you design your 
Milvus database.
+That's the reason why, in the example, we are setting the userID as keyName 
with a keyValue of 3.
+This is particularly important when you design your Milvus database.
 
-The transformer only support insert/upsert objects, so the only operation you 
can set via header are INSERT and UPSERT, otherwise the transformer will fail 
with an error log.
+The transformer only supports insert/upsert objects, so the only operation you 
can set via header are INSERT and UPSERT,
+otherwise the transformer will fail with an error log.
 
 
 include::spring-boot:partial$starter.adoc[]
diff --git 
a/components/camel-netty-http/src/main/docs/netty-http-component.adoc 
b/components/camel-netty-http/src/main/docs/netty-http-component.adoc
index 2d717766d5a..14b3b8cea92 100644
--- a/components/camel-netty-http/src/main/docs/netty-http-component.adoc
+++ b/components/camel-netty-http/src/main/docs/netty-http-component.adoc
@@ -105,7 +105,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Access to Netty types
+== Usage
+
+=== Access to Netty types
 
 This component uses the
 `org.apache.camel.component.netty.http.NettyHttpMessage` as the message
@@ -119,7 +121,7 @@ accessible at all times.
 io.netty.handler.codec.http.HttpRequest request = 
exchange.getIn(NettyHttpMessage.class).getHttpRequest();
 
----------------------------------------------------------------------------------------------------------
 
-== Using HTTP Basic Authentication
+=== Using HTTP Basic Authentication
 
 The Netty HTTP consumer supports HTTP basic authentication by specifying
 the security realm name to use, as shown below
@@ -141,7 +143,7 @@ End user of Apache Karaf / ServiceMix has a karaf realm out 
of the box,
 and hence why the example above would work out of the box in these
 containers.
 
-=== Specifying ACL on web resources
+==== Specifying ACL on web resources
 
 The `org.apache.camel.component.netty.http.SecurityConstraint` allows
 to define constraints on web resources.
@@ -180,7 +182,7 @@ no roles)
 * access to /admin/* requires the admin role
 * access to /guest/* requires the admin or guest role
 * access to /public/* is an exclusion that means no authentication is
-needed, and is therefore public for everyone without logging in
+necessary, and is therefore public for everyone without logging in
 
 To use this constraint, we just need to refer to the bean id as shown
 below:
diff --git a/components/camel-netty/src/main/docs/netty-component.adoc 
b/components/camel-netty/src/main/docs/netty-component.adoc
index 21b429e70cb..ca548096a94 100644
--- a/components/camel-netty/src/main/docs/netty-component.adoc
+++ b/components/camel-netty/src/main/docs/netty-component.adoc
@@ -76,8 +76,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
+== Usage
 
-== Registry-based Options
+=== Registry-based Options
 
 Codec Handlers and SSL Keystores can be enlisted in the Registry, such as in 
the Spring XML file.
 The values that could be passed in are the following:
@@ -135,7 +136,7 @@ Read below about using non-shareable encoders/decoders.
 ====
 
 [[Netty-NonShareableEncodersOrDecoders]]
-=== Using non-shareable encoders or decoders
+==== Using non-shareable encoders or decoders
 
 If your encoders or decoders are not shareable (e.g., they don't have the
 @Shareable class annotation), then your encoder/decoder must implement
@@ -148,16 +149,16 @@ The Netty component offers a
 `org.apache.camel.component.netty.ChannelHandlerFactories` factory
 class, that has a number of commonly used methods.
 
-== Sending Messages to/from a Netty endpoint
+=== Sending Messages to/from a Netty endpoint
 
-=== Netty Producer
+==== Netty Producer
 
 In Producer mode, the component provides the ability to send payloads to
 a socket endpoint using either TCP or UDP protocols (with optional SSL 
support).
 
 The producer mode supports both one-way and request-response based operations.
 
-=== Netty Consumer
+==== Netty Consumer
 
 In Consumer mode, the component provides the ability to:
 
@@ -170,7 +171,7 @@ object-based payloads and
 The consumer mode supports both one-way and request-response based
 operations.
 
-=== Using Multiple Codecs
+==== Using Multiple Codecs
 
 In certain cases, it may be necessary to add chains of encoders and
 decoders to the netty pipeline.
@@ -287,7 +288,7 @@ XML::
 
 ====
 
-== Closing Channel When Complete
+=== Closing Channel When Complete
 
 When acting as a server, you sometimes want to close the channel when,
 for example, a client conversion is finished.
@@ -317,7 +318,7 @@ from("netty:tcp://0.0.0.0:8080").process(new Processor() {
 
[[Netty-Addingcustomchannelpipelinefactoriestogaincompletecontroloveracreatedpipeline]]
 Adding custom channel pipeline factories to gain complete control over a 
created pipeline
 
-== Custom pipeline
+=== Custom pipeline
 
 Custom channel pipelines provide complete control to the user over the
 handler/interceptor chain by inserting custom handler(s), encoder(s) &
@@ -342,7 +343,7 @@ decoders wired to the pipeline.
 The example below shows how `ServerInitializerFactory` factory may be
 created
 
-=== Using custom pipeline factory
+==== Using custom pipeline factory
 
 [source,java]
 ----
@@ -387,7 +388,7 @@ context.addRoutes(new RouteBuilder() {
 });
 ----
 
-== Reusing Netty boss and worker thread pools
+=== Reusing Netty boss and worker thread pools
 
 Netty has two kinds of thread pools: boss and worker. By default, each
 Netty consumer and producer has their private thread pools. If you want
@@ -445,7 +446,7 @@ And if we have another route, we can refer to the shared 
worker pool:
 
 And so forth.
 
-== Multiplexing concurrent messages over a single connection with request/reply
+=== Multiplexing concurrent messages over a single connection with 
request/reply
 
 When using Netty for request/reply messaging via the netty producer, then by 
default, each
 message is sent via a non-shared connection (pooled). This ensures that 
replies are
@@ -472,7 +473,7 @@ This provides support for timeout and other complexities 
you otherwise would nee
 You can find an example with the Apache Camel source code in the examples 
directory
 under the `camel-example-netty-custom-correlation` directory.
 
-== Native transport
+=== Native transport
 
 To enable native transport, you need to add additional dependency for epoll or 
kqueue depending on your OS and CPU arch.
 To make it easier add the following extension to your `build` section of 
`pom.xml`:
diff --git a/components/camel-nitrite/src/main/docs/nitrite-component.adoc 
b/components/camel-nitrite/src/main/docs/nitrite-component.adoc
index 92e7a86427e..b7246af3887 100644
--- a/components/camel-nitrite/src/main/docs/nitrite-component.adoc
+++ b/components/camel-nitrite/src/main/docs/nitrite-component.adoc
@@ -48,7 +48,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Producer operations
+== Usage
+
+=== Producer operations
 The following Operations are available to specify as 
`NitriteConstants.OPERATION` when producing to Nitrite.
 [width="100%",cols="2m,2m,1m,5",options="header"]
 |===
diff --git a/components/camel-oaipmh/src/main/docs/oaipmh-component.adoc 
b/components/camel-oaipmh/src/main/docs/oaipmh-component.adoc
index 7d0ddb35939..5a6af0b4581 100644
--- a/components/camel-oaipmh/src/main/docs/oaipmh-component.adoc
+++ b/components/camel-oaipmh/src/main/docs/oaipmh-component.adoc
@@ -60,7 +60,7 @@ include::partial$component-endpoint-headers.adoc[]
 The OAI-PMH component supports both consumer and producer endpoints.
 
 
-== Producer Example
+=== Producer Example
 
 The following is a basic example of how to send a request to an OAI-PMH Server.
 
@@ -73,7 +73,7 @@ 
from("direct:start").to("oaipmh:baseUrlRepository/oai/request");
 
 The result is a set of pages in XML format with all the records of the 
consulted repository.
 
-== Consumer Example
+=== Consumer Example
 
 The following is a basic example of how to receive all messages from an 
OAI-PMH Server.
 In Java DSL
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
 
b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
index 84234635c5b..22cd88cf337 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
@@ -71,7 +71,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Endpoint HTTP Headers
+== Usage
+
+=== Endpoint HTTP Headers
 
 The component level configuration property **httpHeaders** supplies static 
HTTP header information.
 However, some systems require dynamic header information to be passed to and 
received from the endpoint.
@@ -81,7 +83,7 @@ be passed to the endpoint in the 
*`CamelOlingo2.endpointHttpHeaders`* property a
 response headers will be returned in a *`CamelOlingo2.responseHttpHeaders`* 
property.  
 Both properties are of the type `java.util.Map<String, String>`.
 
-== OData Resource Type Mapping
+=== OData Resource Type Mapping
 
 The result of *read* endpoint and data type of *data* option depends on
 the OData resource being queried, created or modified.
diff --git 
a/components/camel-olingo4/camel-olingo4-component/src/main/docs/olingo4-component.adoc
 
b/components/camel-olingo4/camel-olingo4-component/src/main/docs/olingo4-component.adoc
index 42649edb6c1..b5b17d3b6e0 100644
--- 
a/components/camel-olingo4/camel-olingo4-component/src/main/docs/olingo4-component.adoc
+++ 
b/components/camel-olingo4/camel-olingo4-component/src/main/docs/olingo4-component.adoc
@@ -65,7 +65,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Endpoint HTTP Headers
+== Usage
+
+=== Endpoint HTTP Headers
 
 The component level configuration property **httpHeaders** supplies static 
HTTP header information.
 However, some systems require dynamic header information to be passed to and 
received from the endpoint.
@@ -75,7 +77,7 @@ be passed to the endpoint in the 
*`CamelOlingo4.endpointHttpHeaders`* property a
 response headers will be returned in a *`CamelOlingo4.responseHttpHeaders`* 
property.  
 Both properties are of the type *`java.util.Map<String, String>`*.
 
-== OData Resource Type Mapping
+=== OData Resource Type Mapping
 
 The result of *read* endpoint and data type of *data* option depends on
 the OData resource being queried, created or modified. 
diff --git 
a/components/camel-opensearch/src/main/docs/opensearch-component.adoc 
b/components/camel-opensearch/src/main/docs/opensearch-component.adoc
index 1517bd5a09e..4497c6742e9 100644
--- a/components/camel-opensearch/src/main/docs/opensearch-component.adoc
+++ b/components/camel-opensearch/src/main/docs/opensearch-component.adoc
@@ -54,9 +54,11 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Message Operations
+== Usage
 
-The following https://opensearch.org/ operations are currently supported.
+=== Message Operations
+
+The following https://opensearch.org/[OpenSearch] operations are currently 
supported.
 Set an endpoint URI option or exchange header with a key of "operation"
 and a value set to one of the following. Some operations also require
 other parameters or the message body to be set.
@@ -65,41 +67,41 @@ other parameters or the message body to be set.
 |===
 |operation |message body |description
 
-|Index |*Map*, *String*, *byte[]*, *Reader*, *InputStream* or 
*IndexRequest.Builder* content to index |Adds content to an index and returns 
the content's indexId in the body.
+|`Index` |`Map`, `String`, `byte[]`, `Reader`, `InputStream` or 
`IndexRequest.Builder` content to index |Adds content to an index and returns 
the content's indexId in the body.
 You can set the name of the target index by setting the message header with 
the key "indexName".
 You can set the indexId by setting the message header with
 the key "indexId".
 
-|GetById |*String* or *GetRequest.Builder* index id of content to retrieve 
|Retrieves the document corresponding to the given index id and returns a 
GetResponse object in the body.
+|`GetById` |`String` or `GetRequest.Builder` index id of content to retrieve 
|Retrieves the document corresponding to the given index id and returns a 
GetResponse object in the body.
 You can set the name of the target index by setting the message header with 
the key "indexName".
 You can set the type of document by setting the message header with
 the key "documentClass".
 
-|Delete |*String* or *DeleteRequest.Builder* index id of content to delete 
|Deletes the specified indexName and returns a Result object in the body.
+|`Delete` |`String` or `DeleteRequest.Builder` index id of content to delete 
|Deletes the specified indexName and returns a Result object in the body.
 You can set the name of the target index by setting the message header with 
the key "indexName".
 
-|DeleteIndex |*String* or *DeleteIndexRequest.Builder* index name of the index 
to delete |Deletes the specified indexName and returns a status code in the 
body.
+|`DeleteIndex` |`String` or `DeleteIndexRequest.Builder` index name of the 
index to delete |Deletes the specified indexName and returns a status code in 
the body.
 You can set the name of the target index by setting the message header with 
the key "indexName".
 
-|Bulk |*Iterable* or *BulkRequest.Builder* of any type that is already 
accepted (DeleteOperation.Builder for delete operation, UpdateOperation.Builder 
for update operation, CreateOperation.Builder for create operation, byte[], 
InputStream, String, Reader, Map or any document type for index operation) | 
Adds/Updates/Deletes content from/to an index and returns a 
List<BulkResponseItem> object in the body
+|`Bulk` `Iterable` or `BulkRequest.Builder` of any type that is already 
accepted (DeleteOperation.Builder for delete operation, UpdateOperation.Builder 
for update operation, CreateOperation.Builder for create operation, byte[], 
InputStream, String, Reader, Map or any document type for index operation) | 
Adds/Updates/Deletes content from/to an index and returns a 
List<BulkResponseItem> object in the body
 You can set the name of the target index by setting the message header with 
the key "indexName".
 
-|Search |*Map*, *String* or *SearchRequest.Builder* |Search the content with 
the map of query string.
+|`Search` |`Map`, `String` or `SearchRequest.Builder` |Search the content with 
the map of query string.
 You can set the name of the target index by setting the message header with 
the key "indexName".
 You can set the number of hits to return by setting the message header with 
the key "size".
 You can set the starting document offset by setting the message header with 
the key "from".
 
-|MultiSearch |*MsearchRequest.Builder* |Multiple search in one
+|`MultiSearch` |`MsearchRequest.Builder` |Multiple search in one
 
-|MultiGet |*Iterable<String>* or *MgetRequest.Builder* the id of the document 
to retrieve |Multiple get in one
+|`MultiGet` |`Iterable<String>` or `MgetRequest.Builder` the id of the 
document to retrieve |Multiple get in one
 
 You can set the name of the target index by setting the message header with 
the key "indexName".
 
-|Exists |None |Checks whether the index exists or not and returns a Boolean 
flag in the body.
+|`Exists` |None |Checks whether the index exists or not and returns a Boolean 
flag in the body.
 
 You must set the name of the target index by setting the message header with 
the key "indexName".
 
-|Update |*byte[]*, *InputStream*, *String*, *Reader*, *Map* or any document 
type content to update |Updates content to an index and returns the content's 
indexId in the body.
+|`Update` |`byte[]`, `InputStream`, `String`, `Reader`, `Map` or any document 
type content to update |Updates content to an index and returns the content's 
indexId in the body.
 You can set the name of the target index by setting the message header with 
the key "indexName".
 You can set the indexId by setting the message header with
 the key "indexId".
@@ -108,7 +110,7 @@ the key "indexId".
 
 |===
 
-== Configure the component and enable basic authentication
+=== Configure the component and enable basic authentication
 To use the OpenSearch component, it has to be configured with a minimum 
configuration.
 
 [source,java]
@@ -131,7 +133,16 @@ opensearchComponent.setPassword("secure!!");
 camelContext.addComponent("opensearch", opensearchComponent);
 ----
 
-== Index Example
+
+=== Document type
+
+For all the search operations, it is possible to indicate the type of document 
to retrieve to get the result already unmarshalled with the expected type.
+
+The document type can be set using the header "documentClass" or via the uri 
parameter of the same name.
+
+== Examples
+
+=== Index Example
 
 Below is a simple INDEX example
 
@@ -149,7 +160,7 @@ from("direct:index")
 </route>
 ----
 
-*For this operation, you'll need to specify an indexId header.*
+NOTE: For this operation, you'll need to specify an indexId header.
 
 A client would simply need to pass a body message containing a Map to
 the route. The result body contains the indexId created.
@@ -161,7 +172,7 @@ map.put("content", "test");
 String indexId = template.requestBody("direct:index", map, String.class);
 ----
 
-== Search Example
+=== Search Example
 
 Searching on specific field(s) and value use the Operation ´Search´.
 Pass in the query JSON String or the Map
@@ -240,7 +251,7 @@ from("direct:search")
   .end();
 ----
 
-== MultiSearch Example
+=== MultiSearch Example
 
 MultiSearching on specific field(s) and value uses the Operation `MultiSearch`.
 Pass in the MultiSearchRequest instance
@@ -269,10 +280,4 @@ MsearchRequest.Builder builder = new 
MsearchRequest.Builder().index("twitter").s
         new RequestItem.Builder().header(new 
MultisearchHeader.Builder().build())
                 .body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> 
x)).build()).build());
 List<MultiSearchResponseItem<?>> response = 
template.requestBody("direct:multiSearch", builder, List.class);
-----
-
-== Document type
-
-For all the search operations, it is possible to indicate the type of document 
to retrieve to get the result already unmarshalled with the expected type.
-
-The document type can be set using the header "documentClass" or via the uri 
parameter of the same name.
+----
\ No newline at end of file
diff --git 
a/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc 
b/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
index c186c0b255b..29459f53393 100644
--- a/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
@@ -19,10 +19,9 @@ The Openstack Cinder component allows messages to be sent to 
an OpenStack block
 
 == Dependencies
 
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
+Maven users will need to add the following dependency to their `pom.xml`.
 
+.pom.xml
 [source,xml]
 ---------------------------------------
 <dependency>
@@ -62,9 +61,9 @@ include::partial$component-endpoint-headers.adoc[]
 
 You can use the following settings for each subsystem:
 
-== volumes
+=== Volumes
 
-=== Operations you can perform with the Volume producer
+==== Operations you can perform with the Volume producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -82,11 +81,11 @@ You can use the following settings for each subsystem:
 |`delete` | Delete the volume.
 |=========================================================================
 
-If you need more precise volume settings, you can create a new object of the 
type *org.openstack4j.model.storage.block.Volume* and send in the message body.
+If you need more precise volume settings, you can create a new object of the 
type `org.openstack4j.model.storage.block.Volume` and send in the message body.
 
-== snapshots
+=== Snapshots
 
-=== Operations you can perform with the Snapshot producer
+==== Operations you can perform with the Snapshot producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -103,8 +102,6 @@ If you need more precise volume settings, you can create a 
new object of the typ
 
 |=========================================================================
 
-If you need more precise server settings, you can create a new object of the 
type *org.openstack4j.model.storage.block.VolumeSnapshot* and send in the 
message body.
-
-
+If you need more precise server settings, you can create a new object of the 
type `org.openstack4j.model.storage.block.VolumeSnapshot` and send in the 
message body.
 
 include::spring-boot:partial$starter.adoc[]
diff --git 
a/components/camel-openstack/src/main/docs/openstack-glance-component.adoc 
b/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
index d0ee157c747..e8019499496 100644
--- a/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
@@ -19,10 +19,9 @@ The Openstack Glance component allows messages to be sent to 
an OpenStack image
 
 == Dependencies
 
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
+Maven users will need to add the following dependency to their `pom.xml`.
 
+.pom.xml
 [source,xml]
 ---------------------------------------
 <dependency>
diff --git 
a/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc 
b/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
index 00f1e2068fb..374dd54c05f 100644
--- a/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
@@ -21,10 +21,9 @@ NOTE: The openstack-keystone component supports only 
Identity API v3
 
 == Dependencies
 
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
+Maven users will need to add the following dependency to their `pom.xml`.
 
+.pom.xml
 [source,xml]
 ---------------------------------------
 <dependency>
@@ -65,9 +64,9 @@ include::partial$component-endpoint-headers.adoc[]
 
 You can use the following settings for each subsystem:
 
-== domains
+=== Domains
 
-=== Operations you can perform with the Domain producer
+==== Operations you can perform with the Domain producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -83,11 +82,11 @@ You can use the following settings for each subsystem:
 |`delete` | Delete the domain.
 |=========================================================================
 
-If you need more precise domain settings, you can create a new object of the 
type *org.openstack4j.model.identity.v3.Domain* and send in the message body.
+If you need more precise domain settings, you can create a new object of the 
type `org.openstack4j.model.identity.v3.Domain` and send in the message body.
 
-== groups
+=== Groups
 
-=== Operations you can perform with the Group producer
+==== Operations you can perform with the Group producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -109,11 +108,11 @@ If you need more precise domain settings, you can create 
a new object of the typ
 |`removeUserFromGroup` | Remove the user from the group.
 |=========================================================================
 
-If you need more precise group settings, you can create a new object of the 
type *org.openstack4j.model.identity.v3.Group* and send in the message body.
+If you need more precise group settings, you can create a new object of the 
type `org.openstack4j.model.identity.v3.Group` and send in the message body.
 
-== projects
+=== Projects
 
-=== Operations you can perform with the Project producer
+==== Operations you can perform with the Project producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -129,11 +128,11 @@ If you need more precise group settings, you can create a 
new object of the type
 |`delete` | Delete the project.
 |=========================================================================
 
-If you need more precise project settings, you can create a new object of the 
type *org.openstack4j.model.identity.v3.Project* and send in the message body.
+If you need more precise project settings, you can create a new object of the 
type `org.openstack4j.model.identity.v3.Project` and send in the message body.
 
-== regions
+=== Regions
 
-=== Operations you can perform with the Region producer
+==== Operations you can perform with the Region producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -149,11 +148,11 @@ If you need more precise project settings, you can create 
a new object of the ty
 |`delete` | Delete the region.
 |=========================================================================
 
-If you need more precise region settings, you can create a new object of the 
type *org.openstack4j.model.identity.v3.Region* and send in the message body.
+If you need more precise region settings, you can create a new object of the 
type `org.openstack4j.model.identity.v3.Region` and send in the message body.
 
-== users
+=== Users
 
-=== Operations you can perform with the User producer
+==== Operations you can perform with the User producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -169,7 +168,7 @@ If you need more precise region settings, you can create a 
new object of the typ
 |`delete` | Delete the user.
 |=========================================================================
 
-If you need more precise user settings, you can create a new object of the 
type *org.openstack4j.model.identity.v3.User* and send in the message body.
+If you need more precise user settings, you can create a new object of the 
type `org.openstack4j.model.identity.v3.User` and send in the message body.
 
 
 
diff --git 
a/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc 
b/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
index 95cb74801ec..e0dbc4d444a 100644
--- a/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
@@ -19,10 +19,9 @@ The Openstack Neutron component allows messages to be sent 
to an OpenStack netwo
 
 == Dependencies
 
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
+Maven users will need to add the following dependency to their `pom.xml`.
 
+.pom.xml
 [source,xml]
 ---------------------------------------
 <dependency>
@@ -62,9 +61,9 @@ include::partial$component-endpoint-headers.adoc[]
 
 You can use the following settings for each subsystem:
 
-== networks
+=== Networks
 
-=== Operations you can perform with the Network producer
+==== Operations you can perform with the Network producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -78,11 +77,11 @@ You can use the following settings for each subsystem:
 |`delete` | Delete the network.
 |=========================================================================
 
-If you need more precise network settings, you can create a new object of the 
type *org.openstack4j.model.network.Network* and send in the message body.
+If you need more precise network settings, you can create a new object of the 
type `org.openstack4j.model.network.Network` and send in the message body.
 
-== subnets
+=== Subnets
 
-=== Operations you can perform with the Subnet producer
+==== Operations you can perform with the Subnet producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -98,11 +97,11 @@ If you need more precise network settings, you can create a 
new object of the ty
 |`action` | Perform an action on the subnet.
 |=========================================================================
 
-If you need more precise subnet settings, you can create a new object of the 
type *org.openstack4j.model.network.Subnet* and send in the message body.
+If you need more precise subnet settings, you can create a new object of the 
type `org.openstack4j.model.network.Subnet` and send in the message body.
 
-== ports
+=== Ports
 
-=== Operations you can perform with the Port producer
+==== Operations you can perform with the Port producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -119,9 +118,9 @@ If you need more precise subnet settings, you can create a 
new object of the typ
 
 |=========================================================================
 
-== routers
+=== Routers
 
-=== Operations you can perform with the Router producer
+==== Operations you can perform with the Router producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
diff --git 
a/components/camel-openstack/src/main/docs/openstack-nova-component.adoc 
b/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
index 17a61d5d66e..18d2817cb38 100644
--- a/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
@@ -19,10 +19,9 @@ The Openstack Nova component allows messages to be sent to 
an OpenStack compute
 
 == Dependencies
 
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
+Maven users will need to add the following dependency to their `pom.xml`.
 
+.pom.xml
 [source,xml]
 ---------------------------------------
 <dependency>
@@ -62,9 +61,9 @@ include::partial$component-endpoint-headers.adoc[]
 
 You can use the following settings for each subsystem:
 
-== flavors
+=== Flavors
 
-=== Operations you can perform with the Flavor producer
+==== Operations you can perform with the Flavor producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -78,11 +77,11 @@ You can use the following settings for each subsystem:
 |`delete` | Delete the flavor.
 |=========================================================================
 
-If you need more precise flavor settings, you can create a new object of the 
type *org.openstack4j.model.compute.Flavor* and send in the message body.
+If you need more precise flavor settings, you can create a new object of the 
type `org.openstack4j.model.compute.Flavor` and send in the message body.
 
-== servers
+=== Servers
 
-=== Operations you can perform with the Server producer
+==== Operations you can perform with the Server producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -100,11 +99,11 @@ If you need more precise flavor settings, you can create a 
new object of the typ
 |`action` | Perform an action on the server.
 |=========================================================================
 
-If you need more precise server settings, you can create a new object of the 
type *org.openstack4j.model.compute.ServerCreate* and send in the message body.
+If you need more precise server settings, you can create a new object of the 
type `org.openstack4j.model.compute.ServerCreate` and send in the message body.
 
-== keypairs
+=== Key/Pairs
 
-=== Operations you can perform with the Keypair producer
+==== Operations you can perform with the Keypair producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
diff --git a/components/camel-openstack/src/main/docs/openstack-summary.adoc 
b/components/camel-openstack/src/main/docs/openstack-summary.adoc
index 9dae8b31745..62dd189c35e 100644
--- a/components/camel-openstack/src/main/docs/openstack-summary.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-summary.adoc
@@ -20,6 +20,7 @@ 
indexDescriptionList::[attributes='group={doctitle}',descriptionformat=descripti
 
 Maven users will need to add the following dependency to their `pom.xml`
 for this component:
+
 [source,xml]
 ------------------------------------------------------------
 <dependency>
diff --git 
a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc 
b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
index 77475457dd7..4f267aa6f9f 100644
--- a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
@@ -19,10 +19,9 @@ The Openstack Swift component allows messages to be sent to 
an OpenStack object
 
 == Dependencies
 
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
+Maven users will need to add the following dependency to their `pom.xml`.
 
+.pom.xml
 [source,xml]
 ---------------------------------------
 <dependency>
@@ -61,9 +60,9 @@ include::partial$component-endpoint-headers.adoc[]
 
 You can use the following settings for each subsystem:
 
-== containers
+=== Containers
 
-=== Operations you can perform with the Container producer
+==== Operations you can perform with the Container producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -85,12 +84,12 @@ You can use the following settings for each subsystem:
 |`deleteMetadata` | Delete metadata.
 |=========================================================================
 
-If you need more precise container settings, you can create a new object of 
the type 
*org.openstack4j.model.storage.object.options.CreateUpdateContainerOptions* (in 
case of create or update operation)
-or *org.openstack4j.model.storage.object.options.ContainerListOptions* for 
listing containers and send in the message body.
+If you need more precise container settings, you can create a new object of 
the type 
`org.openstack4j.model.storage.object.options.CreateUpdateContainerOptions` (in 
case of create or update operation)
+or `org.openstack4j.model.storage.object.options.ContainerListOptions` for 
listing containers and send in the message body.
 
-== objects
+=== Objects
 
-=== Operations you can perform with the Object producer
+==== Operations you can perform with the Object producer
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
diff --git a/components/camel-opentelemetry/src/main/docs/opentelemetry.adoc 
b/components/camel-opentelemetry/src/main/docs/opentelemetry.adoc
index 078e69672c6..b40fbcfcb7d 100644
--- a/components/camel-opentelemetry/src/main/docs/opentelemetry.adoc
+++ b/components/camel-opentelemetry/src/main/docs/opentelemetry.adoc
@@ -24,13 +24,13 @@ The configuration properties for the OpenTelemetry tracer 
are:
 [width="100%",cols="10%,10%,80%",options="header",]
 |=======================================================================
 |Option |Default |Description
-|instrumentationName| camel | A name uniquely identifying the instrumentation 
scope, such as the instrumentation library, package, or fully qualified class 
name. Must not be null.
-|excludePatterns |  | Sets exclude pattern(s) that will disable tracing for 
Camel
+|`instrumentationName`| camel | A name uniquely identifying the 
instrumentation scope, such as the instrumentation library, package, or fully 
qualified class name. Must not be null.
+|`excludePatterns` |  | Sets exclude pattern(s) that will disable tracing for 
Camel
 messages that matches the pattern. The content is a Set<String> where the key 
is a pattern. The pattern
 uses the rules from Intercept.
-|encoding | false | Sets whether the header keys need to be encoded (connector 
specific) or not. The value is a boolean.
+|`encoding` | `false` | Sets whether the header keys need to be encoded 
(connector specific) or not. The value is a boolean.
 Dashes are required for instances to be encoded for JMS property keys.
-|traceProcessors | false | Setting this to true will create new OpenTelemetry 
Spans for each Camel Processors.
+|`traceProcessors` | `false` | Setting this to true will create new 
OpenTelemetry Spans for each Camel Processors.
 Use the excludePattern property to filter out Processors
 |=======================================================================
 
@@ -84,7 +84,7 @@ a `OpenTelemetryTracer` bean has been defined by the 
application.
 
 Download the 
https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/[latest
 version].
 
-This package includes the instrumentation agent as well as instrumentation's 
for all supported libraries and all available data exporters.
+This package includes the instrumentation agent as well as instrumentation for 
all supported libraries and all available data exporters.
 The package provides a completely automatic, out-of-the-box experience.
 
 Enable the instrumentation agent using the `-javaagent` flag to the JVM.
diff --git 
a/components/camel-optaplanner/src/main/docs/optaplanner-component.adoc 
b/components/camel-optaplanner/src/main/docs/optaplanner-component.adoc
index 9211e7f98eb..57fe87efda8 100644
--- a/components/camel-optaplanner/src/main/docs/optaplanner-component.adoc
+++ b/components/camel-optaplanner/src/main/docs/optaplanner-component.adoc
@@ -14,12 +14,12 @@
 
 *{component-header}*
 
-The Optaplanner component solves the planning problem contained in a
-message with http://www.optaplanner.org/[OptaPlanner]. +
- For example, feed it an unsolved Vehicle Routing problem and it solves
+The http://www.optaplanner.org/[OptaPlanner] component solves the planning 
problem contained in a
+message with http://www.optaplanner.org/[OptaPlanner].
+For example, feed it an unsolved Vehicle Routing problem and it solves
 it.
 
-The component supports consumer listening for SloverManager results and
+The component supports consumer listening for `SolverManager` results and
 producer for processing Solution and ProblemChange.
 
 Maven users will need to add the following dependency to their `pom.xml`
@@ -62,8 +62,8 @@ include::partial$component-endpoint-headers.adoc[]
 
 == Message Body
 
-Camel takes the planning problem for the _IN_ body, solves it and returns
-it on the _OUT_ body. The _IN_ body object supports the following use cases:
+Camel takes the planning problem for the `IN` body, solves it and returns
+it on the _OUT_ body. The `IN` body object supports the following use cases:
 
 * If the body contains the `PlanningSolution` annotation, then it will be 
solved using the
 solver identified by solverId and either synchronously or asynchronously.
@@ -75,7 +75,7 @@ the best result from the solver identified by `solverId`.
 
 === Examples
 
-Solve a planning problem on the ActiveMQ queue with OptaPlanner, passing the 
SolverManager:
+Solve a planning problem on the ActiveMQ queue with OptaPlanner, passing the 
`SolverManager`:
 
 [source,java]
 --------------------------------------------------
diff --git 
a/components/camel-paho-mqtt5/src/main/docs/paho-mqtt5-component.adoc 
b/components/camel-paho-mqtt5/src/main/docs/paho-mqtt5-component.adoc
index a1a7d0b148d..90f535b606e 100644
--- a/components/camel-paho-mqtt5/src/main/docs/paho-mqtt5-component.adoc
+++ b/components/camel-paho-mqtt5/src/main/docs/paho-mqtt5-component.adoc
@@ -58,7 +58,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Default payload type
+== Usage
+
+=== Default payload type
 
 By default, the Camel Paho component operates on the binary payloads
 extracted out of (or put into) the MQTT message:
diff --git a/components/camel-paho/src/main/docs/paho-component.adoc 
b/components/camel-paho/src/main/docs/paho-component.adoc
index 19ff10be895..79df6ae2bfa 100644
--- a/components/camel-paho/src/main/docs/paho-component.adoc
+++ b/components/camel-paho/src/main/docs/paho-component.adoc
@@ -57,8 +57,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
+== Usage
 
-== Default payload type
+=== Default payload type
 
 By default, the Camel Paho component operates on the binary payloads
 extracted out of (or put into) the MQTT message:
diff --git 
a/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc 
b/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc
index 236b6aa1dad..5ce01a20a4f 100644
--- a/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc
+++ b/components/camel-parquet-avro/src/main/docs/parquetAvro-dataformat.adoc
@@ -34,7 +34,7 @@ 
from("direct:unmarshal").unmarshal(parquet).to("mock:unmarshal");
 
 == Marshal
 
-Marshalling is the reverse process of unmarshalling, so when you have your 
GenericRecord or POJO and marshal it, you will get the parquet-formatted output 
stream on your producer endpoint.
+Marshalling is the reverse process of unmarshalling, so when you have your 
`GenericRecord` or POJO and marshal it, you will get the parquet-formatted 
output stream on your producer endpoint.
 
 [source,java]
 -----------------------------------------------------------------------
diff --git a/components/camel-pdf/src/main/docs/pdf-component.adoc 
b/components/camel-pdf/src/main/docs/pdf-component.adoc
index 631d10ecf5c..1f7228732cf 100644
--- a/components/camel-pdf/src/main/docs/pdf-component.adoc
+++ b/components/camel-pdf/src/main/docs/pdf-component.adoc
@@ -59,8 +59,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
+== Usage
 
-== Type converter
+=== Type converter
 
 Since Camel 4.8, the component is capable of doing simple document 
conversions. For instance,
 suppose you are receiving a PDF byte as a byte array:
diff --git 
a/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
 
b/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
index bf34ce7d181..e52652b6018 100644
--- 
a/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
+++ 
b/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
@@ -30,7 +30,7 @@ for this component:
 </dependency>
 ------------------------------------------------------------
 
-URI format
+== URI format
 
 The pg-replication-slot component uses the following two styles of endpoint URI
 notation:
@@ -52,15 +52,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
-== Examples
-
-[source,java]
-----
-from("pg-replication-slot://localhost:5432/finance/sync_slot:test_decoding?user={{username}}&password={{password}}&slotOptions.skip-empty-xacts=true&slotOptions.include-xids=false")
-    .to("mock:result");
-----
+== Usage
 
-== Tips
+=== Tips
 
 PostgreSQL can generate a huge number of empty transactions on certain 
operations (e.g. `VACUUM`). These transactions can congest
 your route. Using `greedy=true` query parameter can help with this problem. It 
will help your route filter out empty transactions quickly
@@ -70,6 +64,15 @@ The order of the messages is guaranteed, but the same 
message might come more th
 this component to sync data from PostgreSQL to another database, make sure 
your operations are idempotent (e.g., use `UPSERT`
 instead of `INSERT`, etc). This will make sure repeated messages won't affect 
your system negatively.
 
+== Examples
+
+.Example route
+[source,java]
+----
+from("pg-replication-slot://localhost:5432/finance/sync_slot:test_decoding?user={{username}}&password={{password}}&slotOptions.skip-empty-xacts=true&slotOptions.include-xids=false")
+    .to("mock:result");
+----
+
 
 
 include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-pgevent/src/main/docs/pgevent-component.adoc 
b/components/camel-pgevent/src/main/docs/pgevent-component.adoc
index 754912e26e5..e84825484cb 100644
--- a/components/camel-pgevent/src/main/docs/pgevent-component.adoc
+++ b/components/camel-pgevent/src/main/docs/pgevent-component.adoc
@@ -31,7 +31,7 @@ for this component:
 </dependency>
 ------------------------------------------------------------
 
-URI format
+== URI format
 
 The pgevent component uses the following two styles of endpoint URI
 notation:
@@ -59,9 +59,11 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Common problems
+== Usage
 
-=== Unable to connect to PostgreSQL database using DataSource
+=== Common problems
+
+==== Unable to connect to PostgreSQL database using DataSource
 Using the driver provided by PostgreSQL itself (`jdbc:postgresql:/...`) when 
using a DataSource to connect to a PostgreSQL database does not work.
 
 Please use the pgjdbc-ng driver (`jdbc:pgsql:/...`) instead.
diff --git 
a/components/camel-platform-http/src/main/docs/platform-http-component.adoc 
b/components/camel-platform-http/src/main/docs/platform-http-component.adoc
index 6d67c31b7bb..c06878de3ca 100644
--- a/components/camel-platform-http/src/main/docs/platform-http-component.adoc
+++ b/components/camel-platform-http/src/main/docs/platform-http-component.adoc
@@ -29,7 +29,22 @@ Maven users will need to add the following dependency to 
their `pom.xml` for thi
 </dependency>
 ----
 
-== Platform HTTP Provider
+// component-configure options: START
+
+// component-configure options: END
+
+// component options: START
+include::partial$component-configure-options.adoc[]
+include::partial$component-endpoint-options.adoc[]
+// component options: END
+
+// endpoint options: START
+
+// endpoint options: END
+
+== Usage
+
+=== Platform HTTP Provider
 
 To use Platform HTTP, a provider (engine) is required to be available on the 
classpath.
 The purpose is to have drivers for different runtimes such as Quarkus, or 
Spring Boot.
@@ -63,24 +78,10 @@ Spring Boot::
 ----
 ====
 
-
-// component-configure options: START
-
-// component-configure options: END
-
-// component options: START
-include::partial$component-configure-options.adoc[]
-include::partial$component-endpoint-options.adoc[]
-// component options: END
-
-// endpoint options: START
-
-// endpoint options: END
-
-include::spring-boot:partial$starter.adoc[]
-
-== Implementing a reverse proxy
+=== Implementing a reverse proxy
 
 Platform HTTP component can act as a reverse proxy. In that case, some headers 
are populated from the absolute URL received on the request line of the HTTP 
request. Those headers are specific to the underlining platform.
 
 At this moment, this feature is only supported for Quarkus implemented in 
`camel-platform-http-vertx` component.
+
+include::spring-boot:partial$starter.adoc[]
\ No newline at end of file
diff --git a/components/camel-plc4x/src/main/docs/plc4x-component.adoc 
b/components/camel-plc4x/src/main/docs/plc4x-component.adoc
index c2de3853995..46250830f26 100644
--- a/components/camel-plc4x/src/main/docs/plc4x-component.adoc
+++ b/components/camel-plc4x/src/main/docs/plc4x-component.adoc
@@ -16,20 +16,6 @@
 
 The Camel Component for PLC4X allows you to create routes using the PLC4X API 
to read from a Programmable Logic Controllers (PLC) device or write to it.
 
-It supports various protocols by adding the driver dependencies:
-
-* Allen Bradley ETH
-* Automation Device Specification (ADS)
-* CANopen
-* EtherNet/IP
-* Firmata
-* KNXnet/IP
-* Modbus (TCP/UDP/Serial)
-* Open Platform Communications Unified Architecture (OPC UA)
-* Step7 (S7)
-
-The list of supported protocols is growing in https://plc4x.apache.org[PLC4X]. 
There are good chance that they will work out of the box just by adding the 
driver dependency. You can check 
https://plc4x.apache.org/users/protocols/index.html[here].
-
 == URI Format
 
 ------------------------------
@@ -76,8 +62,25 @@ Maven users will need to add the following dependency to 
their `pom.xml`.
 
 where `$\{camel-version}` must be replaced by the actual version of Camel.
 
+== Usage
+
+The Camel PLC4X component supports various protocols by adding the driver 
dependencies:
+
+* Allen Bradley ETH
+* Automation Device Specification (ADS)
+* CANopen
+* EtherNet/IP
+* Firmata
+* KNXnet/IP
+* Modbus (TCP/UDP/Serial)
+* Open Platform Communications Unified Architecture (OPC UA)
+* Step7 (S7)
+
+The list of supported protocols is growing in https://plc4x.apache.org[PLC4X].
+There are good chances that they will work out of the box just by adding the 
driver dependency.
+You can check https://plc4x.apache.org/users/protocols/index.html[here].
 
-== Consumer
+=== Consumer
 
 The consumer supports one-time reading or Triggered Reading. To read from
 the PLC, use a  `Map<String,String>` containing the Alias and Queries for the 
Data you want (tags).
@@ -87,11 +90,11 @@ You can configure the _tags_ using `tag.key=value` in the 
URI, and you can repea
 The Body created by the Consumer will be a `Map<String,Object>` containing the 
Aliases and their associated value
 read from the PLC.
 
-== Polling Consumer
+=== Polling Consumer
 
 The polling consumer supports consecutive reading. The input and output are 
the same as for the regular consumer.
 
-== Producer
+=== Producer
 
 To write data to the PLC, we also use a `Map`. The difference with the 
Producer is that the `Value` of the Map has also to
 be a `Map`. Also, this `Map` has to be set into the `Body` of the `Message`
diff --git a/components/camel-printer/src/main/docs/lpr-component.adoc 
b/components/camel-printer/src/main/docs/lpr-component.adoc
index b21986d8332..971902f8173 100644
--- a/components/camel-printer/src/main/docs/lpr-component.adoc
+++ b/components/camel-printer/src/main/docs/lpr-component.adoc
@@ -64,9 +64,11 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Sending Messages to a Printer
+== Usage
 
-=== Printer Producer
+=== Sending Messages to a Printer
+
+==== Printer Producer
 
 Sending data to the printer is very straightforward and involves
 creating a producer endpoint that can be sent message exchanges on in
@@ -76,8 +78,9 @@ route.
 
 Usage samples.
 
-=== Example 1: Printing text-based payloads on a Default printer using letter 
stationary and one-sided mode
+=== Printing text-based payloads
 
+.Printing text-based payloads on a Default printer using letter stationary and 
one-sided mode
 [source,java]
 -----------------------------------------------
 RouteBuilder builder = new RouteBuilder() {
@@ -91,8 +94,9 @@ RouteBuilder builder = new RouteBuilder() {
     }};
 -----------------------------------------------
 
-=== Example 2: Printing GIF-based payloads on a remote printer using A4 
stationary and one-sided mode
+=== Printing GIF-based payloads
 
+.Printing GIF-based payloads on a remote printer using A4 stationary and 
one-sided mode
 [source,java]
 --------------------------------------------------
 RouteBuilder builder = new RouteBuilder() {
@@ -105,8 +109,9 @@ RouteBuilder builder = new RouteBuilder() {
    }};
 --------------------------------------------------
 
-=== Example 3: Printing JPEG-based payloads on a remote printer using Japanese 
Postcard stationary and one-sided mode
+=== Printing JPEG-based payloads
 
+.Printing JPEG-based payloads on a remote printer using Japanese Postcard 
stationary and one-sided mode
 [source,java]
 --------------------------------------------------
 RouteBuilder builder = new RouteBuilder() {
diff --git a/components/camel-protobuf/src/main/docs/protobuf-dataformat.adoc 
b/components/camel-protobuf/src/main/docs/protobuf-dataformat.adoc
index 863da26be3f..2b7a9120c38 100644
--- a/components/camel-protobuf/src/main/docs/protobuf-dataformat.adoc
+++ b/components/camel-protobuf/src/main/docs/protobuf-dataformat.adoc
@@ -39,7 +39,7 @@ include::partial$dataformat-options.adoc[]
 == Content type format
 
 It's possible to parse JSON message to convert it to the protobuf format and 
unparse it back using native util converter.
-To use this option, set contentTypeFormat value to 'json' or call protobuf 
with second parameter.
+To use this option, set contentTypeFormat value to `json` or call protobuf 
with second parameter.
 If the default instance is not specified, always use the native protobuf 
format.
 The sample code shows below:
 
@@ -52,14 +52,19 @@ from("direct:marshal")
 
--------------------------------------------------------------------------------------------------
 
 == Input data type
+
 This dataformat supports marshaling input data either as protobuf `Message` 
type or `Map` data type.
 In case of input data as `Map` type, first it will try to retrieve the data as 
`Map` using built-in type converters, if it fails to
 do so, it will fall back to retrieve it as proto `Message`.
 
 == Output data type
+
 As mentioned above, you can define the content type format to choose from JSON 
or native to serialize/deserialize data from/to.
 In addition, you can also obtain the data as `Map` and let this component do 
the heavy lifting to parse the
-data from proto `Message` to `Map`, you will need to set the 
`contentTypeFormat` to *native* and explicitly define the data type `Map` when 
you obtain body of the exchange, e.g.: 
`exchange.getMessage().getBody(Map.class)`.
+data from proto `Message` to `Map`,
+you will need to set the `contentTypeFormat` to `native`
+and explicitly define the data type `Map` when you get body of the exchange.
+For instance: `exchange.getMessage().getBody(Map.class)`.
 
 == Protobuf overview
 
@@ -109,11 +114,11 @@ message AddressBook {
 == Generating Java classes
 
 The Protobuf SDK provides a compiler which will generate the Java
-classes for the format we defined in our .proto file.
+classes for the format we defined in our `.proto` file.
 If your operating system is supported by 
https://www.xolstice.org/protobuf-maven-plugin[Protobuf Java code generator 
maven plugin],
 you can automate protobuf Java code generating by adding the following 
configurations to your `pom.xml`:
 
-Insert operating system and CPU architecture detection extension inside 
**<build>** tag of the project pom.xml or set ${os.detected.classifier} 
parameter manually
+Insert operating system and CPU architecture detection extension inside 
`<build>` tag of the project `pom.xml` or set `${os.detected.classifier}` 
parameter manually
 [source,xml]
 -------------------------------------------------------------------------
 <extensions>
@@ -124,7 +129,7 @@ Insert operating system and CPU architecture detection 
extension inside **<build
   </extension>
 </extensions>
 -------------------------------------------------------------------------
-Insert gRPC and protobuf Java code generator plugin **<plugins>** tag of the 
project pom.xml
+Insert gRPC and protobuf Java code generator plugin **<plugins>** tag of the 
project `pom.xml`
 [source,xml]
 -------------------------------------------------------------------------
 <plugin>
@@ -174,7 +179,7 @@ DataFormat marshal and unmarshal API like this.
    from("direct:back").unmarshal(format).to("mock:reverse");
 
-----------------------------------------------------------------------------------
 
-Or use the DSL protobuf() passing the unmarshal default instance or
+Or use the DSL `protobuf()` passing the unmarshal default instance or
 default instance class name like this. However, if you have input data as 
`Map` type, you will need to **specify** the ProtobufDataFormat otherwise it 
will throw an error.
 
 [source,java]
@@ -193,7 +198,7 @@ default instance class name like this. However, if you have 
input data as `Map`
 The following example shows how to use Protobuf to unmarshal using Spring
 configuring the protobuf data type
 
-[source,java]
+[source,xml]
 
----------------------------------------------------------------------------------------------------------
 <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
   <route>
@@ -208,9 +213,10 @@ configuring the protobuf data type
 
 == Dependencies
 
-To use Protobuf in your Camel routes you need to add the dependency on
+To use Protobuf in your Camel routes, you need to add the dependency on
 *camel-protobuf*, which implements this data format.
 
+.Example pom.xml for `camel-protobuf`
 [source,xml]
 -----------------------------------------
 <dependency>
diff --git a/components/camel-pubnub/src/main/docs/pubnub-component.adoc 
b/components/camel-pubnub/src/main/docs/pubnub-component.adoc
index 3844f1fb407..ecbfcdaf83b 100644
--- a/components/camel-pubnub/src/main/docs/pubnub-component.adoc
+++ b/components/camel-pubnub/src/main/docs/pubnub-component.adoc
@@ -63,7 +63,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Message body
+== Usage
+
+=== Message body
 
 The message body can contain any JSON serializable data, including Objects, 
Arrays, Integers, and Strings.
 Message data should not contain special Java V4 classes or functions as these 
will not serialize.
@@ -157,9 +159,10 @@ from("direct:control")
 ----
 
 There are a couple of examples in the test directory that show some of the 
PubNub features.
-They require a PubNub account, from where you can obtain a publish- and 
subscribe key.
+They require a PubNub account, from where you can obtain a publish/subscribe 
key.
  
-The example PubNubSensorExample already contains a subscribe key provided by 
PubNub, so this is ready to run without an account.
+The example PubNubSensorExample already contains a subscription key provided 
by PubNub,
+so this is ready to run without an account.
 The example illustrates the PubNub component subscribing to an infinite stream 
of sensor data.
 
 
diff --git a/components/camel-python/src/main/docs/python-language.adoc 
b/components/camel-python/src/main/docs/python-language.adoc
index efa93a748c8..db7d88713bc 100644
--- a/components/camel-python/src/main/docs/python-language.adoc
+++ b/components/camel-python/src/main/docs/python-language.adoc
@@ -50,7 +50,7 @@ To use Python in your Camel routes, you need to add the 
dependency on
 *camel-python* which implements the Python language.
 
 If you use Maven, you could add the following to your `pom.xml`,
-substituting the version number for the latest & greatest release.
+substituting the version number for the latest release.
 
 [source,xml]
 -------------------------------------
diff --git a/components/camel-quartz/src/main/docs/quartz-component.adoc 
b/components/camel-quartz/src/main/docs/quartz-component.adoc
index 1adc0d6f233..10eb9dac6f8 100644
--- a/components/camel-quartz/src/main/docs/quartz-component.adoc
+++ b/components/camel-quartz/src/main/docs/quartz-component.adoc
@@ -15,9 +15,7 @@
 *{component-header}*
 
 The Quartz component provides a scheduled delivery of messages using
-the http://www.quartz-scheduler.org/[Quartz Scheduler 2.x].  +
- Each endpoint represents a different timer (in Quartz terms, a Trigger
-and JobDetail).
+the http://www.quartz-scheduler.org/[Quartz Scheduler 2.x].
 
 Maven users will need to add the following dependency to their `pom.xml`
 for this component:
@@ -61,7 +59,11 @@ include::partial$component-endpoint-options.adoc[]
 // endpoint options: END
 
 
-== Configuring quartz.properties file
+== Usage
+
+Each endpoint represents a different timer (in Quartz terms, a `Trigger` and 
``JobDetail`).
+
+=== Configuring quartz.properties file
 
 By default, Quartz will look for a `quartz.properties` file in the
 `org/quartz` directory of the classpath. If you are using WAR
@@ -89,16 +91,16 @@ To do this, you can configure this in Spring XML as follows
 </bean>
 ----
 
-== Enabling Quartz scheduler in JMX
+=== Enabling Quartz scheduler in JMX
 
-You need to configure the quartz scheduler properties to enable JMX. +
- That is typically setting the option
+You need to configure the quartz scheduler properties to enable JMX.
+That is typically setting the option
 `"org.quartz.scheduler.jmx.export"` to a `true` value in the
 configuration file.
 
-This option is set to true by default, unless explicitly disabled.
+This option is set to `true` by default, unless explicitly disabled.
 
-== Clustering
+=== Clustering
 
 If you use Quartz in clustered mode, e.g., the `JobStore` is clustered.
 Then the xref:quartz-component.adoc[Quartz] component will *not* pause/remove
@@ -108,7 +110,7 @@ to keep running on the other nodes in the cluster.
 NOTE: When running in clustered node, no checking is done to ensure
 unique job name/group for endpoints.
 
-== Message Headers
+=== Message Headers
 
 Camel adds the getters from the Quartz Execution Context as header
 values. The following headers are added: +
@@ -120,7 +122,7 @@ values. The following headers are added: +
 The `fireTime` header contains the `java.util.Date` of when the exchange
 was fired.
 
-== Using Cron Triggers
+=== Using Cron Triggers
 
 Quartz supports
 
http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html[Cron-like
@@ -153,7 +155,7 @@ valid URI syntax:
 |`+` | _Space_
 |===
 
-== Specifying time zone
+=== Specifying time zone
 
 The Quartz Scheduler allows you to configure time zone per trigger. For
 example, to use a time zone of your country, then you can do as follows:
@@ -164,7 +166,7 @@ 
quartz://groupName/timerName?cron=0+0/5+12-18+?+*+MON-FRI&trigger.timeZone=Europ
 
 The timeZone value is the values accepted by `java.util.TimeZone`.
 
-== Specifying start date
+=== Specifying start date
 
 The Quartz Scheduler allows you to configure start date per trigger. You can 
provide the start date 
 in the date format yyyy-MM-dd'T'HH:mm:ssz.
@@ -173,10 +175,10 @@ in the date format yyyy-MM-dd'T'HH:mm:ssz.
 
quartz://groupName/timerName?cron=0+0/5+12-18+?+*+MON-FRI&trigger.startAt=2023-11-22T14:32:36UTC
 ----
 
-== Specifying end date
+=== Specifying end date
 
 The Quartz Scheduler allows you to configure end date per trigger. You can 
provide the end date 
-in the date format yyyy-MM-dd'T'HH:mm:ssz.
+in the date format `yyyy-MM-dd'T'HH:mm:ssz`.
 
 ----
 
quartz://groupName/timerName?cron=0+0/5+12-18+?+*+MON-FRI&trigger.endAt=2023-11-22T14:32:36UTC
@@ -186,7 +188,7 @@ Note: Start and end dates may be affected by time drifts 
and unpredictable behav
 daylight-saving time changes.
 Exercise caution, especially in environments where precise timing is critical.
 
-== Configuring misfire instructions
+=== Configuring misfire instructions
 
 The quartz scheduler can be configured with a misfire instruction
 to handle misfire situations for the trigger.
@@ -206,16 +208,16 @@ 
quartz://myGroup/myTimerName?cron=0/2+*+*+*+*+?&trigger.misfireInstruction=2
 
 The simple and cron triggers have the following misfire instructions 
representative:
 
-=== SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW = 1 (default)
+==== SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW = 1 (default)
 
 Instructs the Scheduler that upon a mis-fire
 situation, the SimpleTrigger wants to be fired now by Scheduler.
 
 This instruction should typically only be used for
 'one-shot' (non-repeating) Triggers. If it is used on a trigger with a
-repeat count > 0, then it is equivalent to the instruction 
`MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT`.
+repeat count greater than 0, then it is equivalent to the instruction 
`MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT`.
 
-=== 
SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT = 2
+==== 
SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT = 2
 
 Instructs the Scheduler that upon a mis-fire
 situation, the SimpleTrigger wants to be
@@ -229,7 +231,7 @@ the start-time and repeat-count that it was originally 
setup with.
 This is only an issue if you for some reason wanted to be able to tell what
 the original values were at some later time.
 
-=== 
SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT = 3
+==== 
SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT = 3
 
 Instructs the Scheduler that upon a mis-fire
 situation, the SimpleTrigger wants to be
@@ -251,7 +253,7 @@ This instruction could cause the Trigger
 to go to the 'COMPLETE' state after firing `now`, if all the
 repeat-fire-times where missed.
 
-=== SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT = 4
+==== SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT = 4
 
 Instructs the Scheduler that upon a mis-fire
 situation, the SimpleTrigger wants to be
@@ -262,7 +264,7 @@ repeat count set to what it would be, if it had not missed 
any firings.
 WARNING: This instruction could cause the Trigger
 to go directly to the 'COMPLETE' state if all fire-times where missed.
 
-=== SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT = 5
+==== SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT = 5
 
 Instructs the Scheduler that upon a mis-fire
 situation, the SimpleTrigger wants to be
@@ -273,12 +275,12 @@ WARNING: This instruction could cause the Trigger
 to go directly to the 'COMPLETE' state if the end-time of the trigger
 has arrived.
 
-=== CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW = 1 (default)
+==== CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW = 1 (default)
 
 Instructs the Scheduler that upon a mis-fire
 situation, the CronTrigger wants to be fired now by Scheduler.
 
-=== CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING = 2
+==== CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING = 2
 
 Instructs the Scheduler that upon a mis-fire
 situation, the CronTrigger wants to have its
@@ -287,16 +289,16 @@ current time (taking into account any associated Calendar.
 However, it does not want to be fired now.
 
 
-== Using QuartzScheduledPollConsumerScheduler
+=== Using QuartzScheduledPollConsumerScheduler
 
 The xref:quartz-component.adoc[Quartz] component provides a
-Polling Consumer scheduler which allows to
-use cron based scheduling for xref:eips:polling-consumer.adoc[Polling
+Polling Consumer scheduler which allows
+using cron based scheduling for xref:eips:polling-consumer.adoc[Polling
 Consumers] such as the File and FTP
 consumers.
 
-For example, to use a cron based expression to poll for files every second
-second, then a Camel route can be defined simply as:
+For example, to use a cron based expression to poll for files every second,
+then a Camel route can be defined simply as:
 
 [source,java]
 ----
@@ -328,7 +330,7 @@ and used.
 |`timeZone` |`Default` |`TimeZone` |The time zone to use for the CRON trigger.
 |===
 
-*Important:* Remember configuring these options from the endpoint
+IMPORTANT: Remember that configuring these options from the endpoint
 URIs must be prefixed with `scheduler.`.
 For example, to configure the trigger id and group:
 
@@ -347,25 +349,15 @@ use the following as well:
        .to("bean:process");
 ----
 
-== Cron Component Support
+=== Cron Component Support
 
 The Quartz component can be used as implementation of the Camel Cron component.
 
-
-Maven users will need to add the following additional dependency to their 
`pom.xml`:
-
-[source,xml]
-------------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-cron</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel core version -->
-</dependency>
-------------------------------------------------------------
+== Example
 
 Users can then use the cron component instead of the quartz component, as in 
the following route:
 
+.Example route for the cron component
 [source,java]
 ----
     from("cron://name?schedule=0+0/5+12-18+?+*+MON-FRI")
diff --git a/components/camel-quickfix/src/main/docs/quickfix-component.adoc 
b/components/camel-quickfix/src/main/docs/quickfix-component.adoc
index adad7c00a34..9e608db2428 100644
--- a/components/camel-quickfix/src/main/docs/quickfix-component.adoc
+++ b/components/camel-quickfix/src/main/docs/quickfix-component.adoc
@@ -39,24 +39,28 @@ for this component:
 quickfix:configFile[?sessionID=sessionID&lazyCreateEngine=true|false]
 ----
 
-The *configFile* is the name of the QuickFIX/J configuration to use for
+The `configFile` is the name of the QuickFIX/J configuration to use for
 the FIX engine (located as a resource found in your classpath). The
-optional *sessionID* identifies a specific FIX session. The format of
+optional `sessionID` identifies a specific FIX session. The format of
 the sessionID is:
 
 ----
 
(BeginString):(SenderCompID)[/(SenderSubID)[/(SenderLocationID)]]->(TargetCompID)[/(TargetSubID)[/(TargetLocationID)]]
 ----
 
-The optional *lazyCreateEngine* parameter allows
-creating QuickFIX/J engine on demand. Value *true* means the engine is
+The optional `lazyCreateEngine` parameter allows
+creating QuickFIX/J engine on demand:
+
+* The value `true` means the engine is
 started when the first message is sent or there's consumer configured in
-route definition. When **false** value is used, the engine is started at
-the endpoint creation. When this parameter is missing, the value of
-component's property *lazyCreateEngines* is being used.
+route definition.
+* When the value `false` is used, the engine is started at
+the endpoint creation.
 
-Example URIs:
+When this parameter is missing, the value of
+component's property `lazyCreateEngines` is being used.
 
+.Example URIs:
 ----
 quickfix:config.cfg
 
@@ -67,11 +71,11 @@ 
quickfix:config.cfg?sessionID=FIX.4.2:MyTradingCompany->SomeExchange&lazyCreateE
 
 == Endpoints
 
-FIX sessions are endpoints for the *quickfix* component. An endpoint URI
+FIX sessions are endpoints for the quickfix component. An endpoint URI
 may specify a single session or all sessions managed by a specific
 QuickFIX/J engine. Typical applications will use only one FIX engine, but
 advanced users may create multiple FIX engines by referencing different
-configuration files in *quickfix* component endpoint URIs.
+configuration files in quickfix component endpoint URIs.
 
 When a consumer does not include a session ID in the endpoint URI, it
 will receive exchanges for all sessions managed by the FIX engine
@@ -98,28 +102,29 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
+== Usage
+
 The DataDictionary header is useful if string messages are being
 received and need to be parsed in a route. QuickFIX/J requires a data
 dictionary to parse certain types of messages (with repeating groups,
 for example). By injecting a DataDictionary header in the route after
 receiving a message string, the FIX engine can properly parse the data.
 
-== QuickFIX/J Configuration Extensions
+=== QuickFIX/J Configuration Extensions
 
 When using QuickFIX/J directly, one typically writes code to create
 instances of logging adapters, message stores, and communication
-connectors. The *quickfix* component will automatically create instances
+connectors. The quickfix component will automatically create instances
 of these classes based on information in the configuration file. It also
 provides defaults for many of the commonly required settings and adds
 additional capabilities (like the ability to activate JMX support).
 
-The following sections describe how the *quickfix* component processes
+The following sections describe how the quickfix component processes
 the QuickFIX/J configuration. For comprehensive information about
 QuickFIX/J configuration, see the
-http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html[QFJ
-user manual].
+http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html[user 
manual].
 
-=== Communication Connectors
+==== Communication Connectors
 
 When the component detects an initiator or acceptor session setting in
 the QuickFIX/J configuration file, it will automatically create the
@@ -148,7 +153,7 @@ and must be placed in the settings default section.
 `ThreadedSocketAcceptor`
 |=======================================================================
 
-=== Logging
+==== Logging
 
 The QuickFIX/J logger implementation can be specified by including the
 following settings in the default section of the configuration file. The
@@ -175,7 +180,7 @@ will cause this log to be used.
 |`JdbcDriver` |Use a `JdbcLog`
 |=======================================================================
 
-=== Message Store
+==== Message Store
 
 The QuickFIX/J message store implementation can be specified by
 including the following settings in the default section of the
@@ -194,14 +199,14 @@ QuickFIX/J settings file.
 |`SleepycatDatabaseDir` |Use a `SleepcatStore`
 |=============================================
 
-=== Message Factory
+==== Message Factory
 
 A message factory is used to construct domain objects from raw FIX
 messages. The default message factory is `DefaultMessageFactory`.
 However, advanced applications may require a custom message factory.
 This can be set on the QuickFIX/J component.
 
-=== JMX
+==== JMX
 
 [width="100%",cols="10%,90%",options="header",]
 |============================================
@@ -209,7 +214,7 @@ This can be set on the QuickFIX/J component.
 |`UseJmx` |if `Y`, then enable QuickFIX/J JMX
 |============================================
 
-=== Other Defaults
+==== Other Defaults
 
 The component provides some default settings for what are normally
 required settings in QuickFIX/J configuration files. `SessionStartTime`
@@ -217,7 +222,7 @@ and `SessionEndTime` default to "00:00:00", meaning the 
session will not
 be automatically started and stopped. The `HeartBtInt` (heartbeat
 interval) defaults to 30 seconds.
 
-=== Minimal Initiator Configuration Example
+==== Minimal Initiator Configuration Example
 
 ----
 [SESSION]
@@ -227,7 +232,7 @@ SenderCompID=YOUR_SENDER
 TargetCompID=YOUR_TARGET
 ----
 
-== Using the InOut Message Exchange Pattern
+=== Using the InOut Message Exchange Pattern
 
 Although the FIX protocol is event-driven and asynchronous, there are
 specific pairs of messages
@@ -237,9 +242,9 @@ be a single request message and single reply message to the 
request.
 Examples include an
 OrderStatusRequest message and UserRequest.
 
-=== Implementing InOut Exchanges for Consumers
+==== Implementing InOut Exchanges for Consumers
 
-Add "exchangePattern=InOut" to the QuickFIX/J enpoint URI. The
+Add `exchangePattern=InOut` to the QuickFIX/J enpoint URI. The
 `MessageOrderStatusService` in
 the example below is a bean with a synchronous service method. The
 method returns the response
@@ -253,7 +258,7 @@ to the requestor session.
         .bean(new MarketOrderStatusService());
 ----
 
-=== Implementing InOut Exchanges for Producers
+==== Implementing InOut Exchanges for Producers
 
 For producers, sending a message will block until a reply is received or
 a timeout occurs. There
@@ -266,16 +271,16 @@ using `Exchange` properties.
 [width="100%",cols="60%,10%,20%,10%",options="header",]
 |=======================================================================
 |Description |Key String |Key Constant |Default
-|Correlation Criteria |"CorrelationCriteria"
-|QuickfixjProducer.CORRELATION_CRITERIA_KEY |None
+|Correlation Criteria |`CorrelationCriteria`
+|`QuickfixjProducer.CORRELATION_CRITERIA_KEY` |None
 
-|Correlation Timeout in Milliseconds |"CorrelationTimeout"
-|QuickfixjProducer.CORRELATION_TIMEOUT_KEY |1000
+|Correlation Timeout in Milliseconds |`CorrelationTimeout`
+|`QuickfixjProducer.CORRELATION_TIMEOUT_KEY` |1000
 |=======================================================================
 
 The correlation criteria is defined with a `MessagePredicate` object.
 The following example will treat
-a FIX ExecutionReport from the specified session where the transaction
+a FIX `ExecutionReport` from the specified session where the transaction
 type is STATUS and the Order ID
 matches our request. The session ID should be for the __requestor__, the
 sender and target CompID fields
@@ -289,20 +294,7 @@ 
exchange.setProperty(QuickfixjProducer.CORRELATION_CRITERIA_KEY,
         .withField(OrderID.FIELD, request.getString(OrderID.FIELD)));
 ----
 
-=== Example
-
-The source code contains an example called `RequestReplyExample` that
-demonstrates the InOut exchanges
-for a consumer and producer. This example creates a simple HTTP server
-endpoint that accepts order
-status requests. The HTTP request is converted to a FIX
-OrderStatusRequestMessage, is augmented with a
-correlation criteria, and is then routed to a quickfix endpoint. The
-response is then converted to a
-JSON-formatted string and sent back to the HTTP server endpoint to be
-provided as the web response.
-
-== Spring Configuration
+=== Spring Configuration
 
 The QuickFIX/J component includes a Spring `FactoryBean` for configuring
 the session settings within a Spring context. A type converter for
@@ -373,7 +365,7 @@ settings for both sessions.
 
include::{examplesdir}/components/camel-quickfix/src/test/resources/org/apache/camel/component/quickfixj/QuickfixjSpringTest-context.xml[tags=e1]
 ----
 
-== Exception handling
+=== Exception handling
 
 QuickFIX/J behavior can be modified if certain exceptions are thrown
 during processing of a message. If a `RejectLogon` exception is thrown
@@ -384,13 +376,13 @@ Normally, QuickFIX/J handles the logon process 
automatically. However,
 sometimes an outgoing logon message must be modified to include
 credentials required by a FIX counterparty. If the FIX logon message
 body is modified when sending a logon message
-(EventCategory=`AdminMessageSent` the modified message will be sent to
+(`EventCategory=AdminMessageSent` the modified message will be sent to
 the counterparty. It is important that the outgoing logon message is
 being processed __synchronously__. If it is processed asynchronously (on
 another thread), the FIX engine will immediately send the unmodified
 outgoing message when its callback method returns.
 
-== FIX Sequence Number Management
+=== FIX Sequence Number Management
 
 If an application exception is thrown during _synchronous_ exchange
 processing, this will cause QuickFIX/J to not increment incoming FIX
@@ -415,7 +407,9 @@ sending messages.
 See the FIX protocol specifications and the QuickFIX/J documentation for
 more details about FIX sequence number management.
 
-== Route Examples
+== Examples
+
+=== Route Examples
 
 Several examples are included in the QuickFIX/J component source code
 (test subdirectories). One of these examples implements a trival trade
@@ -451,6 +445,19 @@ 
from("quickfix:examples/inprocess.qf.cfg?sessionID=FIX.4.2:TRADER->MARKET").
     bean(new MyTradeExecutionProcessor());
 ----
 
+=== Additional Examples
+
+The source code contains an example called `RequestReplyExample` that
+demonstrates the InOut exchanges
+for a consumer and producer. This example creates a simple HTTP server
+endpoint that accepts order
+status requests. The HTTP request is converted to a FIX
+`OrderStatusRequestMessage`, is augmented with a
+correlation criteria, and is then routed to a quickfix endpoint. The
+response is then converted to a
+JSON-formatted string and sent back to the HTTP server endpoint to be
+provided as the web response.
+
 
 
 include::spring-boot:partial$starter.adoc[]
diff --git 
a/components/camel-reactive-streams/src/main/docs/reactive-streams-component.adoc
 
b/components/camel-reactive-streams/src/main/docs/reactive-streams-component.adoc
index 49f032bbced..184bf39d91f 100644
--- 
a/components/camel-reactive-streams/src/main/docs/reactive-streams-component.adoc
+++ 
b/components/camel-reactive-streams/src/main/docs/reactive-streams-component.adoc
@@ -76,7 +76,7 @@ The library is aimed to support all the communication modes 
needed by an applica
 * *Request* a transformation to a Camel route (In-Out towards Camel)
 * *Process* data flowing from a Camel route using a reactive processing step 
(In-Out from Camel)
 
-== Getting data from Camel
+=== Getting data from Camel
 To subscribe to data flowing from a Camel route, exchanges should be 
redirected to
 a named stream, like in the following snippet:
 
@@ -116,7 +116,7 @@ Flowable.fromPublisher(numbers)
 
 The example prints all numbers generated by Camel into `System.out`.
 
-=== Getting data from Camel using the direct API
+==== Getting data from Camel using the direct API
 
 For short Camel routes and for users that prefer defining the whole processing 
flow
 using functional constructs of the reactive framework (without using the Camel 
DSL at all),
@@ -135,7 +135,7 @@ Flowable.fromPublisher(files)
     .subscribe();
 ---------------------------------------------------------
 
-== Sending data to Camel
+=== Sending data to Camel
 When an external library needs to push events into a Camel route, the Reactive 
Streams
 endpoint must be set as consumer.
 
@@ -168,7 +168,7 @@ Flowable.interval(1, TimeUnit.SECONDS)
 
 String items are generated every second by RxJava in the example, and they are 
pushed into the Camel route defined above.
 
-=== Sending data to Camel using the direct API
+==== Sending data to Camel using the direct API
 
 Also in this case, the direct API can be used to obtain a Camel subscriber 
from an endpoint URI.
 
@@ -181,7 +181,7 @@ Flowable.just("hello", "world")
     .subscribe(camel.subscriber("seda:queue", String.class));
 ---------------------------------------------------------
 
-== Request a transformation to Camel
+=== Request a transformation to Camel
 
 Routes defined in some Camel DSL can be used within a reactive stream 
framework to perform a
 specific transformation.
@@ -209,7 +209,7 @@ from("reactive-streams:readAndMarshal")
 .marshal() // ... other details
 ---------------------------------------------------------
 
-=== Request a transformation to Camel using the direct API
+==== Request a transformation to Camel using the direct API
 
 An alternative approach consists of using the URI endpoints directly in the 
reactive flow:
 
@@ -237,7 +237,7 @@ from("direct:process")
 ---------------------------------------------------------
 
 
-== Process Camel data into the reactive framework
+=== Process Camel data into the reactive framework
 
 While a reactive streams _Publisher_ allows exchanging data in a 
unidirectional way,
 Camel routes often use an in-out exchange pattern (e.g., to define REST 
endpoints and, in general,
@@ -285,8 +285,8 @@ camel.process("rest:get:orders", exchange ->
 
 See Camel examples (*camel-example-reactive-streams*) for details.
 
-== Advanced Topics
-=== Controlling Backpressure (producer side)
+=== Advanced Topics
+==== Controlling Backpressure (producer side)
 
 When routing Camel exchanges to an external subscriber, backpressure is 
handled by an internal buffer that caches exchanges
 before delivering them.
@@ -301,7 +301,7 @@ from("jms:queue")
 ---------------------------------------------------------
 
 If the JMS queue contains a high number of messages and the Subscriber 
associated with the `flow` stream is too slow,
-messages are dequeued from JMS and appended to the buffer, possibly causing a 
"out of memory" error.
+messages are dequeued from JMS and appended to the buffer, possibly causing an 
_"out of memory"_ error.
 To avoid such problems, a `ThrottlingInflightRoutePolicy` can be set in the 
route.
 
 [source,java]
@@ -336,9 +336,9 @@ from("direct:thermostat")
 
 When the `LATEST` backpressure strategy is used, the publisher keeps only the 
last exchange received from the route, while older data is discarded (other 
options are available).
 
-=== Controlling Backpressure (consumer side)
+==== Controlling Backpressure (consumer side)
 
-When Camel consumes items from a reactive-streams publisher, the maximum 
number of inflight exchanges can be set as endpoint option.
+When Camel consumes items from a reactive-streams publisher, the maximum 
number of in-flight exchanges can be set as an endpoint option.
 
 The subscriber associated with the consumer interacts with the publisher to 
keep the number of messages in the route lower than the threshold.
 
diff --git a/components/camel-ref/src/main/docs/ref-component.adoc 
b/components/camel-ref/src/main/docs/ref-component.adoc
index 461f80874ac..826929da57a 100644
--- a/components/camel-ref/src/main/docs/ref-component.adoc
+++ b/components/camel-ref/src/main/docs/ref-component.adoc
@@ -42,8 +42,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
+== Usage
 
-== Runtime lookup
+=== Runtime lookup
 
 This component can be used when you need dynamic discovery of endpoints
 in the Registry where you can compute the URI at
diff --git 
a/components/camel-resourceresolver-github/src/main/docs/resourceresolver-github.adoc
 
b/components/camel-resourceresolver-github/src/main/docs/resourceresolver-github.adoc
index cac836d07db..21b5a1e24b5 100644
--- 
a/components/camel-resourceresolver-github/src/main/docs/resourceresolver-github.adoc
+++ 
b/components/camel-resourceresolver-github/src/main/docs/resourceresolver-github.adoc
@@ -41,7 +41,7 @@ 
github:apache:camel-kamelets:kamelets/aws-ddb-streams-source.kamelet.yaml
 
 
 IMPORTANT: This resource resolver can potentially load any resources from 
GitHub that are in public repositories.
-It's not recommended for production usage, but is great for development and 
demo purposes.
+It's not recommended for production usage but is great for development and 
demo purposes.
 
 == Resolving from gist
 
diff --git 
a/components/camel-rest-openapi/src/main/docs/rest-openapi-component.adoc 
b/components/camel-rest-openapi/src/main/docs/rest-openapi-component.adoc
index ff7c6a97451..7f1032d1c56 100644
--- a/components/camel-rest-openapi/src/main/docs/rest-openapi-component.adoc
+++ b/components/camel-rest-openapi/src/main/docs/rest-openapi-component.adoc
@@ -62,9 +62,9 @@ failing that OpenApi's own resource loading support.
 This component does not act as an HTTP client.
 It delegates that to another component mentioned above.
 The lookup mechanism searches for a single component that
-implements the _RestProducerFactory_ interface and
+implements the `RestProducerFactory` interface and
 uses that.
-If the CLASSPATH contains more than one, then the property
+If the `_CLASSPATH_` contains more than one, then the property
 `componentName` should be set to indicate which component to delegate
 to.
 
@@ -86,9 +86,9 @@ and implement the required _RestProducerFactory_ interface -- 
as do the
 components listed at the top.
 
 If you do not specify the _componentName_ at either component or 
-endpoint level, CLASSPATH is searched for a suitable delegate. There 
-should be only one component present on the CLASSPATH that implements 
-the _RestProducerFactory_ interface for this to work.
+endpoint level, `_CLASSPATH_` is searched for a suitable delegate. There
+should be only one component present on the `_CLASSPATH_` that implements
+the `RestProducerFactory` interface for this to work.
 
 This component's endpoint URI is lenient which means that in addition
 to message headers you can specify REST operation's parameters as
@@ -110,23 +110,51 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
+== Usage
 
-== Example: PetStore
+== Request validation
+
+API requests can be validated against the configured OpenAPI specification 
before they are sent by setting the `requestValidationEnabled` option to `true`.
+Validation is provided by the 
https://bitbucket.org/atlassian/swagger-request-validator/src/master/[swagger-request-validator].
+
+The validator checks for the following conditions:
+
+* request body - Checks if the request body is required and whether there is 
any body on the Camel Exchange.
+
+* valid json - Checks if the content-type is `application/json` that the 
message body can be parsed as valid JSon.
+
+* content-type - Validates whether the `Content-Type` header for the request 
is valid for the API operation.
+The value is taken from the `Content-Type` Camel message exchange header.
+
+* request parameters - Validates whether an HTTP header required by the API 
operation is present. The header is
+expected to be present among the Camel message exchange headers.
+
+* query parameters - Validates whether an HTTP query parameter required by the 
API operation is present. The query parameter is
+expected to be present among the Camel message exchange headers.
+
+If any of the validation checks fail, then a `RestOpenApiValidationException` 
is thrown. The exception object
+has a `getValidationErrors` method that returns the error messages from the 
validator.
+
+
+== Examples
+
+=== PetStore
 
 Checkout the `rest-openapi-simple` example project in
-the https://github.com/apache/camel-spring-boot-examples repository.
+the 
https://github.com/apache/camel-spring-boot-examples[camel-spring-boot-examples]
 repository.
 
 For example, if you wanted to use the
 https://petstore3.swagger.io/api/v3/[_PetStore_] provided REST API simply
 reference the specification URI and desired operation id from the
 OpenApi specification or download the specification and store it as
-`openapi.json` (in the root) of CLASSPATH that way it will be 
+`openapi.json` (in the root) of `_CLASSPATH_` that way it will be
 automatically used. Let's use the xref:http-component.adoc[HTTP]
 component to perform all the requests and Camel's excellent support for 
 Spring Boot.
 
 Here are our dependencies defined in Maven POM file:
 
+.Example pom.xml
 [source,xml]
 ----
 <dependency>
@@ -140,7 +168,7 @@ Here are our dependencies defined in Maven POM file:
 </dependency>
 ----
 
-Start by defining a _RestOpenApiComponent_ bean:
+Start by defining a `RestOpenApiComponent` bean:
 
 [source,java]
 ----
@@ -166,7 +194,7 @@ manner (using `application.properties`).
 
 In this example, there is no need to explicitly associate the `petstore`
 component with the `HttpComponent` as Camel will use the first class on 
-the CLASSPATH that implements `RestProducerFactory`. However, if a different
+the `_CLASSPATH_` that implements `RestProducerFactory`. However, if a 
different
 component is required, then calling `petstore.setComponentName("http")` 
 would use the named component from the Camel registry.
 
@@ -184,27 +212,3 @@ String getPetJsonById(int petId) {
     return template.requestBodyAndHeader("petstore:getPetById", null, "petId", 
petId);
 }
 ----
-
-== Request validation
-
-API requests can be validated against the configured OpenAPI specification 
before they are sent by setting the `requestValidationEnabled` option to `true`.
-Validation is provided by the 
https://bitbucket.org/atlassian/swagger-request-validator/src/master/[swagger-request-validator].
-
-The validator checks for the following conditions:
-
-* request body - Checks if the request body is required and whether there is 
any body on the Camel Exchange.
-
-* valid json - Checks if the content-type is `application/json` that the 
message body can be parsed as valid JSon.
-
-* content-type - Validates whether the `Content-Type` header for the request 
is valid for the API operation.
-The value is taken from the `Content-Type` Camel message exchange header.
-
-* request parameters - Validates whether an HTTP header required by the API 
operation is present. The header is
-expected to be present among the Camel message exchange headers.
-
-* query parameters - Validates whether an HTTP query parameter required by the 
API operation is present. The query parameter is
-expected to be present among the Camel message exchange headers.
-
-If any of the validation checks fail, then a `RestOpenApiValidationException` 
is thrown. The exception object
-has a `getValidationErrors` method that returns the error messages from the 
validator.
-
diff --git a/components/camel-rest/src/main/docs/rest-component.adoc 
b/components/camel-rest/src/main/docs/rest-component.adoc
index 1f532936151..29be9d030a4 100644
--- a/components/camel-rest/src/main/docs/rest-component.adoc
+++ b/components/camel-rest/src/main/docs/rest-component.adoc
@@ -59,7 +59,9 @@ The following components support the REST producer:
 * camel-undertow
 * camel-vertx-http
 
-== Path and uriTemplate syntax
+== Usage
+
+=== Path and uriTemplate syntax
 
 The path and uriTemplate option is defined using a REST syntax where you
 define the REST context path using support for parameters. 
@@ -103,7 +105,9 @@ from("rest:get:hello:/french/{me}")
   .transform().simple("Bonjour ${header.me}");
 ----
 
-== Rest producer examples
+== Examples
+
+=== Rest producer examples
 
 You can use the REST component to call REST services like any other Camel 
component.
 
@@ -154,7 +158,7 @@ from("direct:start")
 ----
 
 
-== Rest producer binding
+=== Rest producer binding
 
 The REST producer supports binding using JSON or XML like the rest-dsl does.
 
@@ -198,7 +202,7 @@ For example, if the REST service returns a JSON payload 
that binds to `com.foo.M
 IMPORTANT: You must configure `outType` option if you want POJO binding to 
happen for the response messages received from calling the REST service.
 
 
-== More examples
+=== More examples
 
 See Rest DSL, which offers more examples and how you
 can use the Rest DSL to define those in a nicer, restful way.
diff --git a/components/camel-rocketmq/src/main/docs/rocketmq-component.adoc 
b/components/camel-rocketmq/src/main/docs/rocketmq-component.adoc
index 836d6a56cc9..f162466e34e 100644
--- a/components/camel-rocketmq/src/main/docs/rocketmq-component.adoc
+++ b/components/camel-rocketmq/src/main/docs/rocketmq-component.adoc
@@ -64,7 +64,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== InOut Pattern
+== Usage
+
+=== InOut Pattern
 
 InOut Pattern based on Message Key.
 When the producer sends the message, a messageKey will be generated and append 
to the message's key.
diff --git a/components/camel-rss/src/main/docs/rss-component.adoc 
b/components/camel-rss/src/main/docs/rss-component.adoc
index 95c4dc4ed55..b4d6d785fd0 100644
--- a/components/camel-rss/src/main/docs/rss-component.adoc
+++ b/components/camel-rss/src/main/docs/rss-component.adoc
@@ -56,7 +56,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Exchange data types
+== Usage
+
+=== Exchange data types
 
 Camel initializes the In body on the Exchange with a ROME `SyndFeed`.
 Depending on the value of the `splitEntries` flag, Camel returns either
@@ -82,7 +84,7 @@ 
from("rss:http://someserver.com/feeds/posts/default?alt=rss&splitEntries=false&d
     .to("bean:rss");
 ----
 
-== Filtering entries
+=== Filtering entries
 
 You can filter out entries using XPath, as shown in the
 data format section above. You can also exploit Camel's
diff --git a/components/camel-saga/src/main/docs/saga-component.adoc 
b/components/camel-saga/src/main/docs/saga-component.adoc
index fc1e448da86..9f6d91f7a4a 100644
--- a/components/camel-saga/src/main/docs/saga-component.adoc
+++ b/components/camel-saga/src/main/docs/saga-component.adoc
@@ -19,7 +19,7 @@ The Saga component provides a bridge to execute custom 
actions within a route us
 The component should be used for advanced tasks, such as deciding to complete 
or compensate a Saga
 with completionMode set to *MANUAL*.
 
-Refer to the Saga EIP documentation for help on using sagas in common 
scenarios.
+Refer to the xref:eips:saga-eip.adoc[Saga EIP] documentation for help on using 
sagas in common scenarios.
 
 == URI format
 
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc
 
b/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc
index d1e7bd0ec0f..45267503beb 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc
@@ -72,7 +72,9 @@ include::partial$component-endpoint-options.adoc[]
 include::partial$component-endpoint-headers.adoc[]
 // component headers: END
 
-== Authenticating to Salesforce [[AuthenticatingToSalesforce]]
+== Usage
+
+=== Authenticating to Salesforce [[AuthenticatingToSalesforce]]
 
 The component supports three OAuth authentication flows:
 
@@ -86,12 +88,12 @@ For each of the flows, different sets of properties need to 
be set:
 |===
 | Property     | Where to find it on Salesforce     | Flow
 
-| clientId     | Connected App, Consumer Key        | All flows
-| clientSecret | Connected App, Consumer Secret     | Username-Password, 
Refresh Token, Client Credentials
-| userName     | Salesforce user username           | Username-Password, JWT 
Bearer Token
-| password     | Salesforce user password           | Username-Password
-| refreshToken | From OAuth flow callback           | Refresh Token
-| keystore     | Connected App, Digital Certificate | JWT Bearer Token
+| `clientId`     | Connected App, Consumer Key        | All flows
+| `clientSecret` | Connected App, Consumer Secret     | Username-Password, 
Refresh Token, Client Credentials
+| `userName`     | Salesforce user username           | Username-Password, JWT 
Bearer Token
+| `password`     | Salesforce user password           | Username-Password
+| `refreshToken` | From OAuth flow callback           | Refresh Token
+| `keystore`     | Connected App, Digital Certificate | JWT Bearer Token
 |===
 
 The component auto determines what flow you're trying to configure. In order 
to be explicit, set the
@@ -109,9 +111,9 @@ certificate. The KeyStore holding the certificate and the 
private key
 must contain only a single certificate-private key entry.
 ====
 
-== General Usage
+=== General Usage
 
-=== URI format
+==== URI format
 
 When used as a consumer, receiving streaming events, the URI scheme is:
 
@@ -166,7 +168,7 @@ class MyProcessor implements Processor {
 In addition, HTTP response status code and text are available as headers 
`Exchange.HTTP_RESPONSE_CODE` and
 `Exchange.HTTP_RESPONSE_TEXT`.
 
-===  Sending null values to salesforce
+====  Sending null values to salesforce
 
 By default, SObject fields with null values are not sent to salesforce. In 
order to
 send null values to salesforce, use the `fieldsToNull` property, as follows:
@@ -176,7 +178,7 @@ send null values to salesforce, use the `fieldsToNull` 
property, as follows:
 accountSObject.getFieldsToNull().add("Site");
 ----
 
-== Supported Salesforce APIs
+=== Supported Salesforce APIs
 
 Camel supports the following Salesforce APIs:
 
@@ -189,7 +191,7 @@ Camel supports the following Salesforce APIs:
 * <<ReportsAPI,Reports API>>
 
 [[RESTAPI]]
-=== REST API
+==== REST API
 
 The following operations are supported:
 
@@ -230,7 +232,7 @@ request as the input to a subsequent request.
 Unless otherwise specified, DTO types for the following options are from  
`org.apache.camel.component.salesforce.api.dto` or one if its sub-packages.
 
 [[getVersions]]
-==== Versions
+===== Versions
 
 `getVersions`
 
@@ -241,7 +243,7 @@ Lists summary information about each Salesforce version 
currently available, inc
 Type:  `List<Version>`
 
 [[getResources]]
-==== Resources by Version
+===== Resources by Version
 
 `getResources`
 
@@ -252,7 +254,7 @@ Lists available resources for the current API version, 
including resource name a
 Type: `Map<String, String>`
 
 [[limits]]
-==== Limits
+===== Limits
 
 `limits`
 
@@ -291,7 +293,7 @@ from("direct:querySalesforce")
 ----
 
 [[recent]]
-==== Recently Viewed Items
+===== Recently Viewed Items
 
 `recent`
 
@@ -327,7 +329,7 @@ from("direct:fetchRecentItems")
 ----
 
 [[getGlobalObjects]]
-==== Describe Global
+===== Describe Global
 
 `getGlobalObjects`
 
@@ -339,7 +341,7 @@ as well as the maximum batch size permitted in queries.
 Type: `GlobalObjects`
 
 [[getBasicInfo]]
-==== sObject Basic Information
+===== sObject Basic Information
 
 `getBasicInfo`
 
@@ -356,7 +358,7 @@ Describes the individual metadata for the specified object.
 Type: `SObjectBasicInfo`
 
 [[getDescription]]
-==== sObject Describe
+===== sObject Describe
 
 `getDescription`
 
@@ -373,7 +375,7 @@ Completely describes the individual metadata at all levels 
for the specified obj
 Type: `SObjectDescription`
 
 [[getSObject]]
-==== Retrieve SObject
+===== Retrieve SObject
 
 `getSObject`
 
@@ -394,7 +396,7 @@ overrides `sObjectName` and `sObjectId` parameters.  | |
 Type: Subclass of `AbstractSObjectBase`
 
 [[getSObjectWithId]]
-==== Retrieve SObject by External Id
+===== Retrieve SObject by External Id
 
 `getSObjectWithId`
 
@@ -415,7 +417,7 @@ overrides `sObjectName` and `sObjectIdValue` parameters.  | 
|
 Type: Subclass of `AbstractSObjectBase`
 
 [[getBlobField]]
-==== sObject Blob Retrieve
+===== sObject Blob Retrieve
 
 `getBlobField`
 
@@ -437,7 +439,7 @@ and `sObjectName` are not supplied
 Type: `InputStream`
 
 [[createSObject]]
-==== Create SObject
+===== Create SObject
 
 `createSObject`
 
@@ -455,7 +457,7 @@ Creates a record in salesforce.
 Type: `CreateSObjectResult`
 
 [[updateSObject]]
-==== Update SObject
+===== Update SObject
 
 `updateSObject`
 
@@ -470,7 +472,7 @@ Updates a record in salesforce.
 |===
 
 [[upsertSObject]]
-==== Upsert SObject
+===== Upsert SObject
 
 `upsertSObject`
 
@@ -490,7 +492,7 @@ Upserts a record by External ID.
 Type: `UpsertSObjectResult`
 
 [[deleteSObject]]
-==== Delete SObject
+===== Delete SObject
 
 `deleteSObject`
 
@@ -505,7 +507,7 @@ Deletes a record in salesforce.
 |===
 
 [[deleteSObjectWithId]]
-==== Delete SObject by External Id
+===== Delete SObject by External Id
 
 `deleteSObjectWithId`
 
@@ -521,7 +523,7 @@ Deletes a record in salesforce by External ID.
 |===
 
 [[query]]
-==== Query
+===== Query
 
 `query`
 
@@ -542,7 +544,7 @@ the correct `AbstractQueryRecordsBase` sublcass based on 
the response.
 Type: Instance of class supplied in `sObjectClass`, or `Iterator<SomeSObject>` 
if `streamQueryResult` is true. If `streamQueryResult` is true, the header 
`CamelSalesforceQueryResultTotalSize` is set to the number of records that 
matched the query.
 
 [[queryMore]]
-==== Query More
+===== Query More
 
 `queryMore`
 
@@ -564,7 +566,7 @@ operations. If neither `sObjectClass` nor `sObjectName` are 
set, Camel will atte
 Type: Instance of class supplied in `sObjectClass`
 
 [[queryAll]]
-==== Query All
+===== Query All
 
 `queryAll`
 
@@ -587,7 +589,7 @@ response.
 Type: Instance of class supplied in `sObjectClass`, or `Iterator<SomeSObject>` 
if `streamQueryResult` is true.
 
 [[sosl_search]]
-==== Search
+===== Search
 
 `search`
 
@@ -604,7 +606,7 @@ Runs a Salesforce SOSL search
 Type: `SearchResult2`
 
 [[approval]]
-==== Submit Approval
+===== Submit Approval
 
 `approval`
 
@@ -667,7 +669,7 @@ final ApprovalResult result = 
template.requestBody("direct:example1", body, Appr
 ----
 
 [[approvals]]
-==== Get Approvals
+===== Get Approvals
 
 `approvals`
 
@@ -678,7 +680,7 @@ Returns a list of all approval processes.
 Type: `Approvals`
 
 [[composite]]
-==== Composite
+===== Composite
 
 `composite`
 
@@ -771,14 +773,14 @@ from("timer:fire?period=2000").setBody(constant("{\n" +
 
 The route directly creates the body as JSON and directly submit to salesforce 
endpoint using `rawPayload=true` option.
 
-With this approach, you have the complete control on the Salesforce request.
+With this approach, you have complete control on the Salesforce request.
 
 `POST` is the default HTTP method used to send raw Composite requests to 
salesforce. Use the
 `compositeMethod` option to override to the other supported value, `GET`, 
which returns a list of
 other available composite resources.
 
 [[composite-tree]]
-==== Composite Tree
+===== Composite Tree
 
 `composite-tree`
 
@@ -835,7 +837,7 @@ final String firstId = succeeded.get(0).getId();
 ----
 
 [[composite-batch]]
-==== Composite Batch
+===== Composite Batch
 
 `composite-batch`
 
@@ -906,7 +908,7 @@ final Object updateResultData = deleteResult.getResult(); 
// probably null
 ----
 
 [[compositeRetrieveSObjectCollections]]
-==== Retrieve Multiple Records with Fewer Round-Trips
+===== Retrieve Multiple Records with Fewer Round-Trips
 
 `compositeRetrieveSObjectCollections`
 
@@ -927,7 +929,7 @@ Type: `List` of class determined by `sObjectName` or 
`sObjectClass` header
 
 
 [[compositeCreateSObjectCollections]]
-==== Create SObject Collections
+===== Create SObject Collections
 
 `compositeCreateSObjectCollections`
 
@@ -944,7 +946,7 @@ Add up to 200 records. Mixed SObject types is supported.
 Type: `List<SaveSObjectResult>`
 
 [[compositeUpdateSObjectCollections]]
-==== Update SObject Collections
+===== Update SObject Collections
 
 `compositeUpdateSObjectCollections`
 
@@ -961,7 +963,7 @@ Update up to 200 records. Mixed SObject types is supported.
 Type: `List<SaveSObjectResult>`
 
 [[compositeUpsertSObjectCollections]]
-==== Upsert SObject Collections
+===== Upsert SObject Collections
 
 `compositeUpsertSObjectCollections`
 
@@ -980,7 +982,7 @@ Create or update (upsert) up to 200 records based on an 
external ID field. Mixed
 Type: `List<UpsertSObjectResult>`
 
 [[compositeDeleteSObjectCollections]]
-==== Delete SObject Collections
+===== Delete SObject Collections
 
 `compositeDeleteSObjectCollections`
 
@@ -999,7 +1001,7 @@ Type: `List<DeleteSObjectResult>`
 
 
 [[getEventSchema]]
-==== Get Event Schema
+===== Get Event Schema
 
 `getEventSchema`
 
@@ -1018,10 +1020,10 @@ Gets the definition of a Platform Event in JSON format. 
Other types of events su
 Type: `InputStream`
 
 [[ApexRESTAPI]]
-=== Apex REST API
+==== Apex REST API
 
 [[apexCall]]
-==== Invoke an Apex REST Web Service method
+===== Invoke an Apex REST Web Service method
 
 `apexCall`
 
@@ -1059,7 +1061,7 @@ Type: Instance of class supplied in `sObjectClass` input 
header.
 
 
 [[Bulk2API]]
-=== Bulk 2.0 API
+==== Bulk 2.0 API
 
 The Bulk 2.0 API has a simplified model over the original Bulk API. Use it to 
quickly load a large
 amount of data into salesforce, or query a large amount of data out of 
salesforce. Data must be
@@ -1085,7 +1087,7 @@ is v41.0. The minimum API version for Bulk Queries is 
v47.0. DTO classes mention
 * <<bulk2GetAllQueryJobs,bulk2GetAllQueryJobs>> - Gets all query jobs.
 
 [[bulk2CreateJob]]
-==== Create a Job
+===== Create a Job
 
 `bulk2CreateJob`
 Creates a bulk ingest job.
@@ -1101,7 +1103,7 @@ Creates a bulk ingest job.
 Type: `Job`
 
 [[bulk2CreateBatch]]
-==== Upload a Batch of Job Data
+===== Upload a Batch of Job Data
 
 `bulk2CreateBatch`
 
@@ -1115,7 +1117,7 @@ Adds a batch of data to an ingest job.
 |===
 
 [[bulk2CloseJob]]
-==== Close a Job
+===== Close a Job
 
 `bulk2CloseJob`
 
@@ -1133,7 +1135,7 @@ aborted/deleted.
 Type: `Job`
 
 [[bulk2AbortJob]]
-==== Abort a Job
+===== Abort a Job
 
 `bulk2AbortJob`
 
@@ -1150,7 +1152,7 @@ Aborts an ingest job.
 Type: `Job`
 
 [[bulk2DeleteJob]]
-==== Delete a Job
+===== Delete a Job
 
 `bulk2DeleteJob`
 
@@ -1163,7 +1165,7 @@ Deletes an ingest job.
 |===
 
 [[bulk2GetSuccessfulResults]]
-==== Get Job Successful Record Results
+===== Get Job Successful Record Results
 
 `bulk2GetSuccessfulResults`
 
@@ -1181,7 +1183,7 @@ Type: `InputStream` +
 Contents: CSV data
 
 [[bulk2GetFailedResults]]
-==== Get Job Failed Record Results
+===== Get Job Failed Record Results
 
 `bulk2GetFailedResults`
 
@@ -1199,7 +1201,7 @@ Type: `InputStream` +
 Contents: CSV data
 
 [[bulk2GetUnprocessedRecords]]
-==== Get Job Unprocessed Record Results
+===== Get Job Unprocessed Record Results
 
 `bulk2GetUnprocessedRecords`
 
@@ -1217,7 +1219,7 @@ Type: `InputStream`
 Contents: CSV data
 
 [[bulk2GetJob]]
-==== Get Job Info
+===== Get Job Info
 
 `bulk2GetJob`
 
@@ -1235,7 +1237,7 @@ Gets an ingest Job.
 Type: `Job`
 
 [[bulk2GetAllJobs]]
-==== Get All Jobs
+===== Get All Jobs
 
 `bulk2GetAllJobs`
 
@@ -1256,7 +1258,7 @@ is false, there are additional pages to fetch, and the 
`nextRecordsUrl` property
 to be set in the `queryLocator` parameter on subsequent calls.
 
 [[bulk2CreateQueryJob]]
-==== Create a Query Job
+===== Create a Query Job
 
 `bulk2CreateQueryJob`
 
@@ -1273,7 +1275,7 @@ Gets a query job.
 Type: `QueryJob`
 
 [[bulk2GetQueryJobResults]]
-==== Get Results for a Query Job
+===== Get Results for a Query Job
 
 `bulk2GetQueryJobResults`
 
@@ -1299,7 +1301,7 @@ Response message headers include `Sforce-NumberOfRecords` 
and
 `locator` parameter.
 
 [[bulk2AbortQueryJob]]
-==== Abort a Query Job
+===== Abort a Query Job
 
 `bulk2AbortQueryJob`
 
@@ -1316,7 +1318,7 @@ Aborts a query job.
 Type: `QueryJob`
 
 [[bulk2DeleteQueryJob]]
-==== Delete a Query Job
+===== Delete a Query Job
 
 `bulk2DeleteQueryJob`
 
@@ -1329,7 +1331,7 @@ Deletes a query job.
 |===
 
 [[bulk2GetQueryJob]]
-==== Get Information About a Query Job
+===== Get Information About a Query Job
 
 `bulk2GetQueryJob`
 
@@ -1346,7 +1348,7 @@ Gets a query job.
 Type: `QueryJob`
 
 [[bulk2GetAllQueryJobs]]
-==== Get Information About All Query Jobs
+===== Get Information About All Query Jobs
 
 `bulk2GetAllQueryJobs`
 
@@ -1367,7 +1369,7 @@ is false, there are additional pages to fetch, and the 
`nextRecordsUrl` property
 to be set in the `queryLocator` parameter on subsequent calls.
 
 [[BulkAPI]]
-=== Bulk (original) API 
+==== Bulk (original) API
 
 Producer endpoints can use the following APIs. All Job data formats,
 i.e. xml, csv, zip/xml, and zip/csv are supported. +
@@ -1392,7 +1394,7 @@ The following operations are supported:
 * <<getQueryResult,getQueryResult>> - Gets results for a Result Id
 
 [[createJob]]
-==== Create a Job
+===== Create a Job
 
 `createJob`
 
@@ -1415,7 +1417,7 @@ is supported via the pkChunking* options. See an 
explanation https://developer.s
 Type: `JobInfo`
 
 [[getJob]]
-==== Get Job Details
+===== Get Job Details
 
 `getJob`
 
@@ -1433,7 +1435,7 @@ Gets a Job
 Type: `JobInfo`
 
 [[closeJob]]
-==== Close a Job
+===== Close a Job
 
 `closeJob`
 
@@ -1451,7 +1453,7 @@ Closes a Job
 Type: `JobInfo`
 
 [[abortJob]]
-==== Abort a Job
+===== Abort a Job
 
 `abortJob`
 
@@ -1469,7 +1471,7 @@ Aborts a Job
 Type: `JobInfo`
 
 [[createBatch]]
-==== Add a Batch to a Job
+===== Add a Batch to a Job
 
 `createBatch`
 
@@ -1488,7 +1490,7 @@ Submits a Batch within a Bulk Job
 Type: `BatchInfo`
 
 [[getBatch]]
-==== Get Information for a Batch
+===== Get Information for a Batch
 
 `getBatch`
 
@@ -1507,7 +1509,7 @@ Get a Batch
 Type: `BatchInfo`
 
 [[getAllBatches]]
-==== Get Information for All Batches in a Job
+===== Get Information for All Batches in a Job
 
 `getAllBatches`
 
@@ -1525,7 +1527,7 @@ Gets all Batches for a Bulk Job Id
 Type: `List<JobInfo>`
 
 [[getRequest]]
-==== Get a Batch Request
+===== Get a Batch Request
 
 `getRequest`
 
@@ -1545,7 +1547,7 @@ Type: `InputStream`
 
 
 [[getResults]]
-==== Get Batch Results
+===== Get Batch Results
 
 `getResults`
 
@@ -1564,7 +1566,7 @@ Gets the results of the Batch when it's complete
 Type: `InputStream`
 
 [[createBatchQuery]]
-==== Create Bulk Query Batch
+===== Create Bulk Query Batch
 
 `createBatchQuery`
 
@@ -1584,7 +1586,7 @@ Creates a Batch from an SOQL query
 Type: `BatchInfo`
 
 [[getQueryResultIds]]
-==== Get Batch Results
+===== Get Batch Results
 
 `getQueryResultIds`
 
@@ -1604,7 +1606,7 @@ Type: `List<String>`
 
 
 [[getQueryResult]]
-==== Get Bulk Query Results
+===== Get Bulk Query Results
 
 `getQueryResult`
 
@@ -1638,13 +1640,13 @@ error.
 ----
 
 [[PubSubAPI]]
-=== Pub/Sub API
+==== Pub/Sub API
 
 The Pub/Sub API allows you to publish and subscribe to platform events, 
including real-time event
 monitoring events, and change data capture events. This API is based on gRPC 
and HTTP/2, and event
 payloads are delivered in Apache Avro format.
 
-==== Publishing Events
+===== Publishing Events
 
 The URI format for publishing events is:
 ----
@@ -1657,7 +1659,7 @@ For example:
 ----
 
 [[pubSubPublish]]
-==== Publish an Event
+===== Publish an Event
 
 `pubSubPublish`
 
@@ -1691,7 +1693,7 @@ Type: 
`List<org.apache.camel.component.salesforce.api.dto.pubsub.PublishResult>`
 
 The order of the items in the returned `List` correlates to the order of the 
items in the input `List`.
 
-==== Subscribing
+===== Subscribing
 The URI format for subscribing to a Pub/Sub topic is:
 ----
 salesforce:pubSubSubscribe:<topic_name>
@@ -1724,14 +1726,14 @@ Headers: `CamelSalesforcePubSubReplayId`
 
 
 [[StreamingAPI]]
-=== Streaming API
+==== Streaming API
 
 The Streaming API enables streaming of events using push technology and 
provides a subscription
 mechanism for receiving events in near real time. The Streaming API 
subscription mechanism supports
 multiple types of events, including PushTopic events, generic events, platform 
events, and Change
 Data Capture events.
 
-==== Push Topics
+===== Push Topics
 
 The URI format for consuming Push Topics is:
 ----
@@ -1774,7 +1776,7 @@ 
from("salesforce:subscribe:CamelTestTopic&sObjectName=Merchandise__c")...
 
 Type: Class passed via `sObjectName` parameter
 
-==== Platform Events
+===== Platform Events
 
 To emit a platform event use the <<createSObject,createSObject>> operation, 
passing an instance of a platform event, e.g. `Order_Event__e`.
 
@@ -1803,7 +1805,7 @@ from("salesforce:subscribe:event/Order_Event__e")
 
 Type: `PlatformEvent` or `org.cometd.bayeux.Message`
 
-==== Change Data Capture Events
+===== Change Data Capture Events
 
 Change Data Capture (CDC) allows you to receive near-real-time changes of 
Salesforce records, and synchronize corresponding records in an external data 
store. Change Data Capture publishes change events, which represent changes to 
Salesforce records. Changes include the creation of a new record, updates to an 
existing record, deletion of a record, and undeletion of a record.
 
@@ -1858,7 +1860,7 @@ Headers
 |===
 
 [[ReportsAPI]]
-=== Reports API
+==== Reports API
 
 * <<getRecentReports,getRecentReports>> - Gets up to 200 of the reports you 
most recently viewed.
 * <<getReportDescription,getReportDescription>> - Retrieves report description.
@@ -1868,7 +1870,7 @@ Headers
 * <<getReportResults,getReportResults>> - Retrieves results for an instance of 
a report run asynchronously.
 
 [[getRecentReports]]
-==== Report List
+===== Report List
 
 `getRecentReports`
 
@@ -1879,7 +1881,7 @@ Gets up to 200 of the reports you most recently viewed.
 Type: `List<RecentReport>`
 
 [[getReportDescription]]
-==== Describe Report
+===== Describe Report
 
 `getReportDescription`
 
@@ -1897,7 +1899,7 @@ Retrieves the report, report type, and related metadata 
for a report, either in
 Type: `ReportDescription`
 
 [[executeSyncReport]]
-==== Execute Sync
+===== Execute Sync
 
 `executeSyncReport`
 
@@ -1917,7 +1919,7 @@ Runs a report synchronously with or without changing 
filters and returns the lat
 Type: `AbstractReportResultsBase`
 
 [[executeAsyncReport]]
-==== Execute Async
+===== Execute Async
 
 `executeAsyncReport`
 
@@ -1937,7 +1939,7 @@ Runs an instance of a report asynchronously with or 
without filters and returns
 Type: `ReportInstance`
 
 [[getReportInstances]]
-==== Instances List
+===== Instances List
 
 `getReportInstances`
 
@@ -1955,7 +1957,7 @@ Returns a list of instances for a report that you 
requested to be run asynchrono
 Type: `List<ReportInstance>`
 
 [[getReportResults]]
-==== Instance Results
+===== Instance Results
 
 `getReportResults`
 
@@ -1973,12 +1975,12 @@ Contains the results of running a report.
 
 Type: `AbstractReportResultsBase`
 
-== Miscellaneous Operations
+=== Miscellaneous Operations
 
 * <<raw,raw>> - Send requests to salesforce and have full, raw control over 
endpoint, parameters, body, etc.
 
 [[raw]]
-=== Raw
+==== Raw
 
 `raw`
 
@@ -1999,7 +2001,7 @@ header will be automatically set based on the `format` 
option, but this can be o
 
 Type: `InputStream`
 
-==== Query example
+===== Query example
 
 In this example we'll send a query to the REST API. The query must be passed 
in a URL parameter called "q", so we'll create a message header called q and 
tell the
 raw operation to include that message header as a URL parameter:
@@ -2010,7 +2012,7 @@ from("direct:queryExample")
   // deserialize JSON results or handle in some other way
 ----
 
-==== SObject example
+===== SObject example
 
 In this example, we'll pass a Contact the REST API in a `create` operation. 
Since the `raw` operation does not perform any serialization,
 we make sure to pass XML in the message body
@@ -2029,7 +2031,7 @@ The response is:
 </Result>
 ----
 
-== Uploading a document to a ContentWorkspace
+=== Uploading a document to a ContentWorkspace
 
 Create the ContentVersion in Java, using a Processor instance:
 
@@ -2069,11 +2071,11 @@ from("file:///home/camel/library")
     .to("salesforce:createSObject");
 ----
 
-== Generating SOQL query strings
+=== Generating SOQL query strings
 
 `org.apache.camel.component.salesforce.api.utils.QueryHelper` contains helper
-methods to generate SOQL queries. For instance to fetch all custom fields from
-_Account_ SObject you can simply generate the SOQL SELECT by invoking:
+methods to generate SOQL queries. For instance, to fetch all custom fields from
+_Account_ SObject, you can generate the SOQL SELECT by invoking:
 
 [source,java]
 ----
@@ -2081,7 +2083,7 @@ String allCustomFieldsQuery = 
QueryHelper.queryToFetchFilteredFieldsOf(new Accou
 ----
 
 [[MavenPlugin]]
-== Camel Salesforce Maven Plugin
+=== Camel Salesforce Maven Plugin
 
 The Maven plugin generates Java DTOs to represent salesforce objects.
 
diff --git a/components/camel-saxon/src/main/docs/xquery-component.adoc 
b/components/camel-saxon/src/main/docs/xquery-component.adoc
index 56d1691fdd5..c92cddf6e17 100644
--- a/components/camel-saxon/src/main/docs/xquery-component.adoc
+++ b/components/camel-saxon/src/main/docs/xquery-component.adoc
@@ -50,7 +50,9 @@ from("direct:start")
   .recipientList().xquery("concat('mock:foo.', /person/@city)", String.class);
 -----------------------------------------------------------------------------
 
-== Variables
+== Usage
+
+=== Variables
 
 The IN message body will be set as the `contextItem`. Besides this, these
 Variables are also added as parameters:
@@ -59,25 +61,25 @@ Variables are also added as parameters:
 |=======================================================================
 |Variable |Type |Description
 
-|exchange |Exchange |The current Exchange
+|`exchange` |Exchange |The current Exchange
 
-|in.body |Object |The In message's body
+|`in.body` |Object |The In message's body
 
-|out.body |Object |The OUT message's body (if any)
+|`out.body` |Object |The OUT message's body (if any)
 
-|in.headers.* |Object |You can access the value of exchange.in.headers with 
key *foo* by using
+|`in.headers.*` |Object |You can access the value of exchange.in.headers with 
key *foo* by using
 the variable which name is in.headers.foo
 
-|out.headers.* |Object |You can access the value of exchange.out.headers with 
key *foo* by using
+|`out.headers.*` |Object |You can access the value of exchange.out.headers 
with key *foo* by using
 the variable which name is out.headers.foo variable
 
-|*key name* |Object |Any exchange.properties and exchange.in.headers and any 
additional
+|`*key name*` |Object |Any exchange.properties and exchange.in.headers and any 
additional
 parameters set using `setParameters(Map)`. These parameters are added
 with their own key name, for instance, if there is an IN header with the
 key name *foo* then it is added as *foo*.
 |=======================================================================
 
-== Using XML configuration
+=== Using XML configuration
 
 If you prefer to configure your routes in your Spring
 XML file, then you can use XPath expressions as follows
@@ -116,7 +118,7 @@ attribute:
 -------------------------------------------------------------------------------
 
 
-== Using XQuery as an endpoint
+=== Using XQuery as an endpoint
 
 Sometimes an XQuery expression can be quite large; it can essentally be
 used for Templating. So you may want to use an
@@ -137,7 +139,7 @@ The following example shows how to take a message of an 
ActiveMQ queue
   </camelContext>
 -------------------------------------------------------------------------
 
-== Loading script from external resource
+=== Loading script from external resource
 
 You can externalize the script and have Apache Camel load it from a resource
 such as `"classpath:"`, `"file:"`, or `"http:"`.
@@ -149,7 +151,7 @@ e.g., to refer to a file on the classpath you can do:
 .setHeader("myHeader").xquery("resource:classpath:myxquery.txt", String.class)
 ------------------------------------------------------------------------------
 
-== Learning XQuery
+=== Learning XQuery
 
 XQuery is a very powerful language for querying, searching, sorting and
 returning XML.
@@ -164,7 +166,7 @@ To use XQuery in your Camel routes, you need to add the 
dependency on
 *camel-saxon*, which implements the XQuery language.
 
 If you use Maven, you could add the following to your `pom.xml`,
-substituting the version number for the latest & greatest release.
+substituting the version number for the latest release.
 
 [source,xml]
 --------------------------------------
diff --git a/components/camel-saxon/src/main/docs/xquery-language.adoc 
b/components/camel-saxon/src/main/docs/xquery-language.adoc
index 207f6a860fb..34909675d2e 100644
--- a/components/camel-saxon/src/main/docs/xquery-language.adoc
+++ b/components/camel-saxon/src/main/docs/xquery-language.adoc
@@ -33,14 +33,14 @@ And the following variables are available as well:
 [width="100%",cols="10%,10%,80%",options="header",]
 |=======================================================================
 |Variable |Type |Description
-|exchange |Exchange |The current Exchange
-|in.body |Object |The message body
-|out.body |Object |*deprecated* The OUT message body (if any)
-|in.headers.* |Object |You can access the value of exchange.in.headers with 
key *foo* by using
+|`exchange` |Exchange |The current Exchange
+|`in.body` |Object |The message body
+|`out.body` |Object |*deprecated* The OUT message body (if any)
+|`in.headers.*` |Object |You can access the value of exchange.in.headers with 
key *foo* by using
 the variable which name is in.headers.foo
-|out.headers.* |Object |*deprecated* You can access the value of 
`exchange.out.headers` with key *foo* by using
+|`out.headers.*` |Object |*deprecated* You can access the value of 
`exchange.out.headers` with key *foo* by using
 the variable which name is `out.headers.foo` variable
-|*key name* |Object |Any `exchange.properties` and `exchange.in.headers` and 
any additional
+|`*key name*` |Object |Any `exchange.properties` and `exchange.in.headers` and 
any additional
 parameters set using `setParameters(Map)`. These parameters are added
 with their own key name, for instance, if there is an IN header with the
 key name *foo* then it is added as *foo*.
diff --git a/components/camel-scheduler/src/main/docs/scheduler-component.adoc 
b/components/camel-scheduler/src/main/docs/scheduler-component.adoc
index f613b3b7c69..a37a582beb3 100644
--- a/components/camel-scheduler/src/main/docs/scheduler-component.adoc
+++ b/components/camel-scheduler/src/main/docs/scheduler-component.adoc
@@ -63,7 +63,9 @@ you can find more information about the options above, and 
examples at
 the http://camel.apache.org/polling-consumer.html[Polling
 Consumer] page.
 
-== Exchange Properties
+== Usage
+
+=== Exchange Properties
 
 When the timer is fired, it adds the following information as properties
 to the `Exchange`:
@@ -77,6 +79,26 @@ to the `Exchange`:
 |`Exchange.TIMER_FIRED_TIME` |`Date` |The time when the consumer fired.
 |===
 
+=== Forcing the scheduler to trigger immediately when completed
+
+To let the scheduler trigger as soon as the previous task is complete,
+you can set the option `greedy=true`. But beware then the scheduler will
+keep firing all the time. So use this with caution.
+
+=== Forcing the scheduler to be idle
+
+There can be use cases where you want the scheduler to trigger and be
+greedy. But sometimes you want to "tell the scheduler" that there was no
+task to poll, so the scheduler can change into idle mode using the
+backoff options. To do this, you would need to set a property on the
+exchange with the key `Exchange.SCHEDULER_POLLED_MESSAGES` to a boolean
+value of false. This will cause the consumer to indicate that there were
+no messages polled.
+
+The consumer will otherwise as by default return 1 message polled to the
+scheduler, every time the consumer has completed processing the
+exchange.
+
 == Example
 
 To set up a route that generates an event every 60 seconds:
@@ -100,26 +122,5 @@ And the route in Spring DSL:
 </route>
 ----
 
-== Forcing the scheduler to trigger immediately when completed
-
-To let the scheduler trigger as soon as the previous task is complete,
-you can set the option `greedy=true`. But beware then the scheduler will
-keep firing all the time. So use this with caution.
-
-== Forcing the scheduler to be idle
-
-There can be use cases where you want the scheduler to trigger and be
-greedy. But sometimes you want to "tell the scheduler" that there was no
-task to poll, so the scheduler can change into idle mode using the
-backoff options. To do this, you would need to set a property on the
-exchange with the key `Exchange.SCHEDULER_POLLED_MESSAGES` to a boolean
-value of false. This will cause the consumer to indicate that there were
-no messages polled. 
-
-The consumer will otherwise as by default return 1 message polled to the
-scheduler, every time the consumer has completed processing the
-exchange.
-
-
 
 include::spring-boot:partial$starter.adoc[]
diff --git 
a/components/camel-schematron/src/main/docs/schematron-component.adoc 
b/components/camel-schematron/src/main/docs/schematron-component.adoc
index 9b03b04951c..da6f92ffca2 100644
--- a/components/camel-schematron/src/main/docs/schematron-component.adoc
+++ b/components/camel-schematron/src/main/docs/schematron-component.adoc
@@ -61,7 +61,9 @@ include::partial$component-endpoint-options.adoc[]
 |CamelSchematronValidationReport |The schematrion report body in XML format. 
See an example below |String |IN
 |=======================================================================
 
-== URI and path syntax
+== Examples
+
+=== URI and path syntax
 
 The following example shows how to invoke the schematron processor in
 Java DSL. The schematron rules file is sourced from the class path:
@@ -72,7 +74,7 @@ 
from("direct:start").to("schematron://sch/schematron.sch").to("mock:result")
 ----------------------------------------------------------------------------
 
 The following example shows how to invoke the schematron processor in
-XML DSL. The schematrion rules file is sourced from the file system:
+XML DSL. The schematron rules file is sourced from the file system:
 
 [source,xml]
 
-----------------------------------------------------------------------------------------------
@@ -114,7 +116,7 @@ harm in storing these rules in the class path though, but 
you will have
 to build and deploy the component to pick up the changes.
 ====
 
-== Schematron rules and report examples
+=== Schematron rules and report examples
 
 Here is an example of schematron rules
 
diff --git a/components/camel-seda/src/main/docs/seda-component.adoc 
b/components/camel-seda/src/main/docs/seda-component.adoc
index 260223e462a..e0e18124417 100644
--- a/components/camel-seda/src/main/docs/seda-component.adoc
+++ b/components/camel-seda/src/main/docs/seda-component.adoc
@@ -61,9 +61,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
+== Usage
 
-
-== Choosing BlockingQueue implementation
+=== Choosing BlockingQueue implementation
 
 By default, the SEDA component always instantiates a `LinkedBlockingQueue`,
 but you can use different implementation, you can reference your own
@@ -99,7 +99,7 @@ Three implementations are provided:
 <from>seda:priority?queueFactory=#priorityQueueFactory&size=100</from>
 ----
 
-== Use of Request Reply
+=== Use of Request Reply
 
 The xref:seda-component.adoc[SEDA] component supports using
 Request Reply, where the caller will wait for
@@ -118,7 +118,7 @@ it is a Request Reply message, we wait for the
 response. When the consumer on the `seda:input` queue is complete, it
 copies the response to the original message response.
 
-== Concurrent consumers
+=== Concurrent consumers
 
 By default, the SEDA endpoint uses a single consumer thread, but you can
 configure it to use concurrent consumer threads. So instead of thread
@@ -133,7 +133,7 @@ As for the difference between the two, note a _thread pool_ 
can
 increase/shrink dynamically at runtime depending on load, whereas the
 number of concurrent consumers is always fixed.
 
-== Thread pools
+=== Thread pools
 
 Be aware that adding a thread pool to a SEDA endpoint by doing something
 like:
@@ -157,7 +157,7 @@ from("direct:stageName").thread(5).process(...)
 You can also directly configure number of threads that process messages
 on a SEDA endpoint using the `concurrentConsumers` option.
 
-== Example
+== Examples
 
 In the route below, we use the SEDA queue to send the request to this
 async queue.
@@ -206,7 +206,7 @@ another thread for further processing. Since this is from a 
unit test,
 it will be sent to a `mock` endpoint where we can do assertions in the
 unit test.
 
-== Using multipleConsumers
+=== Using multipleConsumers
 
 In this example, we have defined two consumers.
 
@@ -242,7 +242,7 @@ message as a kind of _publish/subscribe_ style messaging.
 As the beans are part of a unit test, they simply send the message to a
 mock endpoint.
 
-== Extracting queue information.
+=== Extracting queue information.
 
 If needed, information such as queue size, etc. can be obtained without
 using JMX in this fashion:
diff --git 
a/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
 
b/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
index 29b281a9027..858fe030d25 100644
--- 
a/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
+++ 
b/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
@@ -141,7 +141,7 @@ 
http://wiki.servicenow.com/index.php?title=REST_API#Available_APIs[Fuji REST API
 
https://docs.servicenow.com/bundle/helsinki-servicenow-platform/page/integrate/inbound-rest/reference/r_RESTResources.html[Helsinki
 REST API Documentation]
 ====
 
-== Usage examples:
+== Examples:
  
 [source,java]
 .Retrieve 10 Incidents
diff --git a/components/camel-servlet/src/main/docs/servlet-component.adoc 
b/components/camel-servlet/src/main/docs/servlet-component.adoc
index 2400c355df6..b78444cb306 100644
--- a/components/camel-servlet/src/main/docs/servlet-component.adoc
+++ b/components/camel-servlet/src/main/docs/servlet-component.adoc
@@ -77,21 +77,21 @@ Camel will also populate *all* `request.parameter` and
 http://myserver/myserver?orderid=123, the exchange will contain a
 header named `orderid` with the value `123`.
 
-== Usage
+== Examples
 
 You can consume only `from` endpoints generated by the Servlet component.
 Therefore, it should be used only as input into your Camel routes. To
 issue HTTP requests against other HTTP endpoints, use the
 xref:http-component.adoc[HTTP Component].
 
-== Example `CamelHttpTransportServlet` configuration
+=== Example `CamelHttpTransportServlet` configuration
 
-=== Camel Spring Boot / Camel Quarkus
+==== Camel Spring Boot / Camel Quarkus
 
 When running camel-servlet on the Spring Boot or Camel Quarkus runtimes, 
`CamelHttpTransportServlet` is configured for
 you automatically and is driven by configuration properties. Refer to the 
camel-servlet configuration documentation for these runtimes.
 
-=== Servlet container / application server
+==== Servlet container / application server
 
 If you're running Camel standalone on a Servlet container or application 
server, you can use `web.xml` to configure `CamelHttpTransportServlet`.
 
@@ -112,7 +112,7 @@ For example, to define a route that exposes an HTTP service 
under the path `/ser
 </web-app>
 -------------------------------------------------------------------------
 
-== Example route
+=== Example route
 
 [source,java]
 -------------------------------------------------------------------------
@@ -129,7 +129,7 @@ from("servlet:hello").process(new Processor() {
 });
 -------------------------------------------------------------------------
 
-== Camel Servlet HTTP endpoint path
+=== Camel Servlet HTTP endpoint path
 
 The full path where the camel-servlet HTTP endpoint is published depends on:
 
@@ -140,7 +140,7 @@ The full path where the camel-servlet HTTP endpoint is 
published depends on:
 For example, if the application context path is `/camel` and 
`CamelHttpTransportServlet` is configured with a URL mapping of `/services/*`.
 Then a Camel route like `from("servlet:hello")` would be published to a path 
like http://localhost:8080/camel/services/hello.
 
-== Servlet asynchronous support
+=== Servlet asynchronous support
 
 To enable Camel to benefit from Servlet asynchronous support, you must enable 
the `async` boolean init parameter by setting it to `true`.
 
@@ -176,7 +176,7 @@ On other runtimes you can configure these parameters in 
`web.xml` as follows.
 </web-app>
 
-----------------------------------------------------------------------------------------------
 
-== Camel JARs on an application server boot classpath
+=== Camel JARs on an application server boot classpath
 
 If deploying into an application server / servlet container and you choose to 
have Camel JARs such as `camel-core`, `camel-servlet`, etc on the boot 
classpath.
 Then the servlet mapping list will be shared between multiple deployed Camel 
application in the app server.
diff --git a/components/camel-shiro/src/main/docs/shiro.adoc 
b/components/camel-shiro/src/main/docs/shiro.adoc
index e88cb5d0d66..603447f5713 100644
--- a/components/camel-shiro/src/main/docs/shiro.adoc
+++ b/components/camel-shiro/src/main/docs/shiro.adoc
@@ -21,16 +21,6 @@ is to provide the most robust and comprehensive application 
security
 framework available while also being straightforward to understand and
 extremely simple to use.
 
-This camel shiro-security component allows authentication and
-authorization support to be applied to different segments of a camel
-route.
-
-Shiro security is applied on a route using a Camel Policy. A Policy in
-Camel uses a strategy pattern for applying interceptors on Camel
-Processors. It is offering the ability to apply cross-cutting concerns (for
-example, security, transactions, etc.), on sections/segments of a Camel
-route.
-
 Maven users will need to add the following dependency to their `pom.xml`
 for this component:
 
@@ -44,12 +34,26 @@ for this component:
 </dependency>
 ------------------------------------------------------------
 
+== Usage
+
+The camel shiro-security component allows authentication and
+authorization support to be applied to different segments of a camel
+route.
+
+Shiro security is applied on a route using a Camel Policy.
+A Policy in
+Camel uses a strategy pattern for applying interceptors on Camel
+Processors.
+It is offering the ability to apply cross-cutting concerns (for
+example, security, transactions, etc.), on sections/segments of a Camel
+route.
+
 [[ShiroSecurity-ShiroSecurityBasics]]
-== Shiro Security Basics
+=== Shiro Security Basics
 
-To employ Shiro security on a camel route, a ShiroSecurityPolicy object
+To use Shiro security on a camel route, a ShiroSecurityPolicy object
 must be instantiated with security configuration details (including
-users, passwords, roles etc). This object must then be applied to a
+users, passwords, roles, etc). This object must then be applied to a
 camel route. This ShiroSecurityPolicy Object may also be registered in
 the Camel registry (JNDI or ApplicationContextRegistry) and then
 used on other routes in the Camel Context.
@@ -82,7 +86,7 @@ sec-level1 = zone1:readonly:*
 ------------------------------------------------------------------
 
 [[ShiroSecurity-InstantiatingaShiroSecurityPolicyObject]]
-== Instantiating a ShiroSecurityPolicy Object
+=== Instantiating a ShiroSecurityPolicy Object
 
 A ShiroSecurityPolicy object is instantiated as follows
 
@@ -103,7 +107,7 @@ A ShiroSecurityPolicy object is instantiated as follows
 
----------------------------------------------------------------------------------------
 
 [[ShiroSecurity-ShiroSecurityPolicyOptions]]
-== ShiroSecurityPolicy Options
+=== ShiroSecurityPolicy Options
 
 [width="100%",cols="10%,10%,10%,90%",options="header",]
 |=======================================================================
@@ -152,7 +156,7 @@ require all the roles to be met.
 |=======================================================================
 
 [[ShiroSecurity-ApplyingShiroAuthenticationonaCamelRoute]]
-== Applying Shiro Authentication on a Camel Route
+=== Applying Shiro Authentication on a Camel Route
 
 The ShiroSecurityPolicy, tests and permits incoming message exchanges
 containing an encrypted SecurityToken in the Message Header to proceed
@@ -187,7 +191,7 @@ the user is a valid user.
 -----------------------------------------------------------------------
 
 [[ShiroSecurity-ApplyingShiroAuthorizationonaCamelRoute]]
-=== Applying Shiro Authorization on a Camel Route
+==== Applying Shiro Authorization on a Camel Route
 
 Authorization can be applied on a camel route by associating a
 Permissions List with the ShiroSecurityPolicy. The Permissions List
@@ -222,7 +226,7 @@ permission set, the request is not authorized to continue 
any further.
 
-------------------------------------------------------------------------------------------
 
 [[ShiroSecurity-CreatingaShiroSecurityTokenandinjectingitintoaMessageExchange]]
-== Creating a ShiroSecurityToken and injecting it into a Message Exchange
+=== Creating a ShiroSecurityToken and injecting it into a Message Exchange
 
 A ShiroSecurityToken object may be created and injected into a Message
 Exchange using a Shiro Processor called ShiroSecurityTokenInjector. An
@@ -241,7 +245,7 @@ ShiroSecurityTokenInjector in the client is shown below
 
-------------------------------------------------------------------------------------
 
 [[ShiroSecurity-SendingMessagestoroutessecuredbyaShiroSecurityPolicy]]
-== Sending Messages to routes secured by a ShiroSecurityPolicy
+=== Sending Messages to routes secured by a ShiroSecurityPolicy
 
 Messages and Message Exchanges sent along the camel route where the
 security policy is applied need to be accompanied by a SecurityToken in
@@ -275,7 +279,7 @@ ProducerTemplate in Camel along with a SecurityToken
 
-------------------------------------------------------------------------------------------------
 
 [[ShiroSecurity-UsingShiroSecurityToken]]
-== Using ShiroSecurityToken
+=== Using ShiroSecurityToken
 
 You can send a message to a Camel route with a header of key
 `ShiroSecurityConstants.SHIRO_SECURITY_TOKEN` of the type


Reply via email to