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

nfilotto pushed a commit to branch CAMEL-17792/doc-message-headers
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 33d2e551bcaefe61720e8fef8873024e428631d2
Author: Nicolas Filotto <[email protected]>
AuthorDate: Fri Apr 1 17:39:45 2022 +0200

    CAMEL-17792: Add doc about the message headers of camel-openstack
---
 .../openstack/cinder/openstack-cinder.json         | 13 +++
 .../openstack/glance/openstack-glance.json         | 14 ++++
 .../openstack/keystone/openstack-keystone.json     | 12 +++
 .../openstack/neutron/openstack-neutron.json       | 24 ++++++
 .../component/openstack/nova/openstack-nova.json   | 16 ++++
 .../component/openstack/swift/openstack-swift.json | 16 ++++
 .../src/main/docs/openstack-cinder-component.adoc  | 50 +-----------
 .../src/main/docs/openstack-glance-component.adoc  | 35 +-------
 .../main/docs/openstack-keystone-component.adoc    | 90 +--------------------
 .../src/main/docs/openstack-neutron-component.adoc | 93 +---------------------
 .../src/main/docs/openstack-nova-component.adoc    | 66 +--------------
 .../src/main/docs/openstack-swift-component.adoc   | 50 +-----------
 .../openstack/cinder/CinderConstants.java          |  8 ++
 .../component/openstack/cinder/CinderEndpoint.java |  6 +-
 .../openstack/common/OpenstackConstants.java       | 15 ++++
 .../openstack/glance/GlanceConstants.java          |  9 +++
 .../component/openstack/glance/GlanceEndpoint.java |  6 +-
 .../openstack/keystone/KeystoneConstants.java      |  8 ++
 .../openstack/keystone/KeystoneEndpoint.java       |  7 +-
 .../openstack/neutron/NeutronConstants.java        | 22 +++++
 .../openstack/neutron/NeutronEndpoint.java         |  7 +-
 .../component/openstack/nova/NovaConstants.java    | 12 +++
 .../component/openstack/nova/NovaEndpoint.java     |  6 +-
 .../component/openstack/swift/SwiftConstants.java  | 18 +++++
 .../component/openstack/swift/SwiftEndpoint.java   |  6 +-
 .../swift/producer/ContainerProducer.java          | 17 ++--
 26 files changed, 239 insertions(+), 387 deletions(-)

diff --git 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/cinder/openstack-cinder.json
 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/cinder/openstack-cinder.json
index 1ad7eea..772f53e 100644
--- 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/cinder/openstack-cinder.json
+++ 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/cinder/openstack-cinder.json
@@ -25,6 +25,19 @@
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
   },
+  "headers": {
+    "size": { "kind": "header", "displayName": "", "group": "volume", "label": 
"volume", "required": false, "javaType": "Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Size of volume." },
+    "volumeType": { "kind": "header", "displayName": "", "group": "volume", 
"label": "volume", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Volume type." },
+    "imageRef": { "kind": "header", "displayName": "", "group": "volume", 
"label": "volume", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "ID of image." },
+    "snapshotId": { "kind": "header", "displayName": "", "group": "volume", 
"label": "volume", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "ID of snapshot." },
+    "isBootable": { "kind": "header", "displayName": "", "group": "volume", 
"label": "volume", "required": false, "javaType": "Boolean", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Is bootable." },
+    "volumeId": { "kind": "header", "displayName": "", "group": "snapshot", 
"label": "snapshot", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The Volume ID." },
+    "force": { "kind": "header", "displayName": "", "group": "snapshot", 
"label": "snapshot", "required": false, "javaType": "Boolean", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Force." },
+    "operation": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": 
"", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
ID." },
+    "name": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
name." },
+    "description": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
description." }
+  },
   "properties": {
     "host": { "kind": "path", "displayName": "Host", "group": "producer", 
"label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "OpenStack host url" },
     "apiVersion": { "kind": "parameter", "displayName": "Api Version", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "V3", "description": 
"OpenStack API version" },
diff --git 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/glance/openstack-glance.json
 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/glance/openstack-glance.json
index 45f8451..3cfb3dd 100644
--- 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/glance/openstack-glance.json
+++ 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/glance/openstack-glance.json
@@ -25,6 +25,20 @@
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
   },
+  "headers": {
+    "diskFormat": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": 
"org.openstack4j.model.image.DiskFormat", "enum": [ "RAW", "VHD", "VMDK", 
"VDI", "ISO", "QCOW2", "AKI", "ARI", "AMI", "UNRECOGNIZED" ], "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The number of flavor VCPU." },
+    "containerFormat": { "kind": "header", "displayName": "", "group": 
"producer", "label": "", "required": false, "javaType": 
"org.openstack4j.model.image.ContainerFormat", "enum": [ "BARE", "OVF", "AKI", 
"ARI", "AMI", "DOCKER", "UNRECOGNIZED" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Size of RAM." },
+    "owner": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Image owner." },
+    "isPublic": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "Boolean", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "Is 
public." },
+    "minRam": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "Long", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Minimum ram." },
+    "minDisk": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "Long", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Minimum disk." },
+    "size": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "Long", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Size." },
+    "checksum": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Checksum." },
+    "operation": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": 
"", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
ID." },
+    "name": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
name." },
+    "properties": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "Map<String, String>", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The image properties." }
+  },
   "properties": {
     "host": { "kind": "path", "displayName": "Host", "group": "producer", 
"label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "OpenStack host url" },
     "apiVersion": { "kind": "parameter", "displayName": "Api Version", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "V3", "description": 
"OpenStack API version" },
diff --git 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/keystone/openstack-keystone.json
 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/keystone/openstack-keystone.json
index dac27d7..2ee2faa 100644
--- 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/keystone/openstack-keystone.json
+++ 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/keystone/openstack-keystone.json
@@ -25,6 +25,18 @@
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
   },
+  "headers": {
+    "description": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
description." },
+    "domainId": { "kind": "header", "displayName": "", "group": "group project 
user", "label": "group project user", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "ID of the domain." },
+    "parentId": { "kind": "header", "displayName": "", "group": "project", 
"label": "project", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The parent project ID." },
+    "password": { "kind": "header", "displayName": "", "group": "user", 
"label": "user", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"User's password." },
+    "email": { "kind": "header", "displayName": "", "group": "user", "label": 
"user", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"User's email." },
+    "userId": { "kind": "header", "displayName": "", "group": "group", 
"label": "group", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "ID 
of the user." },
+    "groupId": { "kind": "header", "displayName": "", "group": "group", 
"label": "group", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "ID 
of the group." },
+    "operation": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": 
"", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
ID." },
+    "name": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
name." }
+  },
   "properties": {
     "host": { "kind": "path", "displayName": "Host", "group": "producer", 
"label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "OpenStack host url" },
     "config": { "kind": "parameter", "displayName": "Config", "group": 
"producer", "label": "", "required": false, "type": "object", "javaType": 
"org.openstack4j.core.transport.Config", "deprecated": false, "autowired": 
false, "secret": false, "description": "OpenStack configuration" },
diff --git 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/neutron/openstack-neutron.json
 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/neutron/openstack-neutron.json
index 1107517..f9eedd7 100644
--- 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/neutron/openstack-neutron.json
+++ 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/neutron/openstack-neutron.json
@@ -25,6 +25,30 @@
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
   },
+  "headers": {
+    "tenantId": { "kind": "header", "displayName": "", "group": "network port 
router", "label": "network port router", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Tenant ID." },
+    "networkId": { "kind": "header", "displayName": "", "group": "subnet 
port", "label": "subnet port", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Network ID." },
+    "adminStateUp": { "kind": "header", "displayName": "", "group": "network", 
"label": "network", "required": false, "javaType": "Boolean", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "AdminStateUp header." },
+    "networkType": { "kind": "header", "displayName": "", "group": "network", 
"label": "network", "required": false, "javaType": 
"org.openstack4j.model.network.NetworkType", "enum": [ "LOCAL", "FLAT", "VLAN", 
"VXLAN", "GRE" ], "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Network type." },
+    "physicalNetwork": { "kind": "header", "displayName": "", "group": 
"network", "label": "network", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Physical network." },
+    "segmentId": { "kind": "header", "displayName": "", "group": "network", 
"label": "network", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Segment ID." },
+    "isShared": { "kind": "header", "displayName": "", "group": "network", 
"label": "network", "required": false, "javaType": "Boolean", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Is shared." },
+    "isRouterExternal": { "kind": "header", "displayName": "", "group": 
"network", "label": "network", "required": false, "javaType": "Boolean", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Is router external." },
+    "enableDHCP": { "kind": "header", "displayName": "", "group": "subnet", 
"label": "subnet", "required": false, "javaType": "Boolean", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Enable DHCP." },
+    "gateway": { "kind": "header", "displayName": "", "group": "subnet", 
"label": "subnet", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Gateway." },
+    "ipVersion": { "kind": "header", "displayName": "", "group": "subnet", 
"label": "subnet", "required": false, "javaType": 
"org.openstack4j.model.network.IPVersionType", "enum": [ "V4", "V6" ], 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "IP version." },
+    "cidr": { "kind": "header", "displayName": "", "group": "subnet", "label": 
"subnet", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
cidr representing the IP range for this subnet, based on IP version." },
+    "subnetPools": { "kind": "header", "displayName": "", "group": "subnet", 
"label": "subnet", "required": false, "javaType": 
"org.openstack4j.openstack.networking.domain.NeutronPool", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
allocation pool." },
+    "deviceId": { "kind": "header", "displayName": "", "group": "port", 
"label": "port", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Device ID." },
+    "macAddress": { "kind": "header", "displayName": "", "group": "port", 
"label": "port", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "MAC 
address." },
+    "routerId": { "kind": "header", "displayName": "", "group": "router", 
"label": "router", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Router ID." },
+    "subnetId": { "kind": "header", "displayName": "", "group": "router 
subnet", "label": "router subnet", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Subnet ID." },
+    "portId": { "kind": "header", "displayName": "", "group": "port router", 
"label": "port router", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Port ID." },
+    "interfaceType": { "kind": "header", "displayName": "", "group": "router", 
"label": "router", "required": false, "javaType": 
"org.openstack4j.model.network.AttachInterfaceType", "enum": [ "PORT", "SUBNET" 
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Interface type." },
+    "operation": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": 
"", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
ID." },
+    "name": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
name." }
+  },
   "properties": {
     "host": { "kind": "path", "displayName": "Host", "group": "producer", 
"label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "OpenStack host url" },
     "apiVersion": { "kind": "parameter", "displayName": "Api Version", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "V3", "description": 
"OpenStack API version" },
diff --git 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/nova/openstack-nova.json
 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/nova/openstack-nova.json
index 7787b27..dc690a9 100644
--- 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/nova/openstack-nova.json
+++ 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/nova/openstack-nova.json
@@ -25,6 +25,22 @@
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
   },
+  "headers": {
+    "FlavorId": { "kind": "header", "displayName": "", "group": "flavor 
server", "label": "flavor server", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "ID of the flavor." },
+    "RAM": { "kind": "header", "displayName": "", "group": "flavor", "label": 
"flavor", "required": false, "javaType": "Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Size of RAM." },
+    "VCPU": { "kind": "header", "displayName": "", "group": "flavor", "label": 
"flavor", "required": false, "javaType": "Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
number of flavor VCPU." },
+    "disk": { "kind": "header", "displayName": "", "group": "flavor", "label": 
"flavor", "required": false, "javaType": "Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Size of disk." },
+    "swap": { "kind": "header", "displayName": "", "group": "flavor", "label": 
"flavor", "required": false, "javaType": "Integer", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Size of swap." },
+    "rxtxFactor": { "kind": "header", "displayName": "", "group": "flavor", 
"label": "flavor", "required": false, "javaType": "Integer", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Rxtx Factor." },
+    "AdminPassword": { "kind": "header", "displayName": "", "group": "server", 
"label": "server", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "Admin password of the new server." },
+    "ImageId": { "kind": "header", "displayName": "", "group": "server", 
"label": "server", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The Image ID." },
+    "KeypairName": { "kind": "header", "displayName": "", "group": "server", 
"label": "server", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The Keypair name." },
+    "NetworkId": { "kind": "header", "displayName": "", "group": "server", 
"label": "server", "required": false, "javaType": "List<String>", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The list of networks (by id)." },
+    "action": { "kind": "header", "displayName": "", "group": "server", 
"label": "server", "required": false, "javaType": 
"org.openstack4j.model.compute.Action", "enum": [ "PAUSE", "UNPAUSE", "STOP", 
"START", "LOCK", "UNLOCK", "SUSPEND", "RESUME", "RESCUE", "UNRESCUE", "SHELVE", 
"SHELVE_OFFLOAD", "UNSHELVE", "FORCEDELETE" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "An 
action to perform." },
+    "operation": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": 
"", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
ID." },
+    "name": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
name." }
+  },
   "properties": {
     "host": { "kind": "path", "displayName": "Host", "group": "producer", 
"label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "OpenStack host url" },
     "apiVersion": { "kind": "parameter", "displayName": "Api Version", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "V3", "description": 
"OpenStack API version" },
diff --git 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/swift/openstack-swift.json
 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/swift/openstack-swift.json
index eae48dc..ce16a24 100644
--- 
a/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/swift/openstack-swift.json
+++ 
b/components/camel-openstack/src/generated/resources/org/apache/camel/component/openstack/swift/openstack-swift.json
@@ -25,6 +25,22 @@
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
   },
+  "headers": {
+    "containerName": { "kind": "header", "displayName": "", "group": "object 
container", "label": "object container", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The container name." },
+    "objectName": { "kind": "header", "displayName": "", "group": "object", 
"label": "object", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "The object name." },
+    "X-Container-Meta-": { "kind": "header", "displayName": "", "group": 
"container", "label": "container", "required": false, "javaType": "Map<String, 
String>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Container metadata prefix." },
+    "X-Versions-Location": { "kind": "header", "displayName": "", "group": 
"container", "label": "container", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Versions location." },
+    "X-Container-Read": { "kind": "header", "displayName": "", "group": 
"container", "label": "container", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "ACL - container read." },
+    "X-Container-Write": { "kind": "header", "displayName": "", "group": 
"container", "label": "container", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "ACL - container write." },
+    "limit": { "kind": "header", "displayName": "", "group": "container", 
"label": "container", "required": false, "javaType": "Integer", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "List options - limit." },
+    "marker": { "kind": "header", "displayName": "", "group": "container", 
"label": "container", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "List options - marker." },
+    "end_marker": { "kind": "header", "displayName": "", "group": "container", 
"label": "container", "required": false, "javaType": "String", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "List options - end marker." },
+    "delimiter": { "kind": "header", "displayName": "", "group": "container", 
"label": "container", "required": false, "javaType": "Character", "deprecated": 
false, "deprecationNote": "", "autowired": false, "secret": false, 
"description": "List options - delimiter." },
+    "path": { "kind": "header", "displayName": "", "group": "container 
object", "label": "container object", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The path." },
+    "operation": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform." },
+    "ID": { "kind": "header", "displayName": "", "group": "producer", "label": 
"", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
ID." },
+    "name": { "kind": "header", "displayName": "", "group": "producer", 
"label": "", "required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
name." }
+  },
   "properties": {
     "host": { "kind": "path", "displayName": "Host", "group": "producer", 
"label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "OpenStack host url" },
     "apiVersion": { "kind": "parameter", "displayName": "Api Version", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "V3", "description": 
"OpenStack API version" },
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 67604e5..86b22ba 100644
--- a/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
@@ -53,8 +53,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
-
-
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 == Usage
 
@@ -80,31 +81,6 @@ You can use following settings for each subsystem:
 |`delete` | Delete the volume.
 |=========================================================================
 
-=== Message headers evaluated by the Volume producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the volume.
-
-|`name` |`String` |The volume name.
-
-|`description` |`String` | Volume description.
-
-|`size` |`Integer` |Size of volume.
-
-|`volumeType` |`String` | Volume type.
-
-|`imageRef` |`String` | ID of image.
-
-|`snapshotId` |`String` | ID of snapshot.
-
-|`isBootable` |`Boolean` | Is bootable.
-|=========================================================================
-
 If you need more precise volume settings you can create new object of the type 
*org.openstack4j.model.storage.block.Volume* and send in the message body.
 
 == snapshots
@@ -126,26 +102,6 @@ If you need more precise volume settings you can create 
new object of the type *
 
 |=========================================================================
 
-=== Message headers evaluated by the Snapshot producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the server.
-
-|`name` |`String` |The server name.
-
-|`description` |`String` | The snapshot description.
-
-|`VolumeId` |`String` | The Volume ID.
-
-|`force` |`Boolean` | Force.
-
-|=========================================================================
-
 If you need more precise server settings you can create new object of the type 
*org.openstack4j.model.storage.block.VolumeSnapshot* and send in the message 
body.
 
 
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 db19c70..7b5d31a 100644
--- a/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
@@ -53,6 +53,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 == Usage
 
@@ -75,37 +78,5 @@ include::partial$component-endpoint-options.adoc[]
 |`delete` | Delete the image.
 |=========================================================================
 
-=== Message headers evaluated by the Glance producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the flavor.
-
-|`name` |`String` |The flavor name.
-
-|`diskFormat` |`org.openstack4j.model.image.DiskFormat` |The number of flavor 
VCPU.
-
-|`containerFormat` |`org.openstack4j.model.image.ContainerFormat` |Size of RAM.
-
-|`owner` |`String` | Image owner.
-
-|`isPublic` |`Boolean` | Is public.
-
-|`minRam` |`Long` | Minimum ram.
-
-|`minDisk` |`Long` | Minimum disk.
-
-|`size` |`Long` | Size.
-
-|`checksum` |`String` | Checksum.
-
-|`properties` | `Map` | Image properties.
-|=========================================================================
-
-
 
 include::spring-boot:partial$starter.adoc[]
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 e8cb5d4..8c72461 100644
--- a/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
@@ -56,6 +56,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 == Usage
 
@@ -79,21 +82,6 @@ You can use following settings for each subsystem:
 |`delete` | Delete the domain.
 |=========================================================================
 
-=== Message headers evaluated by the Domain producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the domain.
-
-|`name` |`String` |The domain name.
-
-|`description` |`String` | Domain description.
-|=========================================================================
-
 If you need more precise domain settings you can create new object of the type 
*org.openstack4j.model.identity.v3.Domain* and send in the message body.
 
 == groups
@@ -120,25 +108,6 @@ If you need more precise domain settings you can create 
new object of the type *
 |`removeUserFromGroup` | Remove the user from the group.
 |=========================================================================
 
-=== Message headers evaluated by the Group producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`groupId` | `String` | ID of the group.
-
-|`name` |`String` |The group name.
-
-|`userId` | `String` | ID of the user.
-
-|`domainId` | `String` | ID of the domain.
-
-|`description` |`String` | Group description.
-|=========================================================================
-
 If you need more precise group settings you can create new object of the type 
*org.openstack4j.model.identity.v3.Group* and send in the message body.
 
 == projects
@@ -159,25 +128,6 @@ If you need more precise group settings you can create new 
object of the type *o
 |`delete` | Delete the project.
 |=========================================================================
 
-=== Message headers evaluated by the Project producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the project.
-
-|`name` |`String` |The project name.
-
-|`description` |`String` | Project description.
-
-|`domainId` | `String` | ID of the domain.
-
-|`parentId` | `String` | The parent project ID.
-|=========================================================================
-
 If you need more precise project settings you can create new object of the 
type *org.openstack4j.model.identity.v3.Project* and send in the message body.
 
 == regions
@@ -198,19 +148,6 @@ If you need more precise project settings you can create 
new object of the type
 |`delete` | Delete the region.
 |=========================================================================
 
-=== Message headers evaluated by the Region producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the region.
-
-|`description` |`String` | Region description.
-|=========================================================================
-
 If you need more precise region settings you can create new object of the type 
*org.openstack4j.model.identity.v3.Region* and send in the message body.
 
 == users
@@ -231,27 +168,6 @@ If you need more precise region settings you can create 
new object of the type *
 |`delete` | Delete the user.
 |=========================================================================
 
-=== Message headers evaluated by the User producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the user.
-
-|`name` |`String` |The user name.
-
-|`description` |`String` | User description.
-
-|`domainId` | `String` | ID of the domain.
-
-|`password` | `String`| User's password.
-
-|`email` | `String`| User's email.
-|=========================================================================
-
 If you need more precise user settings you can create 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 58f7f5c..572171f 100644
--- a/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
@@ -53,7 +53,9 @@ include::partial$component-endpoint-options.adoc[]
 // endpoint options: START
 
 // endpoint options: END
-
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 == Usage
 
@@ -75,33 +77,6 @@ You can use following settings for each subsystem:
 |`delete` | Delete the network.
 |=========================================================================
 
-=== Message headers evaluated by the Network producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the network.
-
-|`name` |`String` |The network name.
-
-|`tenantId` |`String` |Tenant ID.
-
-|`adminStateUp` |`Boolean` |AdminStateUp header.
-
-|`networkType` |`org.openstack4j.model.network.NetworkType` |Network type.
-
-|`physicalNetwork` |`String` |Physical network.
-
-|`segmentId` |`String` |Segment ID.
-
-|`isShared` |`Boolean` |Is shared.
-
-|`isRouterExternal` |`Boolean` | Is router external.
-|=========================================================================
-
 If you need more precise network settings you can create new object of the 
type *org.openstack4j.model.network.Network* and send in the message body.
 
 == subnets
@@ -122,25 +97,6 @@ If you need more precise network settings you can create 
new object of the type
 |`action` | Perform an action on the subnet.
 |=========================================================================
 
-=== Message headers evaluated by the Subnet producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the subnet.
-
-|`name` |`String` |The subnet name.
-
-|`networkId` |`String` |Network ID.
-
-|`enableDHCP` |`Boolean` | Enable DHCP.
-
-|`gateway` |`String` |Gateway.
-|=========================================================================
-
 If you need more precise subnet settings you can create new object of the type 
*org.openstack4j.model.network.Subnet* and send in the message body.
 
 == ports
@@ -162,25 +118,6 @@ If you need more precise subnet settings you can create 
new object of the type *
 
 |=========================================================================
 
-=== Message headers evaluated by the Port producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`name` |`String` |The port name.
-
-|`networkId` |`String` |Network ID.
-
-|`tenantId` |`String` |Tenant ID.
-
-|`deviceId` | `String` | Device ID.
-
-|`macAddress` | `String` | MAC address.
-|=========================================================================
-
 == routers
 
 === Operations you can perform with the Router producer
@@ -204,28 +141,4 @@ If you need more precise subnet settings you can create 
new object of the type *
 
 |=========================================================================
 
-=== Message headers evaluated by the Port producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`name` |`String` |The router name.
-
-|`routerId` |`String` |Router ID.
-
-|`subnetId` |`String` |Subnet ID.
-
-|`portId` |`String` |Port ID.
-
-|`interfaceType` | `org.openstack4j.model.network.AttachInterfaceType` | 
Interface type.
-
-|`tenantId` | `String` | Tenant ID.
-|=========================================================================
-
-
-
-
 include::spring-boot:partial$starter.adoc[]
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 2b2e6bf..4692d4d 100644
--- a/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
@@ -53,7 +53,9 @@ include::partial$component-endpoint-options.adoc[]
 
 // endpoint options: END
 
-
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 == Usage
 
@@ -75,29 +77,6 @@ You can use following settings for each subsystem:
 |`delete` | Delete the flavor.
 |=========================================================================
 
-=== Message headers evaluated by the Flavor producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the flavor.
-
-|`name` |`String` |The flavor name.
-
-|`VCPU` |`Integer` |The number of flavor VCPU.
-
-|`ram` |`Integer` |Size of RAM.
-
-|`disk` |`Integer` |Size of disk.
-
-|`swap` |`Integer` |Size of swap.
-
-|`rxtxFactor` |`Integer` |Rxtx Factor.
-|=========================================================================
-
 If you need more precise flavor settings you can create new object of the type 
*org.openstack4j.model.compute.Flavor* and send in the message body.
 
 == servers
@@ -120,31 +99,6 @@ If you need more precise flavor settings you can create new 
object of the type *
 |`action` | Perform an action on the server.
 |=========================================================================
 
-=== Message headers evaluated by the Server producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`ID` | `String` | ID of the server.
-
-|`name` |`String` |The server name.
-
-|`ImageId` |`String` | The Image ID.
-
-|`FlavorId` |`String` |The ID of flavor which will be used.
-
-|`KeypairName` |`String` | The Keypair name.
-
-|`NetworkId` |`String` | The network ID.
-
-|`AdminPassword` |`String` | Admin password of the new server.
-
-|`action` | `org.openstack4j.model.compute.Action` | An action to perform.
-|=========================================================================
-
 If you need more precise server settings you can create new object of the type 
*org.openstack4j.model.compute.ServerCreate* and send in the message body.
 
 == keypairs
@@ -164,18 +118,4 @@ If you need more precise server settings you can create 
new object of the type *
 
 |=========================================================================
 
-=== Message headers evaluated by the Keypair producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`name` |`String` |The keypair name.
-
-|=========================================================================
-
-
-
 include::spring-boot:partial$starter.adoc[]
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 bcc3a97..1e90252 100644
--- a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
@@ -52,7 +52,9 @@ include::partial$component-endpoint-options.adoc[]
 // endpoint options: START
 
 // endpoint options: END
-
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 == Usage
 
@@ -82,36 +84,6 @@ You can use following settings for each subsystem:
 |`deleteMetadata` | Delete metadata.
 |=========================================================================
 
-=== Message headers evaluated by the Volume producer
-
-[width="100%",cols="20%,10%,70%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`name` |`String` |The container name.
-
-|`X-Container-Meta-` |`Map` | Container metadata prefix.
-
-|`X-Versions-Location` |`String` | Versions location.
-
-|`X-Container-Read` |`String` |  ACL - container read.
-
-|`X-Container-Write` |`String` | ACL - container write.
-
-|`limit` | `Integer` | List options - limit.
-
-|`marker` | `String` | List options - marker.
-
-|`end_marker` | `String` | List options - end marker.
-
-|`delimiter` | `Character` | List options - delimiter.
-
-|`path` | `String` | List options - path.
-
-|=========================================================================
-
 If you need more precise container settings you can create 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.
 
@@ -138,20 +110,4 @@ or 
*org.openstack4j.model.storage.object.options.ContainerListOptions* for listi
 
 |=========================================================================
 
-=== Message headers evaluated by the Object producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=========================================================================
-|Header |Type |Description
-
-|`operation` | `String` | The operation to perform.
-
-|`containerName` |`String` |The container name.
-
-|`objectName` |`String` |The object name.
-
-|=========================================================================
-
-
-
 include::spring-boot:partial$starter.adoc[]
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderConstants.java
index 77bb37b..b8538ef 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderConstants.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.openstack.cinder;
 
 import org.apache.camel.component.openstack.common.OpenstackConstants;
+import org.apache.camel.spi.Metadata;
 
 public final class CinderConstants extends OpenstackConstants {
 
@@ -24,14 +25,21 @@ public final class CinderConstants extends 
OpenstackConstants {
     public static final String SNAPSHOTS = "snapshots";
 
     //volumes
+    @Metadata(label = "volume", description = "Size of volume.", javaType = 
"Integer")
     public static final String SIZE = "size";
+    @Metadata(label = "volume", description = "Volume type.", javaType = 
"String")
     public static final String VOLUME_TYPE = "volumeType";
+    @Metadata(label = "volume", description = "ID of image.", javaType = 
"String")
     public static final String IMAGE_REF = "imageRef";
+    @Metadata(label = "volume", description = "ID of snapshot.", javaType = 
"String")
     public static final String SNAPSHOT_ID = "snapshotId";
+    @Metadata(label = "volume", description = "Is bootable.", javaType = 
"Boolean")
     public static final String IS_BOOTABLE = "isBootable";
 
     //volumeSnapshots
+    @Metadata(label = "snapshot", description = "The Volume ID.", javaType = 
"String")
     public static final String VOLUME_ID = "volumeId";
+    @Metadata(label = "snapshot", description = "Force.", javaType = "Boolean")
     public static final String FORCE = "force";
 
     public static final String GET_ALL_TYPES = "getAllTypes";
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
index fc136f8..84f7d7b 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
@@ -27,11 +27,13 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.openstack4j.core.transport.Config;
 
+import static 
org.apache.camel.component.openstack.common.OpenstackConstants.SCHEME_CINDER;
+
 /**
  * Access data in OpenStack Cinder block storage.
  */
-@UriEndpoint(firstVersion = "2.19.0", scheme = "openstack-cinder", title = 
"OpenStack Cinder", syntax = "openstack-cinder:host",
-             category = { Category.CLOUD, Category.PAAS }, producerOnly = true)
+@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_CINDER, title = 
"OpenStack Cinder", syntax = "openstack-cinder:host",
+             category = { Category.CLOUD, Category.PAAS }, producerOnly = 
true, headersClass = CinderConstants.class)
 public class CinderEndpoint extends AbstractOpenstackEndpoint {
 
     @UriParam(enums = "snapshots,volumes")
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/OpenstackConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/OpenstackConstants.java
index ad46e21..c614f96 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/OpenstackConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/OpenstackConstants.java
@@ -16,16 +16,31 @@
  */
 package org.apache.camel.component.openstack.common;
 
+import org.apache.camel.spi.Metadata;
+
 /**
  * General camel-openstack component constants. The main purpose for this 
class is to avoid duplication general
  * constants in each submodule.
  */
 public class OpenstackConstants {
 
+    // The schemes
+    public static final String SCHEME_CINDER = "openstack-cinder";
+    public static final String SCHEME_GLANCE = "openstack-glance";
+    public static final String SCHEME_KEYSTONE = "openstack-keystone";
+    public static final String SCHEME_NEUTRON = "openstack-neutron";
+    public static final String SCHEME_NOVA = "openstack-nova";
+    public static final String SCHEME_SWIFT = "openstack-swift";
+
+    @Metadata(description = "The operation to perform.", javaType = "String")
     public static final String OPERATION = "operation";
+    @Metadata(description = "The ID.", javaType = "String")
     public static final String ID = "ID";
+    @Metadata(description = "The name.", javaType = "String")
     public static final String NAME = "name";
+    @Metadata(description = "The description.", javaType = "String", 
applicableFor = { SCHEME_CINDER })
     public static final String DESCRIPTION = "description";
+    @Metadata(description = "The image properties.", javaType = "Map<String, 
String>", applicableFor = SCHEME_GLANCE)
     public static final String PROPERTIES = "properties";
 
     public static final String CREATE = "create";
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceConstants.java
index 612dc16..df3361b 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceConstants.java
@@ -17,16 +17,25 @@
 package org.apache.camel.component.openstack.glance;
 
 import org.apache.camel.component.openstack.common.OpenstackConstants;
+import org.apache.camel.spi.Metadata;
 
 public final class GlanceConstants extends OpenstackConstants {
 
+    @Metadata(description = "The number of flavor VCPU.", javaType = 
"org.openstack4j.model.image.DiskFormat")
     public static final String DISK_FORMAT = "diskFormat";
+    @Metadata(description = "Size of RAM.", javaType = 
"org.openstack4j.model.image.ContainerFormat")
     public static final String CONTAINER_FORMAT = "containerFormat";
+    @Metadata(description = "Image owner.", javaType = "String")
     public static final String OWNER = "owner";
+    @Metadata(description = "Is public.", javaType = "Boolean")
     public static final String IS_PUBLIC = "isPublic";
+    @Metadata(description = "Minimum ram.", javaType = "Long")
     public static final String MIN_RAM = "minRam";
+    @Metadata(description = "Minimum disk.", javaType = "Long")
     public static final String MIN_DISK = "minDisk";
+    @Metadata(description = "Size.", javaType = "Long")
     public static final String SIZE = "size";
+    @Metadata(description = "Checksum.", javaType = "String")
     public static final String CHECKSUM = "checksum";
 
     public static final String RESERVE = "reserve";
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
index 415fa86..6511f4b 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
@@ -25,11 +25,13 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.openstack4j.core.transport.Config;
 
+import static 
org.apache.camel.component.openstack.common.OpenstackConstants.SCHEME_GLANCE;
+
 /**
  * Manage VM images and metadata definitions in OpenStack Glance.
  */
-@UriEndpoint(firstVersion = "2.19.0", scheme = "openstack-glance", title = 
"OpenStack Glance", syntax = "openstack-glance:host",
-             category = { Category.CLOUD, Category.PAAS }, producerOnly = true)
+@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_GLANCE, title = 
"OpenStack Glance", syntax = "openstack-glance:host",
+             category = { Category.CLOUD, Category.PAAS }, producerOnly = 
true, headersClass = GlanceConstants.class)
 public class GlanceEndpoint extends AbstractOpenstackEndpoint {
 
     @UriPath
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneConstants.java
index 78e5664..e8d1b77 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneConstants.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.openstack.keystone;
 
 import org.apache.camel.component.openstack.common.OpenstackConstants;
+import org.apache.camel.spi.Metadata;
 
 public final class KeystoneConstants extends OpenstackConstants {
 
@@ -26,14 +27,21 @@ public final class KeystoneConstants extends 
OpenstackConstants {
     public static final String USERS = "users";
     public static final String GROUPS = "groups";
 
+    @Metadata(description = "The description.", javaType = "String")
     public static final String DESCRIPTION = "description";
+    @Metadata(label = "group project user", description = "ID of the domain.", 
javaType = "String")
     public static final String DOMAIN_ID = "domainId";
+    @Metadata(label = "project", description = "The parent project ID.", 
javaType = "String")
     public static final String PARENT_ID = "parentId";
 
+    @Metadata(label = "user", description = "User's password.", javaType = 
"String")
     public static final String PASSWORD = "password";
+    @Metadata(label = "user", description = "User's email.", javaType = 
"String")
     public static final String EMAIL = "email";
 
+    @Metadata(label = "group", description = "ID of the user.", javaType = 
"String")
     public static final String USER_ID = "userId";
+    @Metadata(label = "group", description = "ID of the group.", javaType = 
"String")
     public static final String GROUP_ID = "groupId";
 
     public static final String ADD_USER_TO_GROUP = "addUserToGroup";
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
index 0d5fa21..96a27b1 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
@@ -30,12 +30,15 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.openstack4j.core.transport.Config;
 
+import static 
org.apache.camel.component.openstack.common.OpenstackConstants.SCHEME_KEYSTONE;
+
 /**
  * Access OpenStack Keystone for API client authentication, service discovery 
and distributed multi-tenant
  * authorization.
  */
-@UriEndpoint(firstVersion = "2.19.0", scheme = "openstack-keystone", title = 
"OpenStack Keystone",
-             syntax = "openstack-keystone:host", category = { Category.CLOUD, 
Category.PAAS }, producerOnly = true)
+@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_KEYSTONE, title = 
"OpenStack Keystone",
+             syntax = "openstack-keystone:host", category = { Category.CLOUD, 
Category.PAAS }, producerOnly = true,
+             headersClass = KeystoneConstants.class)
 public class KeystoneEndpoint extends AbstractOpenstackEndpoint {
 
     @UriParam(enums = "regions,domains,projects,users,groups")
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
index 8bc7516..1e33c17 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.openstack.neutron;
 
 import org.apache.camel.component.openstack.common.OpenstackConstants;
+import org.apache.camel.spi.Metadata;
 
 public final class NeutronConstants extends OpenstackConstants {
 
@@ -24,32 +25,53 @@ public final class NeutronConstants extends 
OpenstackConstants {
     public static final String NEUTRON_SUBNETS_SYSTEM = "subnets";
     public static final String NEUTRON_PORT_SYSTEM = "ports";
     public static final String NEUTRON_ROUTER_SYSTEM = "routers";
+    @Metadata(label = "network port router", description = "Tenant ID.", 
javaType = "String")
     public static final String TENANT_ID = "tenantId";
+    @Metadata(label = "subnet port", description = "Network ID.", javaType = 
"String")
     public static final String NETWORK_ID = "networkId";
 
     //network
+    @Metadata(label = "network", description = "AdminStateUp header.", 
javaType = "Boolean")
     public static final String ADMIN_STATE_UP = "adminStateUp";
+    @Metadata(label = "network", description = "Network type.", javaType = 
"org.openstack4j.model.network.NetworkType")
     public static final String NETWORK_TYPE = "networkType";
+    @Metadata(label = "network", description = "Physical network.", javaType = 
"String")
     public static final String PHYSICAL_NETWORK = "physicalNetwork";
+    @Metadata(label = "network", description = "Segment ID.", javaType = 
"String")
     public static final String SEGMENT_ID = "segmentId";
+    @Metadata(label = "network", description = "Is shared.", javaType = 
"Boolean")
     public static final String IS_SHARED = "isShared";
+    @Metadata(label = "network", description = "Is router external.", javaType 
= "Boolean")
     public static final String IS_ROUTER_EXTERNAL = "isRouterExternal";
 
     //subnet
+    @Metadata(label = "subnet", description = "Enable DHCP.", javaType = 
"Boolean")
     public static final String ENABLE_DHCP = "enableDHCP";
+    @Metadata(label = "subnet", description = "Gateway.", javaType = "String")
     public static final String GATEWAY = "gateway";
+    @Metadata(label = "subnet", description = "IP version.", javaType = 
"org.openstack4j.model.network.IPVersionType")
     public static final String IP_VERSION = "ipVersion";
+    @Metadata(label = "subnet", description = "The cidr representing the IP 
range for this subnet, based on IP version.",
+              javaType = "String")
     public static final String CIDR = "cidr";
+    @Metadata(label = "subnet", description = "The allocation pool.",
+              javaType = 
"org.openstack4j.openstack.networking.domain.NeutronPool")
     public static final String SUBNET_POOL = "subnetPools";
 
     //port
+    @Metadata(label = "port", description = "Device ID.", javaType = "String")
     public static final String DEVICE_ID = "deviceId";
+    @Metadata(label = "port", description = "MAC address.", javaType = 
"String")
     public static final String MAC_ADDRESS = "macAddress";
 
     //router
+    @Metadata(label = "router", description = "Router ID.", javaType = 
"String")
     public static final String ROUTER_ID = "routerId";
+    @Metadata(label = "router subnet", description = "Subnet ID.", javaType = 
"String")
     public static final String SUBNET_ID = "subnetId";
+    @Metadata(label = "port router", description = "Port ID.", javaType = 
"String")
     public static final String PORT_ID = "portId";
+    @Metadata(label = "router", description = "Interface type.", javaType = 
"org.openstack4j.model.network.AttachInterfaceType")
     public static final String ITERFACE_TYPE = "interfaceType";
 
     public static final String ATTACH_INTERFACE = "attachInterface";
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
index b2feb48..f8c21e0 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
@@ -29,11 +29,14 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.openstack4j.core.transport.Config;
 
+import static 
org.apache.camel.component.openstack.common.OpenstackConstants.SCHEME_NEUTRON;
+
 /**
  * Access OpenStack Neutron for network services.
  */
-@UriEndpoint(firstVersion = "2.19.0", scheme = "openstack-neutron", title = 
"OpenStack Neutron",
-             syntax = "openstack-neutron:host", category = { Category.CLOUD, 
Category.PAAS }, producerOnly = true)
+@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_NEUTRON, title = 
"OpenStack Neutron",
+             syntax = "openstack-neutron:host", category = { Category.CLOUD, 
Category.PAAS }, producerOnly = true,
+             headersClass = NeutronConstants.class)
 public class NeutronEndpoint extends AbstractOpenstackEndpoint {
 
     @UriParam(enums = "networks,subnets,ports,routers")
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaConstants.java
index 08749c3..3167e55 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaConstants.java
@@ -17,29 +17,41 @@
 package org.apache.camel.component.openstack.nova;
 
 import org.apache.camel.component.openstack.common.OpenstackConstants;
+import org.apache.camel.spi.Metadata;
 
 public final class NovaConstants extends OpenstackConstants {
     public static final String NOVA_SUBSYSTEM_FLAVORS = "flavors";
     public static final String NOVA_SUBSYSTEM_SERVERS = "servers";
     public static final String NOVA_SUBSYSTEM_KEYPAIRS = "keypairs";
 
+    @Metadata(label = "flavor server", description = "ID of the flavor.", 
javaType = "String")
     public static final String FLAVOR_ID = "FlavorId";
 
     //flavor
+    @Metadata(label = "flavor", description = "Size of RAM.", javaType = 
"Integer")
     public static final String RAM = "RAM";
+    @Metadata(label = "flavor", description = "The number of flavor VCPU.", 
javaType = "Integer")
     public static final String VCPU = "VCPU";
+    @Metadata(label = "flavor", description = "Size of disk.", javaType = 
"Integer")
     public static final String DISK = "disk";
+    @Metadata(label = "flavor", description = "Size of swap.", javaType = 
"Integer")
     public static final String SWAP = "swap";
+    @Metadata(label = "flavor", description = "Rxtx Factor.", javaType = 
"Integer")
     public static final String RXTXFACTOR = "rxtxFactor";
 
     //server
+    @Metadata(label = "server", description = "Admin password of the new 
server.", javaType = "String")
     public static final String ADMIN_PASSWORD = "AdminPassword";
+    @Metadata(label = "server", description = "The Image ID.", javaType = 
"String")
     public static final String IMAGE_ID = "ImageId";
+    @Metadata(label = "server", description = "The Keypair name.", javaType = 
"String")
     public static final String KEYPAIR_NAME = "KeypairName";
+    @Metadata(label = "server", description = "The list of networks (by id).", 
javaType = "List<String>")
     public static final String NETWORK = "NetworkId";
 
     //server
     public static final String CREATE_SNAPSHOT = "createSnapshot";
+    @Metadata(label = "server", description = "An action to perform.", 
javaType = "org.openstack4j.model.compute.Action")
     public static final String ACTION = "action";
 
     private NovaConstants() {
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
index c570185..782b501 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
@@ -28,11 +28,13 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.openstack4j.core.transport.Config;
 
+import static 
org.apache.camel.component.openstack.common.OpenstackConstants.SCHEME_NOVA;
+
 /**
  * Access OpenStack to manage compute resources.
  */
-@UriEndpoint(firstVersion = "2.19.0", scheme = "openstack-nova", title = 
"OpenStack Nova", syntax = "openstack-nova:host",
-             category = { Category.CLOUD, Category.PAAS }, producerOnly = true)
+@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_NOVA, title = "OpenStack 
Nova", syntax = "openstack-nova:host",
+             category = { Category.CLOUD, Category.PAAS }, producerOnly = 
true, headersClass = NovaConstants.class)
 public class NovaEndpoint extends AbstractOpenstackEndpoint {
 
     @UriParam(enums = "flavors,servers,keypairs")
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftConstants.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftConstants.java
index 4a50368..9acde7b 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftConstants.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftConstants.java
@@ -17,19 +17,37 @@
 package org.apache.camel.component.openstack.swift;
 
 import org.apache.camel.component.openstack.common.OpenstackConstants;
+import org.apache.camel.spi.Metadata;
+import org.openstack4j.model.storage.object.SwiftHeaders;
 
 public final class SwiftConstants extends OpenstackConstants {
 
     public static final String SWIFT_SUBSYSTEM_OBJECTS = "objects";
     public static final String SWIFT_SUBSYSTEM_CONTAINERS = "containers";
 
+    @Metadata(label = "object container", description = "The container name.", 
javaType = "String")
     public static final String CONTAINER_NAME = "containerName";
+    @Metadata(label = "object", description = "The object name.", javaType = 
"String")
     public static final String OBJECT_NAME = "objectName";
 
+    @Metadata(label = "container", description = "Container metadata prefix.", 
javaType = "Map<String, String>")
+    public static final String CONTAINER_METADATA_PREFIX = 
SwiftHeaders.CONTAINER_METADATA_PREFIX;
+    @Metadata(label = "container", description = "Versions location.", 
javaType = "String")
+    public static final String VERSIONS_LOCATION = 
SwiftHeaders.VERSIONS_LOCATION;
+    @Metadata(label = "container", description = "ACL - container read.", 
javaType = "String")
+    public static final String CONTAINER_READ = SwiftHeaders.CONTAINER_READ;
+    @Metadata(label = "container", description = "ACL - container write.", 
javaType = "String")
+    public static final String CONTAINER_WRITE = SwiftHeaders.CONTAINER_WRITE;
+
+    @Metadata(label = "container", description = "List options - limit.", 
javaType = "Integer")
     public static final String LIMIT = "limit";
+    @Metadata(label = "container", description = "List options - marker.", 
javaType = "String")
     public static final String MARKER = "marker";
+    @Metadata(label = "container", description = "List options - end marker.", 
javaType = "String")
     public static final String END_MARKER = "end_marker";
+    @Metadata(label = "container", description = "List options - delimiter.", 
javaType = "Character")
     public static final String DELIMITER = "delimiter";
+    @Metadata(label = "container object", description = "The path.", javaType 
= "String")
     public static final String PATH = "path";
 
     public static final String GET_METADATA = "getMetadata";
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
index 2a52dd5..b3a5b51 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
@@ -27,11 +27,13 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.openstack4j.core.transport.Config;
 
+import static 
org.apache.camel.component.openstack.common.OpenstackConstants.SCHEME_SWIFT;
+
 /**
  * Access OpenStack Swift object/blob store.
  */
-@UriEndpoint(firstVersion = "2.19.0", scheme = "openstack-swift", title = 
"OpenStack Swift", syntax = "openstack-swift:host",
-             category = { Category.CLOUD, Category.PAAS }, producerOnly = true)
+@UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_SWIFT, title = 
"OpenStack Swift", syntax = "openstack-swift:host",
+             category = { Category.CLOUD, Category.PAAS }, producerOnly = 
true, headersClass = SwiftConstants.class)
 public class SwiftEndpoint extends AbstractOpenstackEndpoint {
 
     @UriParam(enums = "objects,containers")
diff --git 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/producer/ContainerProducer.java
 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/producer/ContainerProducer.java
index 284a1d1..fba7054 100644
--- 
a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/producer/ContainerProducer.java
+++ 
b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/producer/ContainerProducer.java
@@ -30,7 +30,6 @@ import org.apache.camel.util.StringHelper;
 import org.openstack4j.api.OSClient;
 import org.openstack4j.model.common.ActionResponse;
 import org.openstack4j.model.storage.object.SwiftContainer;
-import org.openstack4j.model.storage.object.SwiftHeaders;
 import org.openstack4j.model.storage.object.options.ContainerListOptions;
 import 
org.openstack4j.model.storage.object.options.CreateUpdateContainerOptions;
 
@@ -151,24 +150,24 @@ public class ContainerProducer extends 
AbstractOpenstackProducer {
         CreateUpdateContainerOptions options = 
message.getBody(CreateUpdateContainerOptions.class);
         if (options == null) {
             Map headers = message.getHeaders();
-            if (headers.containsKey(SwiftHeaders.CONTAINER_METADATA_PREFIX)) {
+            if (headers.containsKey(SwiftConstants.CONTAINER_METADATA_PREFIX)) 
{
                 options = getCreateUpdateOptions(options)
-                        
.metadata(message.getHeader(SwiftHeaders.CONTAINER_METADATA_PREFIX, Map.class));
+                        
.metadata(message.getHeader(SwiftConstants.CONTAINER_METADATA_PREFIX, 
Map.class));
             }
 
-            if (headers.containsKey(SwiftHeaders.VERSIONS_LOCATION)) {
+            if (headers.containsKey(SwiftConstants.VERSIONS_LOCATION)) {
                 options = getCreateUpdateOptions(options)
-                        
.versionsLocation(message.getHeader(SwiftHeaders.VERSIONS_LOCATION, 
String.class));
+                        
.versionsLocation(message.getHeader(SwiftConstants.VERSIONS_LOCATION, 
String.class));
             }
 
-            if (headers.containsKey(SwiftHeaders.CONTAINER_READ)) {
+            if (headers.containsKey(SwiftConstants.CONTAINER_READ)) {
                 options = getCreateUpdateOptions(options)
-                        
.accessRead(message.getHeader(SwiftHeaders.CONTAINER_READ, String.class));
+                        
.accessRead(message.getHeader(SwiftConstants.CONTAINER_READ, String.class));
             }
 
-            if (headers.containsKey(SwiftHeaders.CONTAINER_WRITE)) {
+            if (headers.containsKey(SwiftConstants.CONTAINER_WRITE)) {
                 options = getCreateUpdateOptions(options)
-                        
.accessWrite(message.getHeader(SwiftHeaders.CONTAINER_WRITE, String.class));
+                        
.accessWrite(message.getHeader(SwiftConstants.CONTAINER_WRITE, String.class));
             }
         }
         return options;

Reply via email to