You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2024/08/28 15:30:51 UTC

(camel-karavan) 01/01: Squash Fix #1384

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

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

commit 8af83fc9f9f683e8d21db1c72dcedc2476d568ca
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Wed Aug 28 11:10:18 2024 -0400

    Squash
    Fix #1384
    
    Fix #1384
    
    Fix #1384
---
 karavan-core/src/core/api/TopologyUtils.ts |   382 +-
 karavan-core/test/kamelets.yaml            | 22474 +++++++++++++++++++++++++++
 karavan-core/test/topology.spec.ts         |    19 +
 karavan-core/test/topology3.camel.yaml     |    27 +
 4 files changed, 22727 insertions(+), 175 deletions(-)

diff --git a/karavan-core/src/core/api/TopologyUtils.ts b/karavan-core/src/core/api/TopologyUtils.ts
index 01c45845..78e40888 100644
--- a/karavan-core/src/core/api/TopologyUtils.ts
+++ b/karavan-core/src/core/api/TopologyUtils.ts
@@ -39,45 +39,47 @@ import { CamelDefinitionApiExt } from './CamelDefinitionApiExt';
 import { CamelDisplayUtil } from './CamelDisplayUtil';
 import { CamelUtil } from './CamelUtil';
 
-const outgoingDefinitions: string[] = ['ToDefinition', 'KameletDefinition', 'ToDynamicDefinition', "PollEnrichDefinition", "EnrichDefinition", "WireTapDefinition", "SagaDefinition"];
+const outgoingDefinitions: string[] = ['ToDefinition', 'KameletDefinition', 'ToDynamicDefinition', 'PollEnrichDefinition', 'EnrichDefinition', 'WireTapDefinition', 'SagaDefinition'];
 
 export class ChildElement {
-    constructor(public name: string = '', public className: string = '', public multiple: boolean = false) {}
+    constructor(public name: string = '', public className: string = '', public multiple: boolean = false) {
+    }
 }
 
 export class TopologyUtils {
-    private constructor() {}
+    private constructor() {
+    }
 
     static getOutgoingDefinitions = (): string[] => {
         return outgoingDefinitions;
-    }
+    };
 
     static isElementInternalComponent = (element: CamelElement): boolean => {
         const uri = (element as any).uri;
         const component = ComponentApi.findByName(uri);
         if (INTERNAL_COMPONENTS.includes(uri?.split(':')?.[0])) return true;
         return component !== undefined && component.component.remote !== true;
-    }
+    };
 
     static getConnectorType = (element: CamelElement): 'component' | 'kamelet' => {
         return CamelUtil.isKameletComponent(element) ? 'kamelet' : 'component';
-    }
+    };
 
     static cutKameletUriSuffix = (uri: string): string => {
-        if (uri.endsWith("-sink")) {
+        if (uri.endsWith('-sink')) {
             return uri.substring(0, uri.length - 5);
-        } else if (uri.endsWith("-source")) {
+        } else if (uri.endsWith('-source')) {
             return uri.substring(0, uri.length - 7);
-        } else if (uri.endsWith("-action")) {
+        } else if (uri.endsWith('-action')) {
             return uri.substring(0, uri.length - 7);
         } else {
             return uri;
         }
-    }
+    };
 
     static getUniqueUri = (element: CamelElement): string => {
-        const uri:string = (element as any).uri || '';
-        let result = uri.startsWith("kamelet") ? TopologyUtils.cutKameletUriSuffix(uri).concat(":") : uri.concat(":");
+        const uri: string = (element as any).uri || '';
+        let result = uri.startsWith('kamelet') ? TopologyUtils.cutKameletUriSuffix(uri).concat(':') : uri.concat(':');
         const className = element.dslName;
         if (className === 'FromDefinition' || className === 'ToDefinition') {
             if (!CamelUtil.isKameletComponent(element)) {
@@ -85,29 +87,29 @@ export class TopologyUtils {
                 for (const property of requiredProperties) {
                     const value = CamelDefinitionApiExt.getParametersValue(element, property.name, property.kind === 'path');
                     if (value !== undefined && property.type === 'string' && value.trim().length > 0) {
-                        result = result + property.name + "=" + value + "&";
+                        result = result + property.name + '=' + value + '&';
                     }
                 }
             } else {
                 const requiredProperties = CamelUtil.getKameletProperties(element, true);
                 for (const property of requiredProperties) {
                     const value = CamelDefinitionApiExt.getParametersValue(element, property.id);
-                    if (value !== undefined && property.type === 'string' && value.trim().length > 0) {
-                        result = result + property.id + "=" + value + "&";
+                    if (value !== undefined && property.type === 'string' && value.toString().trim().length > 0) {
+                        result = result + property.id + '=' + value + '&';
                     }
                 }
             }
         }
-        return result.endsWith("&") ? result.substring(0, result.length - 1) : result;
-    }
+        return result.endsWith('&') ? result.substring(0, result.length - 1) : result;
+    };
 
     static hasDirectUri = (element: CamelElement): boolean => {
         return this.hasUriStartWith(element, 'direct');
-    }
+    };
 
     static hasSedaUri = (element: CamelElement): boolean => {
         return this.hasUriStartWith(element, 'seda');
-    }
+    };
 
     static hasUriStartWith = (element: CamelElement, text: string): boolean => {
         if ((element as any).uri && typeof (element as any).uri === 'string') {
@@ -119,205 +121,235 @@ export class TopologyUtils {
         } else {
             return false;
         }
-    }
+    };
 
     static findTopologyRestNodes = (integration: Integration[]): TopologyRestNode[] => {
-        const result:TopologyRestNode[] = [];
+        const result: TopologyRestNode[] = [];
         integration.forEach(i => {
-            const filename = i.metadata.name;
-            const routes = i.spec.flows?.filter(flow => flow.dslName === 'RestDefinition');
-            routes?.forEach((rest: RestDefinition) => {
-                const uris: string[] = [];
-                rest?.get?.forEach((d: GetDefinition) => {
-                    if (d.to) uris.push(d.to);
-                });
-                rest?.post?.forEach((d: PostDefinition) => {
-                    if (d.to) uris.push(d.to);
-                });
-                rest?.put?.forEach((d: PutDefinition) => {
-                    if (d.to) uris.push(d.to);
+            try {
+                const filename = i.metadata.name;
+                const routes = i.spec.flows?.filter(flow => flow.dslName === 'RestDefinition');
+                routes?.forEach((rest: RestDefinition) => {
+                    const uris: string[] = [];
+                    rest?.get?.forEach((d: GetDefinition) => {
+                        if (d.to) uris.push(d.to);
+                    });
+                    rest?.post?.forEach((d: PostDefinition) => {
+                        if (d.to) uris.push(d.to);
+                    });
+                    rest?.put?.forEach((d: PutDefinition) => {
+                        if (d.to) uris.push(d.to);
+                    });
+                    rest?.delete?.forEach((d: DeleteDefinition) => {
+                        if (d.to) uris.push(d.to);
+                    });
+                    rest?.patch?.forEach((d: PatchDefinition) => {
+                        if (d.to) uris.push(d.to);
+                    });
+                    rest?.head?.forEach((d: HeadDefinition) => {
+                        if (d.to) uris.push(d.to);
+                    });
+                    const title = '' + (rest.description ? rest.description : rest.id);
+                    result.push(new TopologyRestNode(rest.path || '', '' + rest.id, uris, title, filename, rest));
                 });
-                rest?.delete?.forEach((d: DeleteDefinition) => {
-                    if (d.to) uris.push(d.to);
-                });
-                rest?.patch?.forEach((d: PatchDefinition) => {
-                    if (d.to) uris.push(d.to);
-                });
-                rest?.head?.forEach((d: HeadDefinition) => {
-                    if (d.to) uris.push(d.to);
-                });
-                const title = '' + (rest.description ? rest.description : rest.id);
-                result.push(new TopologyRestNode(rest.path || '', '' + rest.id, uris, title, filename, rest))
-            })
-        })
+            } catch (e) {
+                console.error(e);
+            }
+        });
         return result;
     };
 
     static findTopologyIncomingNodes = (integration: Integration[]): TopologyIncomingNode[] => {
-        const result:TopologyIncomingNode[] = [];
+        const result: TopologyIncomingNode[] = [];
         integration.forEach(i => {
-            const filename = i.metadata.name;
-            const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
-            const routeElements = routes?.map(r => {
-                const id = 'incoming-' + r.id;
-                const title = CamelDisplayUtil.getStepDescription(r.from);
-                const type = TopologyUtils.isElementInternalComponent(r.from) ? 'internal' : 'external';
-                const connectorType = TopologyUtils.getConnectorType(r.from);
-                const uniqueUri = TopologyUtils.getUniqueUri(r.from);
-                return new TopologyIncomingNode(id, type, connectorType, r.id, title, filename, r.from, uniqueUri);
-            }) || [];
-            result.push(...routeElements)
-        })
+            try {
+                const filename = i.metadata.name;
+                const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
+                const routeElements = routes?.map(r => {
+                    const id = 'incoming-' + r.id;
+                    const title = CamelDisplayUtil.getStepDescription(r.from);
+                    const type = TopologyUtils.isElementInternalComponent(r.from) ? 'internal' : 'external';
+                    const connectorType = TopologyUtils.getConnectorType(r.from);
+                    const uniqueUri = TopologyUtils.getUniqueUri(r.from);
+                    return new TopologyIncomingNode(id, type, connectorType, r.id, title, filename, r.from, uniqueUri);
+                }) || [];
+                result.push(...routeElements);
+            } catch (e) {
+                console.error(e);
+            }
+        });
         return result;
-    }
+    };
 
     static findTopologyRouteNodes = (integration: Integration[]): TopologyRouteNode[] => {
-        const result:TopologyRouteNode[] = [];
+        const result: TopologyRouteNode[] = [];
         integration.forEach(i => {
-            const filename = i.metadata.name;
-            const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
-            const routeElements = routes?.map(r => {
-                const id = 'route-' + r.id;
-                const title = '' + (r.description ? r.description : r.id)
-                return new TopologyRouteNode(id, r.id, title, filename, r.from, r);
-            }) || [];
-            result.push(...routeElements)
-        })
+            try {
+                const filename = i.metadata.name;
+                const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
+                const routeElements = routes?.map(r => {
+                    const id = 'route-' + r.id;
+                    const title = '' + (r.description ? r.description : r.id);
+                    return new TopologyRouteNode(id, r.id, title, filename, r.from, r);
+                }) || [];
+                result.push(...routeElements);
+            } catch (e) {
+                console.error(e);
+            }
+        });
         return result;
-    }
+    };
 
     static findTopologyRouteConfigurationNodes = (integration: Integration[]): TopologyRouteConfigurationNode[] => {
-        const result:TopologyRouteConfigurationNode[] = [];
+        const result: TopologyRouteConfigurationNode[] = [];
         integration.forEach(i => {
-            const filename = i.metadata.name;
-            const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteConfigurationDefinition');
-            const routeElements = routes?.map(r => {
-                const id = 'route-' + r.id;
-                const title = '' + (r.description ? r.description : r.id)
-                return new TopologyRouteConfigurationNode(id, r.id, title, filename, r);
-            }) || [];
-            result.push(...routeElements)
-        })
+            try {
+                const filename = i.metadata.name;
+                const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteConfigurationDefinition');
+                const routeElements = routes?.map(r => {
+                    const id = 'route-' + r.id;
+                    const title = '' + (r.description ? r.description : r.id);
+                    return new TopologyRouteConfigurationNode(id, r.id, title, filename, r);
+                }) || [];
+                result.push(...routeElements);
+            } catch (e) {
+                console.error(e);
+            }
+        });
         return result;
-    }
+    };
 
     static findTopologyRouteOutgoingNodes = (integrations: Integration[]): TopologyOutgoingNode[] => {
-        const result:TopologyOutgoingNode[] = [];
+        const result: TopologyOutgoingNode[] = [];
         integrations.forEach(i => {
-            const filename = i.metadata.name;
-            const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
-            routes?.forEach(route => {
-                const from: FromDefinition = route.from;
-                const elements = TopologyUtils.findOutgoingInStep(from, []);
-                elements.forEach((e: any) => {
-                    const id = 'outgoing-' + route.id + '-' + e.id;
-                    const title = CamelDisplayUtil.getStepDescription(e);
-                    const type = TopologyUtils.isElementInternalComponent(e) ? 'internal' : 'external';
-                    const connectorType = TopologyUtils.getConnectorType(e);
-                    const uniqueUri = TopologyUtils.getUniqueUri(e);
-                    if (
-                        connectorType !== 'kamelet' ||
-                        CamelUtil.getKamelet(e)?.metadata.labels['camel.apache.org/kamelet.type'] !== 'action'
-                    ) {
-                        result.push(new TopologyOutgoingNode(id, type, connectorType, route.id, title, filename, e, uniqueUri));
-                    }
-                })
-                result.push(...TopologyUtils.findDeadLetterChannelNodes(route, filename))
-            })
-
-        })
+            try {
+                const filename = i.metadata.name;
+                const routes = i.spec.flows?.filter(flow => flow.dslName === 'RouteDefinition');
+                routes?.forEach(route => {
+                    const from: FromDefinition = route.from;
+                    const elements = TopologyUtils.findOutgoingInStep(from, []);
+                    elements.forEach((e: any) => {
+                        const id = 'outgoing-' + route.id + '-' + e.id;
+                        const title = CamelDisplayUtil.getStepDescription(e);
+                        const type = TopologyUtils.isElementInternalComponent(e) ? 'internal' : 'external';
+                        const connectorType = TopologyUtils.getConnectorType(e);
+                        const uniqueUri = TopologyUtils.getUniqueUri(e);
+                        if (
+                            connectorType !== 'kamelet' ||
+                            CamelUtil.getKamelet(e)?.metadata.labels['camel.apache.org/kamelet.type'] !== 'action'
+                        ) {
+                            result.push(new TopologyOutgoingNode(id, type, connectorType, route.id, title, filename, e, uniqueUri));
+                        }
+                    });
+                    result.push(...TopologyUtils.findDeadLetterChannelNodes(route, filename));
+                });
+            } catch (e) {
+                console.error(e);
+            }
+        });
         return result;
-    }
+    };
 
-    static findDeadLetterChannelNodes(route: RouteDefinition, filename: string):TopologyOutgoingNode[] {
-        const result:TopologyOutgoingNode[] = [];
-        const deadLetterChannel = route.errorHandler?.deadLetterChannel;
-        const deadLetterUri = deadLetterChannel?.deadLetterUri;
-        if (deadLetterChannel !== undefined && deadLetterUri !== undefined) {
-            const parts = deadLetterUri.split(':');
-            if (parts.length > 1 && INTERNAL_COMPONENTS.includes(parts[0])) {
-                const id = 'outgoing-' + route.id + '-' + deadLetterChannel?.id;
-                const title = CamelDisplayUtil.getStepDescription(deadLetterChannel);
-                const type =  'internal';
-                const connectorType = 'component';
-                result.push(new TopologyOutgoingNode(id, type, connectorType, route.id || '', title, filename, deadLetterChannel, deadLetterUri));
+    static findDeadLetterChannelNodes(route: RouteDefinition, filename: string): TopologyOutgoingNode[] {
+        const result: TopologyOutgoingNode[] = [];
+        try {
+            const deadLetterChannel = route.errorHandler?.deadLetterChannel;
+            const deadLetterUri = deadLetterChannel?.deadLetterUri;
+            if (deadLetterChannel !== undefined && deadLetterUri !== undefined) {
+                const parts = deadLetterUri.split(':');
+                if (parts.length > 1 && INTERNAL_COMPONENTS.includes(parts[0])) {
+                    const id = 'outgoing-' + route.id + '-' + deadLetterChannel?.id;
+                    const title = CamelDisplayUtil.getStepDescription(deadLetterChannel);
+                    const type = 'internal';
+                    const connectorType = 'component';
+                    result.push(new TopologyOutgoingNode(id, type, connectorType, route.id || '', title, filename, deadLetterChannel, deadLetterUri));
+                }
             }
+        } catch (e) {
+            console.error(e);
         }
         return result;
     }
 
     static findTopologyRouteConfigurationOutgoingNodes = (integrations: Integration[]): TopologyOutgoingNode[] => {
-        const result:TopologyOutgoingNode[] = [];
+        const result: TopologyOutgoingNode[] = [];
         integrations.forEach(i => {
-            const filename = i.metadata.name;
-            const rcs = i.spec.flows?.filter(flow => flow.dslName === 'RouteConfigurationDefinition');
-            rcs?.forEach((rc: RouteConfigurationDefinition) => {
-                const children: CamelElement[] = [];
-                children.push(...rc.intercept || []);
-                children.push(...rc.interceptFrom || []);
-                children.push(...rc.interceptSendToEndpoint || []);
-                children.push(...rc.onCompletion || []);
-                children.push(...rc.onException || []);
-                children.forEach(child => {
-                    const elements = TopologyUtils.findOutgoingInStep(child, []);
-                    elements.forEach((e: any) => {
+            try {
+                const filename = i.metadata.name;
+                const rcs = i.spec.flows?.filter(flow => flow.dslName === 'RouteConfigurationDefinition');
+                rcs?.forEach((rc: RouteConfigurationDefinition) => {
+                    const children: CamelElement[] = [];
+                    children.push(...rc.intercept || []);
+                    children.push(...rc.interceptFrom || []);
+                    children.push(...rc.interceptSendToEndpoint || []);
+                    children.push(...rc.onCompletion || []);
+                    children.push(...rc.onException || []);
+                    children.forEach(child => {
+                        const elements = TopologyUtils.findOutgoingInStep(child, []);
+                        elements.forEach((e: any) => {
+                            const id = 'outgoing-' + rc.id + '-' + e.id;
+                            const title = CamelDisplayUtil.getStepDescription(e);
+                            const type = TopologyUtils.isElementInternalComponent(e) ? 'internal' : 'external';
+                            const connectorType = TopologyUtils.getConnectorType(e);
+                            const uniqueUri = TopologyUtils.getUniqueUri(e);
+                            result.push(new TopologyOutgoingNode(id, type, connectorType, rc.id || 'undefined', title, filename, e, uniqueUri));
+                        });
+                    });
+                    if (rc.errorHandler?.deadLetterChannel) {
+                        const e = rc.errorHandler?.deadLetterChannel;
                         const id = 'outgoing-' + rc.id + '-' + e.id;
                         const title = CamelDisplayUtil.getStepDescription(e);
-                        const type = TopologyUtils.isElementInternalComponent(e) ? 'internal' : 'external';
-                        const connectorType = TopologyUtils.getConnectorType(e);
-                        const uniqueUri = TopologyUtils.getUniqueUri(e);
+                        const comp = e?.deadLetterUri?.split(':')?.[0];
+                        const type = INTERNAL_COMPONENTS.includes(comp) ? 'internal' : 'external';
+                        const connectorType = 'component';
+                        const uniqueUri = e?.deadLetterUri;
                         result.push(new TopologyOutgoingNode(id, type, connectorType, rc.id || 'undefined', title, filename, e, uniqueUri));
-                    })
-                })
-                if (rc.errorHandler?.deadLetterChannel) {
-                    const e = rc.errorHandler?.deadLetterChannel
-                    const id = 'outgoing-' + rc.id + '-' + e.id;
-                    const title = CamelDisplayUtil.getStepDescription(e);
-                    const comp = e?.deadLetterUri?.split(':')?.[0];
-                    const type = INTERNAL_COMPONENTS.includes(comp) ? 'internal' : 'external';
-                    const connectorType = 'component';
-                    const uniqueUri = e?.deadLetterUri
-                    result.push(new TopologyOutgoingNode(id, type, connectorType, rc.id || 'undefined', title, filename, e, uniqueUri));
-                }
-            })
-
-        })
+                    }
+                });
+            } catch (e) {
+                console.error(e);
+            }
+        });
         return result;
-    }
+    };
 
     static findOutgoingInStep = (step: CamelElement, result: CamelElement[]): CamelElement[] => {
         if (step !== undefined) {
             const el = (step as any);
-            if (outgoingDefinitions.includes(el.dslName)) {
-                result.push(step);
-            } else {
-                const childElements = CamelDefinitionApiExt.getElementChildrenDefinition(el.dslName);
-                childElements.forEach(child => {
-                    if (child.multiple) {
-                        const sub = (el[child.name] as CamelElement[]);
-                        TopologyUtils.findOutgoingInSteps(sub, result);
-                    } else {
-                        const sub = (el[child.name] as CamelElement);
-                        TopologyUtils.findOutgoingInStep(sub, result);
-                    }
-                })
+            try {
+                if (outgoingDefinitions.includes(el.dslName)) {
+                    result.push(step);
+                } else {
+                    const childElements = CamelDefinitionApiExt.getElementChildrenDefinition(el.dslName);
+                    childElements.forEach(child => {
+                        if (child.multiple) {
+                            const sub = (el[child.name] as CamelElement[]);
+                            TopologyUtils.findOutgoingInSteps(sub, result);
+                        } else {
+                            const sub = (el[child.name] as CamelElement);
+                            TopologyUtils.findOutgoingInStep(sub, result);
+                        }
+                    });
+                }
+            } catch (e) {
+                console.error(e);
             }
         }
         return result;
-    }
+    };
 
     static findOutgoingInSteps = (steps: CamelElement[], result: CamelElement[]): CamelElement[] => {
         if (steps !== undefined && steps.length > 0) {
-            steps.forEach(step => TopologyUtils.findOutgoingInStep(step, result))
+            steps.forEach(step => TopologyUtils.findOutgoingInStep(step, result));
         }
         return result;
-    }
+    };
 
     static getNodeIdByUriAndName(tins: TopologyIncomingNode[], uri: string, name: string): string | undefined {
         if (uri && name) {
-            const node =  tins
+            const node = tins
                 .filter(r => r.from.uri === uri
-                    && (r?.from?.parameters?.name === name || r?.from?.parameters?.address === name)
+                    && (r?.from?.parameters?.name === name || r?.from?.parameters?.address === name),
                 ).at(0);
             if (node) {
                 return node.id;
@@ -326,17 +358,17 @@ export class TopologyUtils {
     }
 
     static getNodeIdByUri(tins: TopologyIncomingNode[], uri: string): string | undefined {
-        const parts = uri.split(":");
+        const parts = uri.split(':');
         if (parts.length > 1) {
-            return TopologyUtils.getNodeIdByUriAndName(tins, parts[0], parts[1])
+            return TopologyUtils.getNodeIdByUriAndName(tins, parts[0], parts[1]);
         }
     }
 
     static getRouteIdByUriAndName(tins: TopologyIncomingNode[], uri: string, name: string): string | undefined {
         if (uri && name) {
-            const node =  tins
+            const node = tins
                 .filter(r => r.from.uri === uri
-                    && (r?.from?.parameters?.name === name || r?.from?.parameters?.address === name)
+                    && (r?.from?.parameters?.name === name || r?.from?.parameters?.address === name),
                 ).at(0);
             if (node) {
                 return 'route-' + node.routeId;
@@ -347,14 +379,14 @@ export class TopologyUtils {
     static getNodeIdByUniqueUri(tins: TopologyIncomingNode[], uniqueUri: string): string [] {
         const result: string[] = [];
         tins.filter(r => r.uniqueUri === uniqueUri)
-            ?.forEach(node => result.push(node.id))
+            ?.forEach(node => result.push(node.id));
         return result;
     }
 
     static getRouteIdByUri(tins: TopologyIncomingNode[], uri: string): string | undefined {
-        const parts = uri.split(":");
+        const parts = uri.split(':');
         if (parts.length > 1) {
-            return TopologyUtils.getRouteIdByUriAndName(tins, parts[0], parts[1])
+            return TopologyUtils.getRouteIdByUriAndName(tins, parts[0], parts[1]);
         }
     }
 }
diff --git a/karavan-core/test/kamelets.yaml b/karavan-core/test/kamelets.yaml
new file mode 100644
index 00000000..bcec556f
--- /dev/null
+++ b/karavan-core/test/kamelets.yaml
@@ -0,0 +1,22474 @@
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: avro-deserialize-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Avro Deserialize Action"
+    description: "Deserialize payload to Avro"
+    type: object
+    properties:
+      schema:
+        title: Schema
+        description: The Avro schema to use during serialization (as single-line, using JSON format)
+        type: string
+        example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
+      validate:
+        title: Validate
+        description: Indicates if the content must be validated against the schema
+        type: boolean
+        default: true
+  dependencies:
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson-avro"
+  template:
+    beans:
+      - name: schemaResolver
+        type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
+        properties:
+          validate: "{{validate}}"
+          schema: "{{schema:}}"
+    from:
+      uri: kamelet:source
+      steps:
+      - unmarshal:
+          avro:
+            library: Jackson
+            unmarshalType: com.fasterxml.jackson.databind.JsonNode
+            schemaResolver: "#bean:{{schemaResolver}}"
+      - removeHeader:
+          name: "Content-Type"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: avro-serialize-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Avro Serialize Action"
+    description: "Serialize payload to Avro"
+    type: object
+    properties:
+      schema:
+        title: Schema
+        description: The Avro schema to use during serialization (as single-line, using JSON format)
+        type: string
+        example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
+      validate:
+        title: Validate
+        description: Indicates if the content must be validated against the schema
+        type: boolean
+        default: true
+  dependencies:
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson-avro"
+  template:
+    beans:
+      - name: schemaResolver
+        type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
+        properties:
+          validate: "{{validate}}"
+          schema: "{{schema:}}"
+    from:
+      uri: kamelet:source
+      steps:
+      - marshal:
+          avro:
+            library: Jackson
+            unmarshalType: com.fasterxml.jackson.databind.JsonNode
+            schemaResolver: "#bean:{{schemaResolver}}"
+      - setHeader:
+          name: "Content-Type"
+          constant: "application/avro"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-bedrock-agent-runtime-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZGF0YS1uYW1lPSJMYXllciAxIiBpZD0iTGF5ZXJfMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQzMC40MiwxOTYuMzJjOC0xMS4zOSwyMS4xNS0zOC4zMywwLTcyLjEzYTUyLjc5LDUyLjc5LDAsMCwwLTE3LjA2LTE3LjMxYy0xLjUzLTgtNy41NC0yNy4yNi0zMS40Mi00My45MUMzNTksNDcsMzI1LjUyLDQ5LjUzLDMxOS40NCw1MC4xNmE2NC4yNyw2NC4yNywwLDAsMC0xNi4wNy0yLjk0Yy0xNy4xNy0uODEtMzAuMzcsMy44OS0zOS43OCwxNC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Bedrock"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS Bedrock Agent Runtime Sink"
+    description: |-
+      Send data for invoking a knowledge base from AWS Bedrock.
+
+      The basic authentication method for the Bedrock service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+
+      If you use the default credentials provider, the Bedrock client loads the credentials through this provider and doesn't use the basic authentication method.
+    required:
+      - modelId
+      - knowledgeBaseId
+      - region
+    type: object
+    properties:
+      modelId:
+        title: Model Id
+        description: The model Id to be used to generate responses.
+        type: string
+        enum: ["anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1", "anthropic.claude-3-sonnet-20240229-v1:0"]
+      knowledgeBaseId:
+        title: Knowledge Base Id
+        description: The Knowledge Base Id to be used to retrieve and generate responses.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["us-east-1", "us-west-1"]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Bedrock client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws-bedrock"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:      
+      - to:
+          uri: "aws-bedrock-agent-runtime:bedrock-knowledge"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            modelId: "{{modelId}}"
+            knowledgeBaseId: "{{knowledgeBaseId}}"
+            operation: retrieveAndGenerate
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-bedrock-text-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZGF0YS1uYW1lPSJMYXllciAxIiBpZD0iTGF5ZXJfMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQzMC40MiwxOTYuMzJjOC0xMS4zOSwyMS4xNS0zOC4zMywwLTcyLjEzYTUyLjc5LDUyLjc5LDAsMCwwLTE3LjA2LTE3LjMxYy0xLjUzLTgtNy41NC0yNy4yNi0zMS40Mi00My45MUMzNTksNDcsMzI1LjUyLDQ5LjUzLDMxOS40NCw1MC4xNmE2NC4yNyw2NC4yNywwLDAsMC0xNi4wNy0yLjk0Yy0xNy4xNy0uODEtMzAuMzcsMy44OS0zOS43OCwxNC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Bedrock"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS Bedrock Text Sink"
+    description: |-
+      Send data for invoking a text model of Amazon Bedrock.
+
+      The basic authentication method for the Bedrock service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+
+      If you use the default credentials provider, the Bedrock client loads the credentials through this provider and doesn't use the basic authentication method.
+    required:
+      - modelId
+      - region
+    type: object
+    properties:
+      modelId:
+        title: Model Id
+        description: The model Id to be used.
+        type: string
+        enum: ["amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "ai21.j2-ultra-v1", "ai21.j2-mid-v1", "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1", "anthropic.claude-3-sonnet-20240229-v1:0"]
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["us-east-1", "us-west-1", "ap-southeast-1", "ap-northeast-1", "eu-central-1"]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Bedrock client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws-bedrock"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - setHeader:
+          name: "CamelAwsBedrockContentType"
+          constant: "application/json"
+      - setHeader:
+          name: "CamelAwsBedrockAcceptContentType"
+          constant: "application/json"       
+      - to:
+          uri: "aws-bedrock:bedrock-text"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            modelId: "{{modelId}}"
+            operation: invokeTextModel
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-cloudtrail-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzQuMzc1IDg1IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48dXNlIHhsaW5rOmhyZWY9IiNBIiB4PSIyLjE4OCIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTkuOTY2IDM1LjQ5M2wtMi4yODguMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Cloudtrail"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS Cloudtrail Source"
+    description: |-
+      Receive data from an AWS Cloudtrail.
+
+      The basic authentication method for the Cloudtrail service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+    required:
+      - region
+    type: object
+    properties:
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Cloudtrail client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      maxResults:
+        title: Max Results
+        description: Maximum number of records that will be fetched in each poll.
+        type: integer
+        default: 1
+      eventSource:
+        title: Event Source
+        description: Specify an event source to select events.
+        type: string
+        example: secretsmanager.amazonaws.com
+  dataTypes:
+    out:
+      default: text
+      headers:
+        CamelAwsCloudTrailEventId:
+          title: Cloudtrail Event Id
+          description: The event ID of the cloud trail event consumed
+          type: string
+        CamelAwsCloudTrailEventName:
+          title: Cloudtrail Event Name
+          description: The event Name of the cloud trail event consumed
+          type: string
+        CamelAwsCloudTrailEventSource:
+          title: Cloudtrail Event Source
+          description: The event Source of the cloud trail event consumed
+          type: string
+        CamelAwsCloudTrailEventUsername:
+          title: Cloudtrail Event Username
+          description: The associated username of the event of the cloud trail event consumed
+          type: string
+      types:
+        text:
+          format: "text-plain"
+          description: Default text representation of the Cloudtrail Event
+          mediaType: text/plain
+        cloudevents:
+          format: "aws-cloudtrail:application-cloudevents"
+          description: |-
+            Data type transformer converts AWS Cloudtrail lookup events response to CloudEvent v1_0 data format. The data type
+            sets Camel specific CloudEvent headers with values extracted from AWS Cloudtrail lookup events response.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.aws.cloudtrail.lookupEvents"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Cloudtrail event source name with prefix "aws.cloudtrail.event.source.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. The Cloudtrail Event Id.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:core"
+    - "camel:aws-cloudtrail"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "aws-cloudtrail:cloudtrail"
+      parameters:
+        secretKey: "{{?secretKey}}"
+        accessKey: "{{?accessKey}}"
+        region: "{{region}}"
+        eventSource: "{{?eventSource}}"
+        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+        uriEndpointOverride: "{{?uriEndpointOverride}}"
+        overrideEndpoint: "{{overrideEndpoint}}"
+        maxResults: "{{maxResults}}"
+      steps:
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-cloudwatch-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIwNyIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTI1NiAxOTkuMzA1bC0xMjcuOTU3LTE4Ljc5N0wwIDE5OS4zMjlsMTI4LjAxIDQ3LjQzOUwyNTYgMTk5LjMwNSIgZmlsbD0iI0I3Q0E5RCIvPjxwYXRoIGQ9Ik0yNS42MjEgMTk3LjExM2wyMS42MyA2Ljc2MSAxLjk3MS0yLjIzOFY1MC4yODRsLTEuOTcxLTIuNTg1LTIxLjYzIDguMjc0djE0MS4xNCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Cloudwatch"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS CloudWatch Metrics Sink"
+    description: |-
+      Send data to Amazon CloudWatch metrics.
+
+      The basic authentication method for the AWS CloudWatch metrics service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the CloudWatch client loads the credentials through this provider and doesn't use the basic authentication method.
+      
+      You can set the following properties in the header:
+
+      `metric-name` / `ce-metricname` for the metric name.
+      `metric-value` / `ce-metricvalue` for the metric value.
+      `metric-unit` / `ce-metricunit` for the metric unit.
+      `metric-timestamp` / `ce-metrictimestamp` for the metric timestamp.
+      `metric-dimension-name` / `ce-metricdimensionname` for the dimension name.
+      `metric-dimension-value` / `ce-metricdimensionvalue` for the dimension value.
+    required:
+      - cwNamespace
+      - region
+    type: object
+    properties:
+      cwNamespace:
+        title: Cloud Watch Namespace
+        description: The CloudWatch metric namespace.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-cw"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[metric-name]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricName
+                simple: "${header[metric-name]}"             
+          - simple: "${header[ce-metricname]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricName
+                simple: "${header[ce-metricname]}"
+      - choice:
+          when:                
+          - simple: "${header[metric-value]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricValue
+                simple: "${header[metric-value]}"              
+          - simple: "${header[ce-metricvalue]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricValue
+                simple: "${header[ce-metricvalue]}"
+      - choice:
+          when:                
+          - simple: "${header[metric-unit]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricUnit
+                simple: "${header[metric-unit]}"              
+          - simple: "${header[ce-metricunit]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricUnit
+                simple: "${header[ce-metricunit]}"
+      - choice:
+          when:                
+          - simple: "${header[metric-timestamp]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricTimestamp
+                simple: "${header[metric-timestamp]}"               
+          - simple: "${header[ce-metrictimestamp]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricTimestamp
+                simple: "${header[ce-metrictimestamp]}"
+      - choice:
+          when:                
+          - simple: "${header[metric-dimension-name]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricDimensionName
+                simple: "${header[metric-dimension-name]}"
+          - simple: "${header[ce-metricdimensionname]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricDimensionName
+                simple: "${header[ce-metricdimensionname]}"
+      - choice:
+          when:                
+          - simple: "${header[metric-dimension-value]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricDimensionValue
+                simple: "${header[metric-dimension-value]}"
+          - simple: "${header[ce-metricdimensionvalue]}"
+            steps:
+            - setHeader:
+                name: CamelAwsCwMetricDimensionValue
+                simple: "${header[ce-metricdimensionvalue]}"
+      - to:
+          uri: "aws2-cw:{{cwNamespace}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-ddb-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS DynamoDB Sink"
+    description: |-
+      Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table.
+
+      The basic authentication method for the AWS DynamoDB service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+
+      If you use the default credentials provider, the DynamoDB client loads the credentials through this provider and doesn't use the basic authentication method.
+
+      This Kamelet expects a JSON-formatted body and it must include the primary key values that define the DynamoDB item. The mapping between the JSON fields and table attribute values is done by key. For example, for  '{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an item in the specified AWS DynamoDB table and sets the values for the 'username' and 'city' attributes. 
+      
+      For PutItem operation the Json body defines all item attributes.
+      For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete.
+      For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes tht get updated on the item.
+      
+      The given Json body can use "operation", "key" and "item" as top level properties that will be mapped to respective attribute value maps.
+      {
+        "operation": "PutItem"
+        "key": {},
+        "item": {}
+      }
+    required:
+      - table
+      - region
+    type: object
+    properties:
+      table:
+        title: Table
+        description: The name of the DynamoDB table.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      operation:
+        title: Operation
+        description: "The operation to perform."
+        type: string
+        enum: ["PutItem", "UpdateItem", "DeleteItem"]
+        default: PutItem
+        example: PutItem
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dataTypes:
+    in:
+      default: json
+      types:
+        json:
+          format: "aws2-ddb:application-json"
+          description: |-
+            Json representation of a DDB operation. The input type supports the operations: PutItem, UpdateItem, DeleteItem
+            
+            For PutItem operation the Json body defines all item attributes.
+            For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete.
+            For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes tht get updated on the item.
+  
+            The given Json body can use "operation", "key" and "item" as top level properties that will be mapped to respective attribute value maps.
+          headers:
+            CamelAwsDdbOperation:
+              title: Operation
+              description: The operation to perform. Overwrites the operation given in the Json body. One of PutItem, UpdateItem, DeleteItem.
+              default: PutItem
+              type: string
+            CamelAwsDdbReturnValues:
+              title: Return Values
+              description: Use this parameter if you want to get the attribute name-value pairs before or after they are modified. Possible values are NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.
+              type: string
+          mediaType: application/json
+          schema:
+            type: object
+            required: [ "key" ]
+            properties:
+              operation:
+                type: string
+                description: The operator to perform. One of PutItem, UpdateItem, DeleteItem
+              key:
+                type: object
+                description: The primary key specifies the selection criteria for the query.
+              item:
+                type: object
+                description: Attribute value map specifies all attributes to change with the given operation.
+  dependencies:
+  - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0
+  - "camel:core"
+  - "camel:jackson"
+  - "camel:aws2-ddb"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - setProperty:
+          name: operation
+          constant: "{{operation}}"
+      - transform:
+          toType: "aws2-ddb:application-json"
+      - to:
+          uri: "aws2-ddb:{{table}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            operation: "{{operation}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-ddb-streams-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS DynamoDB Streams Source"
+    description: |-
+      Receive events from Amazon DynamoDB Streams.
+
+      The basic authentication method for the AWS DynamoDB Streams service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+
+      If you use the default credentials provider, the DynamoDB Streams client loads the credentials through this provider and doesn't use the basic authentication method.
+    required:
+      - table
+      - region
+    type: object
+    properties:
+      table:
+        title: Table
+        description: The name of the DynamoDB table.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      streamIteratorType:
+        title: Stream Iterator Type
+        description: Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time.
+        type: string
+        default: FROM_LATEST
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll from the database.
+        type: integer
+        default: 500
+  dataTypes:
+    out:
+      default: json
+      headers:
+        CamelAwsDdbStreamEventSource:
+          title: The DDB Stream Event Source
+          description: The Amazon Web Services service from which the stream record originated. For DynamoDB Streams, this is aws:dynamodb.
+          type: string
+        CamelAwsDdbStreamEventId:
+          title: The DDB Stream Event Id
+          description: A globally unique identifier for the event that was recorded in this stream record.
+          type: string
+      types:
+        json:
+          format: "application-json"
+          description: Default Json representation of a DDB Stream Event.
+          mediaType: application/json
+        cloudevents:
+          format: "aws2-ddbstream:application-cloudevents"
+          description: |-
+            Data type transformer converts AWS Dynamo DB Streams get records response to CloudEvent v1_0 data format. The data
+            type sets Camel specific CloudEvent headers with values extracted from AWS Dynamo DB Streams get records.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.aws.ddbstream.getRecords"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the DDB Stream Event source receipt handle with prefix "aws.ddbstream.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. The DDB Stream Event Id.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+  - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0
+  - "camel:gson"
+  - "camel:aws2-ddb"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "aws2-ddbstream:{{table}}"
+      parameters:
+        secretKey: "{{?secretKey}}"
+        accessKey: "{{?accessKey}}"
+        region: "{{region}}"
+        streamIteratorType: "{{streamIteratorType}}"
+        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+        uriEndpointOverride: "{{?uriEndpointOverride}}"
+        overrideEndpoint: "{{overrideEndpoint}}"
+        delay: "{{delay}}"
+      steps:
+      - transform:
+          toType: "aws2-ddb:application-x-struct"
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-ec2-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTQyLjc1NCAyNDQuNDk1bC0yOS45MTggNi44MjZWNTcuNTY1bDI5LjkxOCA2LjgzOXYxODAuMDkxIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTgwLjA4MiAyNTUuOTMxbC0zNy4zMjggMTAuNjA4VjQyLjYxMmwzNy4zMjggMTAuNTk1djIwMi43MjRNMTI3Ljk2NiAyNjcuNjgxbC00Ny44ODQgMTcuNTI0VjIzLjk0Nmw0Ny44ODQgMTcuNT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS EC2"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS EC2 Sink
+    description: |-
+      Check the status of EC2 instances
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS EC2 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the EC2 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+
+      The Kamelet expects the following headers to be set:
+
+      - `instanceIds` / `ce-instanceids`: as a comma separated list of EC2 instance ids.
+    required:
+      - region
+    type: object
+    properties:
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-ec2"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[instanceIds]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEC2InstancesIds
+                simple: "${header[instanceIds]}"
+          - simple: "${header[ce-instanceids]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEC2InstancesIds
+                simple: "${header[ce-instanceids]}"
+      - to:
+          uri: "aws2-ec2:ec2-route"
+          parameters:
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            operation: "describeInstancesStatus"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-eventbridge-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIHN0eWxlPSItbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJJY29uaWZ5SWQtMTgyM2Y2NTU1NjktYWYxZGQ1LT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Eventbridge"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS Eventbridge Sink"
+    description: |-
+      Send events to an Amazon Eventbridge Eventbus.
+
+      The basic authentication method for the Eventbridge service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the Eventbridge client loads the credentials through this provider and doesn't use the basic authentication method.
+
+      In the headers, you need to set the `resources-arn` / `ce-resources-arn` property to specify the ARN of resources related to the event.
+
+      In the headers, you need to set the `detail-type` / `ce-detail-type` property to specify the detail type related to the event.
+
+      In the headers, you need to set the `event-source` / `ce-event-source` property to specify the event source related to the event.
+
+      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
+    required:
+      - eventbusNameOrArn
+      - region
+    type: object
+    properties:
+      eventbusNameOrArn:
+        title: Eventbus Name
+        description: The Eventbridge Eventbus name or Amazon Resource Name (ARN).
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Eventbridge client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-eventbridge"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[resources-arn]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEventbridgeResourcesArn
+                simple: "${header[resources-arn]}"
+          - simple: "${header[ce-resources-arn]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEventbridgeResourcesArn
+                simple: "${header[ce-resources-arn]}"
+      - choice:
+          when:
+          - simple: "${header[detail-type]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEventbridgeDetailType
+                simple: "${header[detail-type]}"
+          - simple: "${header[ce-detail-type]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEventbridgeDetailType
+                simple: "${header[ce-detail-type]}"
+      - choice:
+          when:
+          - simple: "${header[event-source]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEventbridgeSource
+                simple: "${header[event-source]}"
+          - simple: "${header[ce-event-source]}"
+            steps:
+            - setHeader:
+                name: CamelAwsEventbridgeSource
+                simple: "${header[ce-event-source]}"            
+      - to:
+          uri: "aws2-eventbridge:{{eventbusNameOrArn}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+            operation: "putEvent"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-kinesis-firehose-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODUgODUiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjIuNSIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTEzLjc2NiAzLjEyaDUyLjQ2OGMzLjY1MSAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Kinesis Firehose"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS Kinesis Firehose Sink
+    description: |-
+      Send message to an AWS Kinesis Firehose Stream
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS Kinesis Firehose Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the Kinesis Firehose client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+    required:
+      - streamName
+      - region
+    type: object
+    properties:
+      streamName:
+        title: Stream Name
+        description: The name of the stream we want to send to data to
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the Kinesis Firehose client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:aws2-kinesis"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-kinesis-firehose:{{streamName}}"
+          parameters:
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-kinesis-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Kinesis"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: "AWS Kinesis Sink"
+    description: |-
+      Send data to AWS Kinesis.
+
+      The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method.
+      
+      In the header, you can optionally set the `file` / `ce-partition` property to set the Kinesis partition key.
+
+      If you do not set the property in the header, the Kamelet uses the exchange ID for the partition key.
+
+      You can also set the `sequence-number` / `ce-sequencenumber` property in the header to specify the Sequence number.
+
+    required:
+      - stream
+      - region
+    type: object
+    properties:
+      stream:
+        title: Stream Name
+        description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  types:
+    in:
+      mediaType: application/octet-stream
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-kinesis"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[partition]}"
+            steps:
+            - setHeader:
+                name: CamelAwsKinesisPartitionKey
+                simple: "${header[partition]}"
+          - simple: "${header[ce-partition]}"
+            steps:
+            - setHeader:
+                name: CamelAwsKinesisPartitionKey
+                simple: "${header[ce-partition]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelAwsKinesisPartitionKey
+                simple: "${exchangeId}"
+      - choice:
+          when:
+          - simple: "${header[sequence-number]}"
+            steps:
+            - setHeader:
+                name: CamelAwsKinesisSequenceNumber
+                simple: "${header[sequence-number]}"
+          - simple: "${header[ce-sequencenumber]}"
+            steps:
+            - setHeader:
+                name: CamelAwsKinesisSequenceNumber
+                simple: "${header[ce-sequencenumber]}"
+      - to:
+          uri: "aws2-kinesis:{{stream}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-kinesis-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Kinesis"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS Kinesis Source"
+    description: |-
+      Receive data from AWS Kinesis.
+
+      The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method.
+
+      Two headers will be duplicated with different names for clarity at sink level, CamelAwsKinesisPartitionKey will be duplicated into aws.kinesis.partition.key and CamelAwsKinesisSequenceNumber will be duplicated in aws.kinesis.sequence.number
+    required:
+      - stream
+      - region
+    type: object
+    properties:
+      stream:
+        title: Stream Name
+        description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected stream.
+        type: integer
+        default: 500
+      asyncClient:
+        title: Async Client
+        description: If we want to a KinesisAsyncClient instance set it to true.
+        type: boolean
+        default: false
+      useKclConsumers:
+        title: KCL Consumer
+        description: If we want to a KCL Consumer set it to true
+        type: boolean
+        default: false
+  types:
+    out:
+      mediaType: application/octet-stream
+  dependencies:
+    - "camel:aws2-kinesis"
+    - "camel:kamelet"
+    - "camel:core"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+  template:
+    from:
+      uri: aws2-kinesis:{{stream}}
+      parameters:
+        secretKey: "{{?secretKey}}"
+        accessKey: "{{?accessKey}}"
+        region: "{{region}}"
+        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+        uriEndpointOverride: "{{?uriEndpointOverride}}"
+        overrideEndpoint: "{{overrideEndpoint}}"
+        delay: "{{delay}}"
+        useKclConsumers: "{{useKclConsumers}}"
+        asyncClient: "{{asyncClient}}"
+      steps:
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-lambda-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMjQ1LjI2MmwxNi4zMjIgOC4xNjFMMTkgMjQ4LjY2OFY1OS4zMzNsLTIuNjc4LTMuNDk0TDAgNjR2MTgxLjI2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik00Ny42NzggNjMuNTdsLTMxLjM1Ni03LjczMXYxOTcuNTg0bDMxLjM1Ni03LjMwMlY2My41NyIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0xNDMuODkzIDc4LjYwNGwyMi [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Lambda"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS Lambda Sink
+    description: |-
+      Send a payload to an AWS Lambda function.
+
+      The basic authentication method for the Lambda service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the Lambda client loads the credentials through this provider and doesn't use the basic authentication method.
+    required:
+      - function
+      - region
+    type: object
+    properties:
+      function:
+        title: Function Name
+        description: The Lambda Function name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:aws2-lambda"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-lambda:{{function}}"
+          parameters:
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-redshift-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5Lj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Redshift"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS Redshift Sink"
+    description: |-
+      Send data to an AWS Redshift Database.
+
+      This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query:
+
+      'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+
+      Here is example input for the example query:
+
+      '{ "username":"oscerd", "city":"Rome"}'
+    required:
+      - serverName
+      - username
+      - password
+      - query
+      - databaseName
+    type: object
+    properties:
+      serverName:
+        title: Server Name
+        description: The server name for the data source.
+        type: string
+        example: localhost
+      serverPort:
+        title: Server Port
+        description: The server port for the AWS RedShi data source.
+        type: string
+        default: 5439
+      username:
+        title: Username
+        description: The username to access a secured AWS Redshift Database.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access a secured AWS Redshift Database.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      query:
+        title: Query
+        description: The query to execute against the AWS Redshift Database.
+        type: string
+        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+      databaseName:
+        title: Database Name
+        description: The name of the AWS RedShift Database.
+        type: string
+  types:
+    in:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:kamelet"
+  - "camel:sql"
+  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.29"
+  - "mvn:org.apache.commons:commons-dbcp2:2.12.0"
+  template:
+    beans:
+      - name: dsBean
+        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+        properties:
+          username: '{{username}}'
+          password: '{{password}}'
+          url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
+          driverClassName: 'com.amazon.redshift.jdbc.Driver'
+    from:
+      uri: "kamelet:source"
+      steps:
+      - unmarshal:
+          json: 
+            library: Jackson
+      - to: 
+          uri: "sql:{{query}}"
+          parameters:
+            dataSource: "#bean:{{dsBean}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-redshift-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5Lj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Redshift"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS Redshift Source"
+    description: |-
+      Query data from an AWS RedShift Database.
+    required:
+      - serverName
+      - username
+      - password
+      - query
+      - databaseName
+    type: object
+    properties:
+      serverName:
+        title: Server Name
+        description: The server name for the data source.
+        type: string
+        example: localhost
+      serverPort:
+        title: Server Port
+        description: The server port for the data source.
+        type: string
+        default: 5439
+      username:
+        title: Username
+        description: The username to access a secured AWS RedShift Database.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access a secured AWS RedShift Database.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      query:
+        title: Query
+        description: The query to execute against the AWS RedShift Database.
+        type: string
+        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+      databaseName:
+        title: Database Name
+        description: The name of the AWS RedShift Database.
+        type: string
+      consumedQuery:
+        title: Consumed Query
+        description: A query to run on a tuple consumed.
+        type: string
+        example: 'DELETE FROM accounts where user_id = :#user_id'
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll from the AWS RedShift database.
+        type: integer
+        default: 500
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:kamelet"
+  - "camel:sql"
+  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.29"
+  - "mvn:org.apache.commons:commons-dbcp2:2.12.0"
+  template:
+    beans:
+      - name: dsBean
+        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+        properties:
+          username: '{{username}}'
+          password: '{{password}}'
+          url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
+          driverClassName: 'com.amazon.redshift.jdbc.Driver'
+    from:
+      uri: "sql:{{query}}"
+      parameters:
+        dataSource: "#bean:{{dsBean}}"
+        onConsume: "{{?consumedQuery}}"
+        delay: "{{delay}}"
+      steps:
+      - marshal:
+          json: 
+            library: Jackson
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-s3-event-based-source
+  annotations:
+    camel.apache.org/kamelet.support.level: Preview
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: >-
+      data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFRE [...]
+    camel.apache.org/provider: Apache Software Foundation
+    camel.apache.org/kamelet.group: AWS S3 Event-Based
+    camel.apache.org/kamelet.namespace: "AWS"
+    camel.apache.org/keda.type: aws-s3-event-based-queue
+  labels:
+    camel.apache.org/kamelet.type: source
+spec:
+  definition:
+    title: AWS S3 Event Based Source
+    description: >-
+      Receive data from AWS SQS subscribed to Eventbridge Bus reporting events related to an S3 bucket or multiple buckets.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS
+      SQS Service.
+
+      To use this Kamelet you'll need to set up Eventbridge on your bucket and subscribe Eventbridge bus to an SQS Queue.
+      
+      For doing this you'll need to enable Evenbridge notification on your bucket and creating a rule on Eventbridge console related to all the events on S3 bucket and pointing to the SQS Queue specified as parameter in this Kamelet.
+    required:
+      - accessKey
+      - secretKey
+      - queueNameOrArn
+      - region
+    type: object
+    properties:
+      queueNameOrArn:
+        title: Queue Name
+        description: The SQS Queue Name or ARN
+        type: string
+      deleteAfterRead:
+        title: Auto-delete Messages
+        description: Delete messages after consuming them
+        type: boolean
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+          - 'urn:camel:group:credentials'
+          - 'urn:keda:authentication:awsAccessKeyID'
+          - 'urn:keda:required'
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+          - 'urn:camel:group:credentials'
+          - 'urn:keda:authentication:awsSecretAccessKey'
+          - 'urn:keda:required'
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        x-descriptors:
+          - 'urn:keda:metadata:awsRegion'
+          - 'urn:keda:required'
+        enum:
+          - ap-south-1
+          - eu-south-1
+          - us-gov-east-1
+          - me-central-1
+          - ca-central-1
+          - eu-central-1
+          - us-iso-west-1
+          - us-west-1
+          - us-west-2
+          - af-south-1
+          - eu-north-1
+          - eu-west-3
+          - eu-west-2
+          - eu-west-1
+          - ap-northeast-3
+          - ap-northeast-2
+          - ap-northeast-1
+          - me-south-1
+          - sa-east-1
+          - ap-east-1
+          - cn-north-1
+          - us-gov-west-1
+          - ap-southeast-1
+          - ap-southeast-2
+          - us-iso-east-1
+          - ap-southeast-3
+          - us-east-1
+          - us-east-2
+          - cn-northwest-1
+          - us-isob-east-1
+          - aws-global
+          - aws-cn-global
+          - aws-us-gov-global
+          - aws-iso-global
+          - aws-iso-b-global
+      autoCreateQueue:
+        title: Autocreate Queue
+        description: Setting the autocreation of the SQS queue.
+        type: boolean
+        default: false
+      amazonAWSHost:
+        title: AWS Host
+        description: The hostname of the Amazon AWS cloud.
+        type: string
+        default: amazonaws.com
+      protocol:
+        title: Protocol
+        description: The underlying protocol used to communicate with SQS
+        type: string
+        example: http or https
+        default: https
+      queueURL:
+        title: Queue URL
+        description: The full SQS Queue URL (required if using KEDA)
+        type: string
+        x-descriptors:
+          - 'urn:keda:metadata:queueURL'
+          - 'urn:keda:required'
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: >-
+          The overriding endpoint URI. To use this option, you must also select
+          the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: >-
+          Select this option to override the endpoint URI. To use this option,
+          you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected stream
+        type: integer
+        default: 500
+      greedy:
+        title: Greedy Scheduler
+        description: >-
+          If greedy is enabled, then the polling will happen immediately again,
+          if the previous run polled 1 or more messages.
+        type: boolean
+        default: false
+      getObject:
+        title: Greedy Object in Bucket
+        description: >-
+          If getObject is enabled, then the file created in the bucket will be
+          get and returned as body, if not only the event will returned as body.
+        type: boolean
+        default: false
+  dependencies:
+    - 'camel:core'
+    - 'camel:aws2-sqs'
+    - 'camel:aws2-s3'
+    - 'camel:jsonpath'
+    - 'camel:kamelet'
+    - 'camel:jackson'
+  template:
+    from:
+      uri: 'aws2-sqs:{{queueNameOrArn}}'
+      parameters:
+        autoCreateQueue: '{{autoCreateQueue}}'
+        secretKey: '{{?secretKey}}'
+        accessKey: '{{?accessKey}}'
+        region: '{{region}}'
+        deleteAfterRead: '{{deleteAfterRead}}'
+        amazonAWSHost: '{{?amazonAWSHost}}'
+        protocol: '{{?protocol}}'
+        uriEndpointOverride: '{{?uriEndpointOverride}}'
+        overrideEndpoint: '{{overrideEndpoint}}'
+        delay: '{{delay}}'
+        greedy: '{{greedy}}'
+      steps:
+        - choice:
+            precondition: true
+            when:
+              - simple: '${properties:getObject:true}'
+                steps:
+                  - unmarshal:
+                      json:
+                        library: Jackson
+                        unmarshalType: com.fasterxml.jackson.databind.JsonNode
+                  - setProperty:
+                      name: s3-event-name
+                      jsonpath: $.detail.reason
+                  - choice:
+                      when:
+                        - simple: '${exchangeProperty.s3-event-name} == "PutObject"'
+                          steps:
+                            - setProperty:
+                                name: aws-s3-name
+                                jsonpath: $.detail.object.key
+                            - setProperty:
+                                name: aws-s3-bucket
+                                jsonpath: $.detail.bucket.name
+                            - toD: >-
+                                aws2-s3:${exchangeProperty.aws-s3-bucket}?accessKey={{accessKey}}&secretKey={{secretKey}}&region={{region}}&operation=getObject&keyName=${exchangeProperty.aws-s3-name}
+        - to: 'kamelet:sink'
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-s3-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS S3"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS S3 Sink"
+    description: |-
+      Upload data to an Amazon S3 Bucket.
+
+      The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+
+      If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.
+
+      In the header, you can optionally set the `file` / `ce-partition` property to specify the name of the file to upload.
+
+      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
+    required:
+      - bucketNameOrArn
+      - region
+    type: object
+    properties:
+      bucketNameOrArn:
+        title: Bucket Name
+        description: The S3 Bucket name or Amazon Resource Name (ARN).
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateBucket:
+        title: Autocreate Bucket
+        description: Specifies to automatically create the S3 bucket.
+        type: boolean
+        default: false
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      forcePathStyle:
+        title: Force Path Style
+        description: Forces path style when accessing AWS S3 buckets.
+        type: boolean
+        default: false
+      keyName:
+        title: Key Name
+        description: The key name for saving an element in the bucket.
+        type: string
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-s3"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          precondition: true
+          when:
+            - simple: '${propertiesExist:!keyName}'
+              steps:
+                - choice:
+                    when:
+                      - simple: "${header[file]}"
+                        steps:
+                          - setHeader:
+                              name: CamelAwsS3Key
+                              simple: "${header[file]}"
+                      - simple: "${header[ce-file]}"
+                        steps:
+                          - setHeader:
+                              name: CamelAwsS3Key
+                              simple: "${header[ce-file]}"
+                    otherwise:
+                      steps:
+                        - setHeader:
+                            name: CamelAwsS3Key
+                            simple: "${exchangeId}"
+      - to:
+          uri: "aws2-s3:{{bucketNameOrArn}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            autoCreateBucket: "{{autoCreateBucket}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+            forcePathStyle: "{{forcePathStyle}}"
+            keyName: "{{?keyName}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-s3-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS S3"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS S3 Source"
+    description: |-
+      Receive data from an Amazon S3 Bucket.
+
+      The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method.
+
+      Two headers will be duplicated with different names for clarity at sink level, CamelAwsS3Key will be duplicated into aws.s3.key and CamelAwsS3BucketName will be duplicated in aws.s3.bucket.name
+    required:
+      - bucketNameOrArn
+      - region
+    type: object
+    properties:
+      bucketNameOrArn:
+        title: Bucket Name
+        description: The S3 Bucket name or Amazon Resource Name (ARN).
+        type: string
+      deleteAfterRead:
+        title: Auto-delete Objects
+        description: Specifies to delete objects after consuming them.
+        type: boolean
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateBucket:
+        title: Autocreate Bucket
+        description: Specifies to automatically create the S3 bucket.
+        type: boolean
+        default: false
+      prefix:
+        title: Prefix
+        description: The AWS S3 bucket prefix to consider while searching.
+        type: string
+        example: 'folder/'
+      ignoreBody:
+        title: Ignore Body
+        description: If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body.
+        type: boolean
+        default: false
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      forcePathStyle:
+        title: Force Path Style
+        description: Forces path style when accessing AWS S3 buckets.
+        type: boolean
+        default: false
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected bucket.
+        type: integer
+        default: 500
+      maxMessagesPerPoll:
+        title: Max Messages Per Poll
+        description: Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited.
+        type: integer
+        default: 10
+  dataTypes:
+    out:
+      default: binary
+      headers:
+        CamelAwsS3BucketName:
+          title: S3 Bucket Name
+          description: The bucket name which has been used to retrieve objects
+          type: string
+        CamelAwsS3Key:
+          title: S3 Key
+          description: The key under which the retrieved object is stored
+          type: string
+        CamelAwsS3ContentType:
+          title: Content Type
+          description: The content type of the retrieved object.
+          default: application/octet-stream
+          type: string
+        CamelAwsS3ETag:
+          title: ETag Value
+          description: |-
+            The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. 
+            This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3.
+          type: string
+      types:
+        binary:
+          format: "application-octet-stream"
+          description: Default binary representation of the S3 object retrieved from the bucket.
+          mediaType: application/octet-stream
+        cloudevents:
+          format: "aws2-s3:application-cloudevents"
+          description: |-
+            Output data type represents AWS S3 get object response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with
+            respective data from the S3 bucket and its derived object.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.aws.s3.getObject"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the S3 bucket name with prefix "aws.s3.bucket.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. Usually the S3 key.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-s3"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "aws2-s3:{{bucketNameOrArn}}"
+      parameters:
+        autoCreateBucket: "{{autoCreateBucket}}"
+        secretKey: "{{?secretKey}}"
+        accessKey: "{{?accessKey}}"
+        region: "{{region}}"
+        ignoreBody: "{{ignoreBody}}"
+        deleteAfterRead: "{{deleteAfterRead}}"
+        prefix: "{{?prefix}}"
+        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+        uriEndpointOverride: "{{?uriEndpointOverride}}"
+        overrideEndpoint: "{{overrideEndpoint}}"
+        forcePathStyle: "{{forcePathStyle}}"
+        delay: "{{delay}}"
+        maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
+      steps:
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-s3-streaming-upload-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS S3"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS S3 Streaming upload Sink"
+    description: |-
+      Upload data to AWS S3 in streaming upload mode.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS S3 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the S3 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+    required:
+      - bucketNameOrArn
+      - region
+      - keyName
+    type: object
+    properties:
+      bucketNameOrArn:
+        title: Bucket Name
+        description: The S3 Bucket name or Amazon Resource Name (ARN)..
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateBucket:
+        title: Autocreate Bucket
+        description: Setting the autocreation of the S3 bucket bucketName.
+        type: boolean
+        default: false
+      restartingPolicy:
+        title: Restarting Policy
+        description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of override, lastPart
+        type: string
+        default: "lastPart"
+      batchMessageNumber:
+        title: Batch Message Number
+        description: The number of messages composing a batch in streaming upload mode
+        type: integer
+        default: 10
+      batchSize:
+        title: Batch Size
+        description: The batch size (in bytes) in streaming upload mode
+        type: integer
+        default: 1000000
+      streamingUploadTimeout:
+        title: Streaming Upload Timeout
+        description: While streaming upload mode is true, this option set the timeout to complete upload
+        type: integer
+      namingStrategy:
+        title: Naming Strategy
+        description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random
+        type: string
+        default: "progressive"
+      keyName:
+        title: Key Name
+        description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files.
+        type: string
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      forcePathStyle:
+        title: Force Path Style
+        description: Forces path style when accessing AWS S3 buckets.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:aws2-s3"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "aws2-s3:{{bucketNameOrArn}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            autoCreateBucket: "{{autoCreateBucket}}"
+            streamingUploadMode: "true"
+            restartingPolicy: "{{restartingPolicy}}"
+            batchMessageNumber: "{{batchMessageNumber}}"
+            batchSize: "{{batchSize}}"
+            namingStrategy: "{{namingStrategy}}"
+            keyName: "{{keyName}}"
+            streamingUploadTimeout: "{{?streamingUploadTimeout}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+            forcePathStyle: "{{forcePathStyle}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-secrets-manager-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzUgNzUiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6dXJsKCNSZWRHcmFkaWVudCk7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PGxpbmVhckdyYWRpZW50IGlkPSJSZWRHcmFkaWVudCIgeDE9Ii0yMDQyLjU0IiB5MT0iMTk4NS40NyIgeDI9Ii0xOTM2LjQ3IiB5Mj0iMjA5MS41NCIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwMSAtMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Secrets Manager"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS Secrets Manager Sink"
+    description: |-
+      Create a secret in AWS Secrets Manager.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS Secrets Manager Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the Secrets Manager client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+
+      The Kamelet expects the following headers to be set:
+
+      - `secret-name` / `ce-secret-name`: as the secret name to create.
+
+      If the header won't be set the exchange ID will be used as secret name.
+    required:
+      - region
+    type: object
+    properties:
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws-secrets-manager"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[secret-name]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSecretsManagerSecretName
+                simple: "${header[secret-name]}"
+          - simple: "${header[ce-secret-name]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSecretsManagerSecretName
+                simple: "${header[ce-secret-name]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelAwsSecretsManagerSecretName
+                simple: "${exchangeId}"
+      - to:
+          uri: "aws-secrets-manager:kamelet"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            operation: "createSecret"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-ses-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI5OXB4IiB2aWV3Qm94PSIwIDAgMjU2IDI5OSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+Cgk8Zz4KCQk8cGF0aCBkPSJNNjAuNTU2LDQ3LjYwMiBMMCwxNDQuMDEgTDYwLjU1NiwyNDAuNDM0IEw2MS42MTIsMjM5LjY4MSBMNjAuODM3LDQ3LjggTD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SES"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS SES Sink"
+    description: |-
+      Send email through the Amazon Simple Email Service (SES).
+
+      The basic authentication method for the SES service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the SES client loads the credentials through this provider and doesn't use the basic authentication method.
+      
+      In the header, you can optionally set the following properties:
+      
+      - `subject` / `ce-subject` property to specify the email subject. If you do not set this property in the header, the Kamelet uses the exchange ID for the email subject.
+
+      - `to` / `ce-to` to provide a comma-separated list of email addresses.
+
+      - `reply-to-addresses` / `ce-reply-to-addresses`to provider a comma-separated list of reply-to email addresses.
+
+    required:
+      - from
+      - region
+    type: object
+    properties:
+      from:
+        title: From 
+        description: From address
+        type: string
+        example: user@example.com
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the SES client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-ses"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[subject]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSesSubject
+                simple: "${header[subject]}"
+          - simple: "${header[ce-subject]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSesSubject
+                simple: "${header[ce-subject]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelAwsSesSubject
+                simple: "${exchangeId}"
+      - choice:
+          when:
+          - simple: "${header[to]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSesTo
+                simple: "${header[to]}"
+          - simple: "${header[ce-to]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSesTo
+                simple: "${header[ce-to]}"
+      - choice:
+          when:
+          - simple: "${header[reply-to-addresses]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSesReplyToAddresses
+                simple: "${header[reply-to-addresses]}"
+          - simple: "${header[ce-reply-to-addresses]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSesReplyToAddresses
+                simple: "${header[ce-reply-to-addresses]}"
+      - to:
+          uri: "aws2-ses://{{from}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sns-fifo-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SNS"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SNS FIFO Sink
+    description: |- 
+      Send message to an AWS SNS FIFO Topic.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS SNS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the SNS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+
+      The Kamelet expects the following headers to be set:
+
+      - `subject` / `ce-subject`: the subject of the message
+    required:
+      - topicNameOrArn
+      - region
+    type: object
+    properties:
+      topicNameOrArn:
+        title: Topic Name
+        description: The SNS Topic name or ARN
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      contentBasedDeduplication:
+        title: Content-Based Deduplication
+        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
+        type: boolean
+        default: false
+      autoCreateTopic:
+        title: Autocreate Topic
+        description: Setting the autocreation of the SNS topic. 
+        type: boolean
+        default: false
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+  - "camel:aws2-sns"
+  - "camel:core"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[subject]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSnsSubject
+                simple: "${header[subject]}"
+          - simple: "${header[ce-subject]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSnsSubject
+                simple: "${header[ce-subject]}"
+      - setProperty:
+          name: contentBasedDeduplication
+          constant: "{{contentBasedDeduplication}}"
+      - choice:
+          when:
+          - simple: "${header[group]}"
+            steps:
+            - setProperty:
+                name: CamelAwsSnsMessageGroupId
+                simple: "${header[group]}"
+          - simple: "${header[ce-group]}"
+            steps:
+            - setProperty:
+                name: CamelAwsSnsMessageGroupId
+                simple: "${header[ce-group]}"
+          otherwise:
+            steps:
+            - setProperty:
+                name: CamelAwsSnsMessageGroupId
+                simple: "${exchangeId}"
+      - choice:
+          when:
+          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+            steps:
+            - to:
+                uri: "aws2-sns:{{topicNameOrArn}}"
+                parameters:
+                  autoCreateTopic: "{{autoCreateTopic}}"
+                  accessKey: "{{?accessKey}}"
+                  secretKey: "{{?secretKey}}"
+                  region: "{{region}}"
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useContentBasedDeduplication"
+                  uriEndpointOverride: "{{?uriEndpointOverride}}"
+                  overrideEndpoint: "{{overrideEndpoint}}"
+          otherwise:
+            steps:
+            - to:
+                uri: "aws2-sns:{{topicNameOrArn}}"
+                parameters:
+                  autoCreateTopic: "{{autoCreateTopic}}"
+                  accessKey: "{{?accessKey}}"
+                  secretKey: "{{?secretKey}}"
+                  region: "{{region}}"
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useExchangeId"
+                  uriEndpointOverride: "{{?uriEndpointOverride}}"
+                  overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sns-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SNS"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SNS Sink
+    description: |-
+      Send message to an Amazon Simple Notification Service (SNS) topic.
+
+      The basic authentication method for the SNS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the SNS client loads the credentials through this provider and doesn't use the basic authentication method.
+
+      In the header, you can optionally set the `subject` / `ce-subject` property to specify the subject of the message.
+    required:
+      - topicNameOrArn
+      - region
+    type: object
+    properties:
+      topicNameOrArn:
+        title: Topic Name
+        description: The SNS topic name name or Amazon Resource Name (ARN).
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateTopic:
+        title: Autocreate Topic
+        description: Setting the autocreation of the SNS topic. 
+        type: boolean
+        default: false
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-sns"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[subject]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSnsSubject
+                simple: "${header[subject]}"
+          - simple: "${header[ce-subject]}"
+            steps:
+            - setHeader:
+                name: CamelAwsSnsSubject
+                simple: "${header[ce-subject]}"
+      - to:
+          uri: "aws2-sns:{{topicNameOrArn}}"
+          parameters:
+            autoCreateTopic: "{{autoCreateTopic}}"
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sqs-batch-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SQS"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SQS Batch Sink
+    description: |-
+      Send Batch message to an AWS SQS Queue.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+    required:
+      - queueNameOrArn
+      - region
+      - batchSeparator
+    type: object
+    properties:
+      queueNameOrArn:
+        title: Queue Name
+        description: The SQS Queue name or ARN
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateQueue:
+        title: Autocreate Queue
+        description: Setting the autocreation of the SQS queue. 
+        type: boolean
+        default: false
+      batchSeparator:
+        title: Batch Separator
+        description: The batch separator string
+        type: string
+        example: ","
+      amazonAWSHost:
+        title: AWS Host
+        description: The hostname of the Amazon AWS cloud. 
+        type: string
+        default: amazonaws.com
+      protocol:
+        title: Protocol
+        description: The underlying protocol used to communicate with SQS
+        type: string
+        example: http or https
+        default: https
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false        
+  dependencies:
+    - "camel:aws2-sqs"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-sqs:{{queueNameOrArn}}"
+          parameters:
+            autoCreateQueue: "{{autoCreateQueue}}"
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            batchSeparator: "{{batchSeparator}}"
+            operation: "sendBatchMessage"
+            amazonAWSHost: "{{?amazonAWSHost}}"
+            protocol: "{{?protocol}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"            
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sqs-fifo-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SQS"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SQS FIFO Sink
+    description: |-
+      Send message to an AWS SQS FIFO Queue.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+    required:
+      - queueNameOrArn
+      - region
+    type: object
+    properties:
+      queueNameOrArn:
+        title: Queue Name
+        description: The SQS Queue name or ARN
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      contentBasedDeduplication:
+        title: Content-Based Deduplication
+        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
+        type: boolean
+        default: false
+      autoCreateQueue:
+        title: Autocreate Queue
+        description: Setting the autocreation of the SQS queue. 
+        type: boolean
+        default: false
+      amazonAWSHost:
+        title: AWS Host
+        description: The hostname of the Amazon AWS cloud. 
+        type: string
+        default: amazonaws.com
+      protocol:
+        title: Protocol
+        description: The underlying protocol used to communicate with SQS
+        type: string
+        example: http or https
+        default: https
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false   
+  dependencies:
+  - "camel:aws2-sqs"
+  - "camel:core"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - setProperty:
+          name: contentBasedDeduplication
+          constant: "{{contentBasedDeduplication}}"
+      - choice:
+          when:
+          - simple: "${header[group]}"
+            steps:
+            - setProperty:
+                name: CamelAwsMessageGroupId
+                simple: "${header[group]}"
+          - simple: "${header[ce-group]}"
+            steps:
+            - setProperty:
+                name: CamelAwsMessageGroupId
+                simple: "${header[ce-group]}"
+          otherwise:
+            steps:
+            - setProperty:
+                name: CamelAwsMessageGroupId
+                simple: "${exchangeId}"
+      - choice:
+          when:
+          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+            steps:
+            - to:
+                uri: "aws2-sqs:{{queueNameOrArn}}"
+                parameters:
+                  autoCreateQueue: "{{autoCreateQueue}}"
+                  accessKey: "{{?accessKey}}"
+                  secretKey: "{{?secretKey}}"
+                  region: "{{region}}"
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useContentBasedDeduplication"
+                  amazonAWSHost: "{{?amazonAWSHost}}"
+                  protocol: "{{?protocol}}"
+                  uriEndpointOverride: "{{?uriEndpointOverride}}"
+                  overrideEndpoint: "{{overrideEndpoint}}"
+          otherwise:
+            steps:
+            - to:
+                uri: "aws2-sqs:{{queueNameOrArn}}"
+                parameters:
+                  autoCreateQueue: "{{autoCreateQueue}}"
+                  accessKey: "{{?accessKey}}"
+                  secretKey: "{{?secretKey}}"
+                  region: "{{region}}"
+                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useExchangeId"
+                  amazonAWSHost: "{{?amazonAWSHost}}"
+                  protocol: "{{?protocol}}"
+                  uriEndpointOverride: "{{?uriEndpointOverride}}"
+                  overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sqs-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SQS"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SQS Sink
+    description: |-
+      Send messages to an Amazon Simple Queue Service (SQS) queue.
+
+      The basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider.
+      
+      If you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method.
+    required:
+      - queueNameOrArn
+      - region
+    type: object
+    properties:
+      queueNameOrArn:
+        title: Queue Name
+        description: The SQS Queue name or or Amazon Resource Name (ARN).
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateQueue:
+        title: Autocreate Queue
+        description: Automatically create the SQS queue. 
+        type: boolean
+        default: false
+      amazonAWSHost:
+        title: AWS Host
+        description: The hostname of the Amazon AWS cloud. 
+        type: string
+        default: amazonaws.com
+      protocol:
+        title: Protocol
+        description: The underlying protocol used to communicate with SQS.
+        type: string
+        example: http or https
+        default: https
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false    
+  dependencies:
+    - "camel:aws2-sqs"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-sqs:{{queueNameOrArn}}"
+          parameters:
+            autoCreateQueue: "{{autoCreateQueue}}"
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            amazonAWSHost: "{{?amazonAWSHost}}"
+            protocol: "{{?protocol}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"            
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sqs-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS SQS"
+    camel.apache.org/keda.type: "aws-sqs-queue"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS SQS Source"
+    description: |-
+      Receive data from AWS SQS.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+
+      Two headers will be duplicated with different names for clarity at sink level, CamelAwsSqsMessageId will be duplicated into aws.sqs.message.id and CamelAwsSqsReceiptHandle will be duplicated in aws.sqs.receipt.handle
+    required:
+      - queueNameOrArn
+      - region
+    type: object
+    properties:
+      queueNameOrArn:
+        title: Queue Name
+        description: The SQS Queue Name or ARN
+        type: string
+      deleteAfterRead:
+        title: Auto-delete Messages
+        description: Delete messages after consuming them
+        type: boolean
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+        - urn:keda:authentication:awsAccessKeyID
+        - urn:keda:required
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+        - urn:keda:authentication:awsSecretAccessKey
+        - urn:keda:required
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        x-descriptors:
+        - urn:keda:metadata:awsRegion
+        - urn:keda:required
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      autoCreateQueue:
+        title: Autocreate Queue
+        description: Setting the autocreation of the SQS queue. 
+        type: boolean
+        default: false
+      amazonAWSHost:
+        title: AWS Host
+        description: The hostname of the Amazon AWS cloud. 
+        type: string
+        default: amazonaws.com
+      protocol:
+        title: Protocol
+        description: The underlying protocol used to communicate with SQS
+        type: string
+        example: http or https
+        default: https
+      queueURL:
+        title: Queue URL
+        description: The full SQS Queue URL (required if using KEDA)
+        type: string
+        x-descriptors:
+        - urn:keda:metadata:queueURL
+        - urn:keda:required
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected stream
+        type: integer
+        default: 500
+      greedy:
+        title: Greedy Scheduler
+        description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.
+        type: boolean
+        default: false
+  dataTypes:
+    out:
+      default: text
+      headers:
+        CamelAwsSqsMessageId:
+          title: The SQS Message Id
+          description: The Amazon SQS message ID
+          type: string
+        CamelAwsSqsReceiptHandle:
+          title: The SQS Message Receipt Handle
+          description: The Amazon SQS message receipt handle.
+          type: string
+        CamelAwsSqsMD5OfBody:
+          title: The SQS Message MD5 Checksum
+          description: The content type of the retrieved object.
+          default: application/octet-stream
+          type: string
+        CamelAwsSqsAttributes:
+          title: The SQS Message System Attributes
+          description: |-
+            A map of the attributes requested in ReceiveMessage to their respective values, the Map type is Map<MessageSystemAttributeName, String>
+          type: object
+        CamelAwsSqsMessageAttributes:
+          title: The SQS Message Attributes
+          description: |-
+            The Amazon SQS message attributes, the Map type is Map<String, MessageAttributeValue>
+          type: object
+      types:
+        text:
+          format: "text-plain"
+          description: Default String representation of the SQS message received from the queue.
+          mediaType: text/plain
+        cloudevents:
+          format: "aws2-sqs:application-cloudevents"
+          description: |-
+            Output data type represents AWS SQS receive message response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with
+            respective data from the SQS message and its derived object.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.aws.sqs.receiveMessage"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the SQS Received message receipt handle with prefix "aws.sqs.queue.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. The SQS message ID
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-sqs"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "aws2-sqs:{{queueNameOrArn}}"
+      parameters:
+        autoCreateQueue: "{{autoCreateQueue}}"
+        secretKey: "{{?secretKey}}"
+        accessKey: "{{?accessKey}}"
+        region: "{{region}}"
+        deleteAfterRead: "{{deleteAfterRead}}"
+        amazonAWSHost: "{{?amazonAWSHost}}"
+        protocol: "{{?protocol}}"
+        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+        uriEndpointOverride: "{{?uriEndpointOverride}}"
+        overrideEndpoint: "{{overrideEndpoint}}"
+        delay: "{{delay}}"
+        greedy: "{{greedy}}"
+      steps:
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-sts-assume-role-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ5MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIHZpZXdCb3g9IjAgMCAyNTYgNDkwIiB3aWR0aD0iMjU2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMzYzQ5MjkiPjxwYXRoIGQ9Im0yMSAxNjUuNzUtMjEgNi44NTYgMjEuNzUgMi41MTl6Ii8+PHBhdGggZD0ibTE5Ljk1NSAyMDYuODA2IDEwOC4wNDUgNi45MDggMTA4LjA0NS02LjkwOC0xMDguMDQ1LTIxLjA1NnoiLz48cGF0aCBkPSJtMjM0LjUgMTc1LjEyNSAyMS41LTIuNTE5LTIxLjUtNS43MzF6Ii8+PC9nPjxwYXRoIGQ9Im0xNTcuMzg3ID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS STS"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "AWS STS Assume Role Action"
+    description: |-
+      Assume a role through STS
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS STS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the Translate client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+      
+      In the headers, you have to specify the `role-arn` / `ce-role-arn` property to specify the role ARN you want to assume.
+
+      In the headers, you have to specify the `role-session-name` / `ce-role-session-name` property to specify the role Session name you want to use.
+    required:
+      - region
+    type: object
+    properties:
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the STS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:dns"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:aws2-sts"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[role-arn]}"
+            steps:
+            - setHeader:
+                name: CamelAwsStsRoleArn
+                simple: "${header[role-arn]}"
+          - simple: "${header[ce-role-arn]}"
+            steps:
+            - setHeader:
+                name: CamelAwsStsRoleArn
+                simple: "${header[ce-role-arn]}"
+      - choice:
+          when:
+          - simple: "${header[role-session-name]}"
+            steps:
+            - setHeader:
+                name: CamelAwsStsRoleSessionName
+                simple: "${header[role-session-name]}"
+          - simple: "${header[ce-role-session-name]}"
+            steps:
+            - setHeader:
+                name: CamelAwsStsRoleSessionName
+                simple: "${header[ce-role-session-name]}"
+      - to:
+          uri: "aws2-sts://default"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            operation: "assumeRole"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-timestream-query-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDx0aXRsZT5BV1MgVGltZXN0cmVhbTwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJS [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Timestream"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS Timestream Query Sink
+    description: |-
+      Query an AWS Timestream Database
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS Timestream Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the Timestream client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+
+      The Kamelet expects the following headers to be set:
+
+      - `query` / `ce-query`: as a Timestream Query
+    required:
+      - region
+    type: object
+    properties:
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Overwrite Endpoint URI
+        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+        type: string
+      overrideEndpoint:
+        title: Endpoint Overwrite
+        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-timestream"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[query]}"
+            steps:
+            - setHeader:
+                name: CamelAwsTimestreamQueryString
+                simple: "${header[query]}"
+          - simple: "${header[ce-query]}"
+            steps:
+            - setHeader:
+                name: CamelAwsTimestreamQueryString
+                simple: "${header[ce-query]}"
+      - to:
+          uri: "aws2-timestream:query"
+          parameters:
+            accessKey: "{{?accessKey}}"
+            secretKey: "{{?secretKey}}"
+            region: "{{region}}"
+            operation: "query"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+            uriEndpointOverride: "{{?uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: aws-translate-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg4IDg0LjgxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjIuODggODQuODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "AWS Translate"
+    camel.apache.org/kamelet.namespace: "AWS"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "AWS Translate Action"
+    description: |-
+      Translate a text in a specific language.
+
+      Access Key/Secret Key are the basic method for authenticating to the AWS Translate Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
+      
+      When using a default Credentials Provider the Translate client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
+    required:
+      - region
+      - sourceLanguage
+      - targetLanguage
+    type: object
+    properties:
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      region:
+        title: AWS Region
+        description: The AWS region to access.
+        type: string
+        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+      sourceLanguage:
+        title: Source Language
+        description: The source language of the translating text.
+        type: string
+        example: it
+        enum: ["ar", "zh", "zh-TW", "cs", "da", "nl", "en", "fi", "fr", "de", "he", "hi", "id", "it", "ja", "ko", "ms", "no", "fa", "pl", "pt", "ru", "es", "sv", "tr"]
+      targetLanguage:
+        title: Target Language
+        description: The target language of the translating text.
+        type: string
+        example: it
+        enum: ["ar", "zh", "zh-TW", "cs", "da", "nl", "en", "fi", "fr", "de", "he", "hi", "id", "it", "ja", "ko", "ms", "no", "fa", "pl", "pt", "ru", "es", "sv", "tr"]
+      useDefaultCredentialsProvider:
+        title: Default Credentials Provider
+        description: Set whether the Translate client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:dns"
+    - "camel:kamelet"
+    - "camel:aws2-translate"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "aws2-translate://translate"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{region}}"
+            sourceLanguage: "{{sourceLanguage}}"
+            targetLanguage: "{{targetLanguage}}"
+            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-cosmosdb-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure CosmosDB"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure CosmosDB Sink"
+    description: |-
+      Send Data to an Azure CosmosDB instance
+      
+      In the headers, you can optionally set the `itemPartitionKey` / `ce-itemPartitionKey` property to specify the partition key for a specific item.
+
+      If you do not set the property in the header, you'll need to use the static property itemPartitonKey.
+      
+      There are two different mechanism of authentication `SHARED_ACCOUNT_KEY` and `AZURE_IDENTITY`, you could specify with credentialType property. If you're using `SHARED_ACCOUNT_KEY` accountKey property will be needed.
+      
+      In case of `AZURE_IDENTITY` selection, the DefaultAzureCredential will attempt to authenticate via the following mechanisms in the following order enviroment, Workload Identity, Managed Identity, Azure Developer CLI, IntelliJ, Azure CLI and Azure Powershell. 
+    required:
+      - databaseName
+      - containerName
+      - databaseEndpoint
+    type: object
+    properties:
+      databaseName:
+        title: Database Name
+        description: The Azure Cosmos database name.
+        type: string
+      containerName:
+        title: Container Name
+        description: The Azure Cosmos container name.
+        type: string
+      accountKey:
+        title: Account Key
+        description: The Azure Cosmos account Key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      databaseEndpoint:
+        title: Database Endpoint
+        description: Sets the Azure Cosmos database endpoint the component will connect to.
+        type: string
+      itemPartitionKey:
+        title: Item Partition Key
+        description: Represents a partition key value in the Azure Cosmos DB database service. A partition key identifies the partition where the item is stored in.
+        type: string
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  types:
+    in:
+      mediaType: application/json
+  dependencies:
+    - "camel:azure-cosmosdb"
+    - "camel:kamelet"
+    - "camel:jackson"
+    - "camel:core"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          precondition: true
+          when:
+            - simple: '${propertiesExist:!itemPartitionKey}'
+              steps:
+                - choice:   
+                    when:
+                      - simple: "${header[itemPartitionKey]}"
+                        steps:
+                          - setHeader:
+                              name: CamelAzureCosmosDbItemPartitionKey
+                              simple: "${header[itemPartitionKey]}"
+                      - simple: "${header[ce-itemPartitionKey]}"
+                        steps:
+                          - setHeader:
+                              name: CamelAzureCosmosDbItemPartitionKey
+                              simple: "${header[ce-itemPartitionKey]}"
+      - unmarshal:
+          json: 
+            library: Jackson
+      - to:
+          uri: "azure-cosmosdb:{{databaseName}}/{{containerName}}"
+          parameters:
+            accountKey: "{{?accountKey}}"
+            databaseEndpoint: "{{databaseEndpoint}}"
+            itemPartitionKey: "{{?itemPartitionKey}}"
+            operation: createItem
+            credentialType: "{{credentialType}}"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-cosmosdb-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure CosmosDB"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure CosmosDB Source"
+    description: |-
+      Consume Changes from a CosmosDB instance.
+      
+      There are two different mechanism of authentication `SHARED_ACCOUNT_KEY` and `AZURE_IDENTITY`, you could specify with credentialType property. If you're using `SHARED_ACCOUNT_KEY` accountKey property will be needed.
+      
+      In case of `AZURE_IDENTITY` selection, the DefaultAzureCredential will attempt to authenticate via the following mechanisms in the following order enviroment, Workload Identity, Managed Identity, Azure Developer CLI, IntelliJ, Azure CLI and Azure Powershell. 
+    required:
+      - databaseName
+      - containerName
+      - databaseEndpoint
+    type: object
+    properties:
+      databaseName:
+        title: Database Name
+        description: The Azure Cosmos database name.
+        type: string
+      containerName:
+        title: Container Name
+        description: The Azure Cosmos container name.
+        type: string
+      accountKey:
+        title: Account Key
+        description: The Azure Cosmos account Key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      leaseDatabaseName:
+        title: Lease Database Name
+        description: Sets the lease container which acts as a state storage and coordinates processing the change feed across multiple workers.
+        type: string
+      leaseContainerName:
+        title: Lease Container Name
+        description: Sets the lease database where the leaseContainerName will be stored.
+        type: string
+      createLeaseDatabaseIfNotExists:
+        title: Autocreate Lease Database
+        description: Sets if the component should create Cosmos lease database for the consumer automatically in case it doesn’t exist in Cosmos account. 
+        type: boolean
+        default: false
+      createLeaseContainerIfNotExists:
+        title: Autocreate Lease Container
+        description: Sets if the component should create Cosmos lease container for the consumer automatically in case it doesn’t exist in Cosmos database. 
+        type: boolean
+        default: false
+      databaseEndpoint:
+        title: Database Endpoint
+        description: Sets the Azure Cosmos database endpoint the component will connect to.
+        type: string
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  dataTypes:
+    out:
+      default: json
+      headers:
+      types:
+        json:
+          format: "application-json"
+          description: Json mapping of Change Feed records
+          mediaType: application/json
+        cloudevents:
+          format: "azure-cosmosdb:application-cloudevents"
+          description: |-
+            Data type transformer converts Azure CosmosDB Change Feed processor response to CloudEvent v1_0 data format. The data
+            type sets Camel specific CloudEvent headers with values extracted from Azure CosmosDB Change Feed processor response.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.azure.cosmosdb.changes"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source.
+              type: string
+              default: "org.apache.camel.event.azure.cosmosdb.changefeed"
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. 
+              type: string
+              default: "org.apache.camel.event.azure.cosmosdb.changefeed"
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:azure-cosmosdb"
+    - "camel:kamelet"
+    - "camel:jackson"
+  template:
+    from:
+      uri: "azure-cosmosdb:{{databaseName}}/{{containerName}}"
+      parameters:
+        leaseDatabaseName: "{{?leaseDatabaseName}}"
+        leaseContainerName: "{{?leaseContainerName}}"
+        accountKey: "{{?accountKey}}"
+        createLeaseDatabaseIfNotExists: "{{createLeaseDatabaseIfNotExists}}"
+        createLeaseContainerIfNotExists: "{{createLeaseContainerIfNotExists}}"
+        databaseEndpoint: "{{databaseEndpoint}}"
+        credentialType: "{{credentialType}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-eventhubs-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Eventhubs"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Eventhubs Sink"
+    description: |-
+      Send events to Azure Event Hubs.
+
+      The Kamelet checks for the `partition-id` / `ce-partition-id` header which is an identifier of the Event Hub partition that the event will be sent to. If the identifier is not specified, the Event Hubs service will be responsible for routing events that are sent to an available partition.
+         
+      A header is optional. If the header is not set, the partition is assigned by Event Hubs.
+      
+      There are two different mechanism of authentication `CONNECTION_STRING` and `AZURE_IDENTITY`, you could specify with credentialType property. If you're using `CONNECTION_STRING` sharedAccessName and sharedAccessKey properties will be needed.
+      
+      In case of `AZURE_IDENTITY` selection, the DefaultAzureCredential will attempt to authenticate via the following mechanisms in the following order enviroment, Workload Identity, Managed Identity, Azure Developer CLI, IntelliJ, Azure CLI and Azure Powershell. 
+    required:
+      - namespaceName
+      - eventhubName
+    type: object
+    properties:
+      namespaceName:
+        title: Eventhubs Namespace
+        description: The Event Hubs namespace.
+        type: string
+      eventhubName:
+        title: Eventhubs Name
+        description: The Event Hub name.
+        type: string
+      sharedAccessName:
+        title: Share Access Name
+        description: The Event Hubs SAS key name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      sharedAccessKey:
+        title: Share Access Key
+        description: The key for the Event Hubs SAS key name.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["CONNECTION_STRING", "AZURE_IDENTITY"]
+        default: "CONNECTION_STRING"
+  dependencies:
+    - "camel:core"
+    - "camel:azure-eventhubs"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[partition-id]}"
+            steps:
+            - setHeader:
+                name: CamelAzureEventHubsPartitionId
+                simple: "${header[partition-id]}"
+          - simple: "${header[ce-partition-id]}"
+            steps:
+            - setHeader:
+                name: CamelAzureEventHubsPartitionId
+                simple: "${header[ce-partition-id]}"
+      - to:
+          uri: "azure-eventhubs://{{namespaceName}}/{{eventhubName}}"
+          parameters:
+            sharedAccessName: "{{?sharedAccessName}}"
+            sharedAccessKey: "{{?sharedAccessKey}}"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-eventhubs-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Eventhubs"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Eventhubs Source"
+    description: |-
+      Receive events from Azure Event Hubs.
+      
+      There are two different mechanism of authentication `CONNECTION_STRING` and `AZURE_IDENTITY`, you could specify with credentialType property. If you're using `CONNECTION_STRING` sharedAccessName and sharedAccessKey properties will be needed.
+      
+      In case of `AZURE_IDENTITY` selection, the DefaultAzureCredential will attempt to authenticate via the following mechanisms in the following order enviroment, Workload Identity, Managed Identity, Azure Developer CLI, IntelliJ, Azure CLI and Azure Powershell. 
+    required:
+      - namespaceName
+      - eventhubName
+      - blobAccountName
+      - blobAccessKey
+      - blobContainerName
+    type: object
+    properties:
+      namespaceName:
+        title: Eventhubs Namespace
+        description: The Event Hubs namespace.
+        type: string
+      eventhubName:
+        title: Eventhubs Name
+        description: The Event Hub name.
+        type: string
+      sharedAccessName:
+        title: Share Access Name
+        description: The Event Hubs SAS key name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      sharedAccessKey:
+        title: Share Access Key
+        description: The key for the Event Hubs SAS key name.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      blobAccountName:
+        title: Azure Storage Blob Account Name
+        description: The name of the Storage Blob account.
+        type: string
+      blobContainerName:
+        title: Azure Storage Blob Container Name
+        description: The name of the Storage Blob container.
+        type: string
+      blobAccessKey:
+        title: Azure Storage Blob Access Key
+        description: The key for the Azure Storage Blob service that is associated with the Storage Blob account name.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["CONNECTION_STRING", "AZURE_IDENTITY"]
+        default: "CONNECTION_STRING"
+  dataTypes:
+    out:
+      default: binary
+      headers:
+        CamelAzureEventHubsPartitionId:
+          title: Azure Storage Event Hubs Partiton Id
+          description: It sets the partition id of the Event Hub.
+          type: string
+        CamelAzureEventHubsOffset :
+          title: Azure Storage Event Hubs Event Offset
+          description: It sets the offset of the event when it was received from the associated Event Hub partition. This is only present on a received EventData.
+          type: string
+        CamelAzureEventHubsEnqueuedTime:
+          title: Azure Event Hubs Event Enqueued Time
+          description: It sets the instant, in UTC, of when the event was enqueued in the Event Hub partition. This is only present on a received EventData.
+          type: java.time.Instant
+        CamelAzureEventHubsSequenceNumber:
+          title: Azure Event Hubs Event Sequence Number
+          description: |-
+            It sets the sequence number assigned to the event when it was enqueued in the associated Event Hub partition. This is unique for every message received in the Event Hub partition. This is only present on a received EventData.
+          type: long
+        CamelAzureEventHubsMetadata:
+          title: Azure Event Hubs Event Metadata
+          description: The set of free-form event properties which may be used for passing metadata associated with the event with the event body during Event Hubs operations.
+          type: object
+        CamelMessageTimestamp:
+          title: Azure Event Hubs Message Timestamp
+          description: The timestamp of the message.
+          type: long
+        CamelAzureEventHubsCheckpointUpdatedBy:
+          title: Azure Event Hubs Checkpoint Updated By
+          description: It sets the reason for the checkpoint to have been updated. This is only present on a received EventData.
+          type: string
+      types:
+        binary:
+          format: "application-octet-stream"
+          description: Default binary representation of the Azure Event Hubs Event retrieved.
+          mediaType: application/octet-stream
+        cloudevents:
+          format: "azure-eventhubs:application-cloudevents"
+          description: |-
+            Data type transformer converts Azure Eventhubs consumer response to CloudEvent v1_0 data format. The data type sets
+            Camel specific CloudEvent headers with values extracted from Azure Eventhubs consumer response.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.azure.eventhubs.consume"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Partition Id with prefix "azure.eventhubs.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. The Azure Event Hubs Event Sequence Number.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+  - "camel:azure-eventhubs"
+  - "camel:kamelet"
+  - "camel:jackson"
+  template:
+    from:
+      uri: 'azure-eventhubs://{{namespaceName}}/{{eventhubName}}'
+      parameters:
+        sharedAccessName: "{{?sharedAccessName}}"
+        sharedAccessKey: "{{?sharedAccessKey}}"
+        blobAccountName: "{{blobAccountName}}"
+        blobAccessKey: "{{blobAccessKey}}"
+        blobContainerName: "{{blobContainerName}}"
+        credentialType: "{{credentialType}}"
+      steps:
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-functions-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4LjI0IDIxLjQ2IDY0IDY0IiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxwYXRoIGQ9Ik04MS44MzcgNTMuODVjLjU4NS0uNTg1LjQ4Ny0xLjcgMC0yLjMwN2wtMy4wODctMy4wODctMTMuOC0xMy4zODZjLS41ODUtLjU4NS0xLjQ5NS0uNTg1LTIuMiAwLS41ODUuNTg1LS44MTIgMS43IDAgMi4zMDdsMTQuNSAxNC4xOThjLjU4NS41ODUuNTg1IDEuNyAwIDIuMzA3TDYyLjQ0IDY4LjU2OGMtLjU4NS41ODUtLjU4NSAxLjcgMCAyLjMwNy41ODUuNTg1IDEuNy40ODcgMi4yIDBsMTMuOC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Functions"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: Azure Function Sink
+    description: Forward data to an Azure Function.
+    required:
+    - url
+    type: object
+    properties:
+      url:
+        title: URL
+        description: The Azure Functions URL you want to send the data to.
+        type: string
+        example: "https://azure-function-demo-12234.azurewebsites.net/api/httpexample"
+        pattern: "^(https)://.*"
+      method:
+        title: Method
+        description: The HTTP method to use.
+        type: string
+        default: POST
+        enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"]
+      key:
+        title: Key
+        description: A function-specific API key is required, if the authLevel of the function is FUNCTION or master key if the authLevel is ADMIN.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+  dependencies:
+  - "camel:vertx-http"
+  - "camel:kamelet"
+  - "camel:core"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - removeHeader:
+          name: CamelHttpUri
+      - setHeader:
+          name: CamelHttpMethod
+          constant: "{{method}}"
+      - to: "vertx-http:{{url}}?code={{?key}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-servicebus-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMz [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Servicebus"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Servicebus Sink"
+    description: |-
+      Send Messages to Azure Servicebus.
+    required:
+      - topicOrQueueName
+      - connectionString
+    type: object
+    properties:
+      topicOrQueueName:
+        title: Topic Or Queue Name
+        description: Topic Or Queue Name for the Azure Servicebus instance
+        type: string
+      connectionString:
+        title: Connection String
+        description: Connection String for Azure Servicebus instance
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      serviceBusType:
+        title: Servicebus Type
+        description: The service bus type of connection to execute. Queue is for typical queue option and topic for subscription based model.
+        type: string
+        default: queue
+        enum: ["queue", "topic"]
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["AZURE_IDENTITY", "CONNECTION_STRING", "TOKEN_CREDENTIAL"]
+        default: "CONNECTION_STRING"
+  types:
+    in:
+      mediaType: application/octet-stream
+  dependencies:
+    - "camel:azure-servicebus"
+    - "camel:kamelet"
+    - "camel:core"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "azure-servicebus:{{topicOrQueueName}}"
+          parameters:
+            connectionString: "{{connectionString}}"
+            serviceBusType: "{{serviceBusType}}"
+            producerOperation: "sendMessages"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-servicebus-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMz [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Servicebus"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Servicebus Source"
+    description: |-
+      Consume Messages from Azure Servicebus.
+
+      The subscribtion name parameter needs to be populated in case of consuming from a Topic.
+    required:
+      - topicOrQueueName
+      - connectionString
+    type: object
+    properties:
+      topicOrQueueName:
+        title: Topic Or Queue Name
+        description: Topic Or Queue Name for the Azure Servicebus instance
+        type: string
+      connectionString:
+        title: Connection String
+        description: Connection String for Azure Servicebus instance
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      serviceBusReceiveMode:
+        title: Servicebus Receive Mode
+        description: Sets the receive mode for the receiver
+        type: string
+        default: PEEK_LOCK
+        enum: ["PEEK_LOCK", "RECEIVE_AND_DELETE"]
+      subscriptionName:
+        title: Subscription Name
+        description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.
+        type: string
+      serviceBusType:
+        title: Servicebus Type
+        description: The service bus type of connection to execute. Queue is for typical queue option and topic for subscription based model.
+        type: string
+        default: queue
+        enum: ["queue", "topic"]
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["AZURE_IDENTITY", "CONNECTION_STRING", "TOKEN_CREDENTIAL"]
+        default: "CONNECTION_STRING"
+  types:
+    out:
+      mediaType: application/octet-stream
+  dependencies:
+    - "camel:azure-servicebus"
+    - "camel:kamelet"
+    - "camel:core"
+  template:
+    from:
+      uri: "azure-servicebus:{{topicOrQueueName}}"
+      parameters:
+        connectionString: "{{connectionString}}"
+        serviceBusReceiveMode: "{{serviceBusReceiveMode}}"
+        subscriptionName: "{{?subscriptionName}}"
+        serviceBusType: "{{serviceBusType}}"
+        credentialType: "{{credentialType}}"
+      steps:
+      - setBody:
+          simple: "${body.toBytes()}"
+      - to: "kamelet:sink"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-append-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Blob Append Sink"
+    description: |-
+      Upload data in append mode to Azure Storage Blob.
+
+      In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename.
+    required:
+      - accountName
+      - containerName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      containerName:
+        title: Container Name
+        description: The Azure Storage Blob container name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Blob access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  dependencies:
+    - "camel:core"
+    - "camel:azure-storage-blob"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${exchangeId}"
+      - to:
+          uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
+          parameters:
+            accessKey: "{{?accessKey}}"
+            operation: "commitAppendBlob"
+            blobType: "appendBlob"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-changefeed-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob Changefeed"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Storage Blob Changefeed Source"
+    description: |-
+      Consume events from an Azure Storage Blob change feed.
+    required:
+      - period
+      - accountName
+      - accessKey
+    type: object
+    properties:
+      period:
+        title: Period between Polls
+        description: The interval (in milliseconds) between fetches to the Azure Storage change feed.
+        type: integer
+        default: 10000
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+        x-descriptors:
+          - urn:camel:group:credentials
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Blob access Key.
+        type: string
+        format: password
+        x-descriptors:
+          - urn:camel:group:credentials
+  dependencies:
+    - "camel:azure-storage-blob"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:jackson"
+    - "camel:jsonpath"
+    - "camel:timer"
+  template:
+    from:
+      uri: "timer:azure-storage-blob-stream"
+      parameters:
+        period: "{{period}}"
+      steps:
+        - to:
+            uri: "azure-storage-blob:{{accountName}}"
+            parameters:
+              operation: "getChangeFeed"
+              accessKey: "{{accessKey}}"
+              credentialType: "SHARED_ACCOUNT_KEY"
+        - split:
+            expression:
+              simple: "${body}"
+        - marshal:
+            json:
+              library: Jackson
+              unmarshalType: com.fasterxml.jackson.databind.JsonNode
+        - setHeader:
+            name: "azure-storage-blob-changefeed-topic"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.topic
+        - setHeader:
+            name: "azure-storage-blob-changefeed-subject"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.subject
+        - setHeader:
+            name: "azure-storage-blob-changefeed-eventType"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.eventType
+        - setHeader:
+            name: "azure-storage-blob-changefeed-eventTime"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.eventTime
+        - setHeader:
+            name: "azure-storage-blob-changefeed-id"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.id
+        - setHeader:
+            name: "azure-storage-blob-changefeed-dataVersion"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.dataVersion
+        - setHeader:
+            name: "azure-storage-blob-changefeed-metadataVersion"
+            jsonpath:
+              suppressExceptions: true
+              expression: $.metadataVersion
+        - setBody:
+            jsonpath:
+              expression: $.data
+        - marshal:
+            json:
+              library: Jackson
+              module-class-names: com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
+        - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-event-based-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMz [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob Event Based"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: Azure Storage Blob Event-based Source
+    description: |-
+      Receive data from Azure Service Bus subscribed to Azure Eventgrid reporting events related to a Azure Storage Blob account.
+
+      Connection string is the basic method for authenticating to the Azure Servicebus Queue.
+
+      To use this Kamelet you'll need to set up Events on your Azure Storage Blob account and select as an endpoint an Azure Servicebus Queue.
+    required:
+      - topicOrQueueName
+      - connectionString
+      - accountName
+      - containerName
+      - accessKey
+    type: object
+    properties:
+      topicOrQueueName:
+        title: Topic Or Queue Name
+        description: Topic Or Queue Name for the Azure Servicebus instance
+        type: string
+      connectionString:
+        title: Connection String
+        description: Connection String for Azure Servicebus instance
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      serviceBusReceiveMode:
+        title: Servicebus Receive Mode
+        description: Sets the receive mode for the receiver.
+        type: string
+        default: RECEIVE_AND_DELETE
+        enum: ["RECEIVE_AND_DELETE", "PEEK_LOCK"]
+      subscriptionName:
+        title: Subscription Name
+        description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.
+        type: string
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      containerName:
+        title: Container Name
+        description: The Azure Storage Blob container name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Blob access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        default: SHARED_ACCOUNT_KEY
+        enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
+      getBlob:
+        title: Get Object in Container
+        description: >-
+          If getBlob is enabled, then the file created in the container will be
+          get and returned as body, if not only the event will be returned as body.
+        type: boolean
+        default: false
+  types:
+    out:
+      mediaType: application/octet-stream
+  dependencies:
+    - "camel:azure-servicebus"
+    - "camel:azure-storage-blob"
+    - "camel:kamelet"
+    - "camel:core"
+    - 'camel:jsonpath'
+    - 'camel:jackson'
+  template:
+    from:
+      uri: "azure-servicebus:{{topicOrQueueName}}"
+      parameters:
+        connectionString: "{{connectionString}}"
+        serviceBusReceiveMode: "{{serviceBusReceiveMode}}"
+        subscriptionName: "{{?subscriptionName}}"
+      steps:
+        - choice:
+            precondition: true
+            when:
+              - simple: '${properties:getBlob:true}'
+                steps:
+                  - setBody:
+                      simple: ${body.toString()}
+                  - unmarshal:
+                      json:
+                        library: Jackson
+                        unmarshalType: com.fasterxml.jackson.databind.JsonNode
+                  - setProperty:
+                      name: azure-storage-blob-event-type
+                      jsonpath: $.eventType
+                  - setProperty:
+                      name: azure-storage-blob-subject
+                      jsonpath: $.subject
+                  - setProperty:
+                      name: azure-storage-blob-blob-name
+                      simple: '${exchangeProperty.azure-storage-blob-subject.substring(${exchangeProperty.azure-storage-blob-subject.lastIndexOf("/")}++)}'
+                  - log: "${exchangeProperty.azure-storage-blob-event-type} - ${exchangeProperty.azure-storage-blob-subject} - ${exchangeProperty.azure-storage-blob-blob-name}"
+                  - choice:
+                      when:
+                        - simple: '${exchangeProperty.azure-storage-blob-event-type} == "Microsoft.Storage.BlobCreated" && ${exchangeProperty.azure-storage-blob-subject} contains "{{containerName}}"'
+                          steps:
+                            - toD: >-
+                                azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{accessKey}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}}
+        - to: 'kamelet:sink'
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Blob Sink"
+    description: |-
+      Upload data to Azure Storage Blob.
+
+      In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename.
+    required:
+      - accountName
+      - containerName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      containerName:
+        title: Container Name
+        description: The Azure Storage Blob container name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Blob access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  dependencies:
+    - "camel:core"
+    - "camel:azure-storage-blob"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${exchangeId}"
+      - to:
+          uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
+          parameters:
+            accessKey: "{{?accessKey}}"
+            operation: "uploadBlockBlob"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Storage Blob Source"
+    description: |-
+      Consume files from Azure Storage Blob.
+
+      Two headers will be duplicated with different names for clarity at sink level, CamelAzureStorageBlobETag will be duplicated into azure.storage.blob.e.tag and CamelAzureStorageBlobBlobSize will be duplicated in azure.storage.blob.blob.size
+    required:
+      - accountName
+      - containerName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      containerName:
+        title: Container Name
+        description: The Azure Storage Blob container name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Blob access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected blob.
+        type: integer
+        default: 500
+      deleteAfterRead:
+        title: Auto-delete Blob 
+        description: Specifies to delete blobs after consuming them
+        type: boolean
+        default: false
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  dataTypes:
+    out:
+      default: binary
+      headers:
+        CamelAzureStorageBlobBlobName:
+          title: Azure Storage Blob Name
+          description: The name of the blob retrieved
+          type: string
+        CamelAzureStorageBlobBlobType:
+          title: The Azure Storage Blob Type
+          description: The Blob type, one of blockblob, appendblob or pageblob
+          type: string
+        CamelAzureStorageBlobContentType:
+          title: Content Type
+          description: The content type of the retrieved object.
+          default: application/octet-stream
+          type: string
+        CamelAzureStorageBlobETag:
+          title: ETag Value
+          description: |-
+            The E tag of the blob
+          type: string
+        CamelAzureStorageBlobCreationTime:
+          title: Creation time
+          description: The Creation time of the blob
+          type: string
+        CamelAzureStorageBlobLastModified:
+          title: Last modification time
+          description: The Last modification time of the blob
+          type: string
+        CamelAzureStorageBlobLeaseStatus:
+          title: Lease status
+          description: Status of the lease on the blob, one of locked or unlocked
+          type: string
+        CamelAzureStorageBlobMetadata:
+          title: Blob Metadata
+          description: Additional Metadata of the blob of type Map<String,Object>
+          type: object
+      types:
+        binary:
+          format: "application-octet-stream"
+          description: Default binary representation of the Blob object retrieved from the container.
+          mediaType: application/octet-stream
+        cloudevents:
+          format: "azure-storage-blob:application-cloudevents"
+          description: |-
+            Output data type represents Azure Storage Blob get blob response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with
+            respective data from the Azure container and its derived object.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.azure.storage.blob.getBlob"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the E Tag name of the blob with prefix "azure.storage.blob.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. Usually the Azure Storage Blob name.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:azure-storage-blob"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:jsonpath"
+    - "camel:timer"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+  template:
+    from:
+      uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
+      parameters:
+        accessKey: "{{?accessKey}}"
+        credentialType: "{{credentialType}}"
+        delay: "{{delay}}"
+      steps:
+        - to: "kamelet:sink"
+        - choice:
+            precondition: true
+            when:
+              - simple: '${properties:deleteAfterRead:true}'
+                steps:
+                  - to:
+                      uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
+                      parameters:
+                        operation: "deleteBlob"
+                        accessKey: "{{?accessKey}}"
+                        credentialType: "{{credentialType}}"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-datalake-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Blob Data Lake Sink"
+    description: |-
+      Send data to Azure Storage Blob Data Lake.
+    required:
+      - accountName
+      - clientId
+      - clientSecret
+      - tenantId
+      - fileSystemName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob Data lake account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientId:
+        title: Client Id
+        description: The Azure Storage Blob Data lake client Id.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientSecret:
+        title: Client Secret
+        description: The Azure Storage Blob Data lake client secret.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      tenantId:
+        title: Tenant Id
+        description: The Azure Storage Blob Data lake tenant id.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      fileSystemName:
+        title: File System Name
+        description: The Azure Storage Blob Data lake File system name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["CLIENT_SECRET", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "AZURE_SAS", "SERVICE_CLIENT_INSTANCE"]
+        default: "CLIENT_SECRET"
+  dependencies:
+    - "camel:azure-storage-datalake"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:timer"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageDataLakeFileName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageDataLakeFileName
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelAzureStorageDataLakeFileName
+                simple: "${exchangeId}"
+      - to:
+          uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}"
+          parameters:
+            clientId: "{{clientId}}"
+            clientSecret: "{{clientSecret}}"
+            tenantId: "{{tenantId}}"
+            operation: "upload"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-datalake-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Storage Blob Data Lake Source"
+    description: |-
+      Consume files from Azure Storage Blob Data Lake.
+    required:
+      - accountName
+      - clientId
+      - clientSecret
+      - tenantId
+      - fileSystemName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob Data lake account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientId:
+        title: Client Id
+        description: The Azure Storage Blob Data lake client Id.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientSecret:
+        title: Client Secret
+        description: The Azure Storage Blob Data lake client secret.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      tenantId:
+        title: Tenant Id
+        description: The Azure Storage Blob Data lake tenant id.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      fileSystemName:
+        title: File System Name
+        description: The Azure Storage Blob Data lake File system name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected blob.
+        type: integer
+        default: 500
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["CLIENT_SECRET", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "AZURE_SAS", "SERVICE_CLIENT_INSTANCE"]
+        default: "CLIENT_SECRET"
+  dataTypes:
+    out:
+      default: binary
+      headers:
+        CamelAzureStorageDataLakeFileName:
+          title: Azure Storage Datalake File Name
+          description: The name of the file retrieved
+          type: string
+        CamelAzureStorageDataLakeRawHttpHeaders:
+          title: Azure Storage Data Lake Raw Http Headers
+          description: Non parsed http headers that can be used by the user.
+          type: object
+        CamelAzureStorageDataLakeAccessTier:
+          title: Azure Storage Data Lake File Access Tier
+          description: Access tier of file.
+          type: object
+        CamelAzureStorageDataLakeAccessTierChangeTime:
+          title: Azure Storage Data Lake Access Tier Change Time.
+          description: |-
+            Datetime when the access tier of the blob last changed.
+          type: object
+        CamelAzureStorageDataLakeArchiveStatus:
+          title: Azure Storage Data Lake Archive Status
+          description: Archive status of file
+          type: object
+        CamelAzureStorageDataLakeCacheControl:
+          title: Azure Storage Data Lake File Cache Control
+          description: Cache control specified for the file.
+          type: string
+        CamelAzureStorageDataLakeContentDisposition:
+          title: Azure Storage Data Lake File Content Disposition
+          description: Content disposition specified for the file.
+          type: string
+        CamelAzureStorageDataLakeContentEncoding:
+          title: Azure Storage Data Lake File Content Encoding
+          description: Content encoding specified for the file.
+          type: string
+        CamelAzureStorageDataLakeContentLanguage:
+          title: Azure Storage Data Lake File Content Language
+          description: Content language specified for the file.
+          type: string
+        CamelAzureStorageDataLakeContentType:
+          title: Azure Storage Data Lake File Content Type
+          description: Content Type specified for the file.
+          type: string
+        CamelAzureStorageDataLakeCopyCompletionTime:
+          title: Azure Storage Data Lake File Copy Completion time
+          description: Conclusion time of the last attempted Copy Blob operation where this file was the destination file.
+          type: object
+        CamelAzureStorageDataLakeCopyId:
+          title: Azure Storage Data Lake File Copy Id
+          description: String identifier for this copy operation.
+          type: string
+        amelAzureStorageDataLakeCopyProgress:
+          title: Azure Storage Data Lake File Copy Progress
+          description: Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this file was the destination file.
+          type: string
+        CamelAzureStorageDataLakeCopySource:
+          title: Azure Storage Data Lake File Copy Source
+          description: URL up to 2 KB in length that specifies the source file or file used in the last attempted Copy Blob operation where this file was the destination file.
+          type: string
+        CamelAzureStorageDataLakeCopyStatus:
+          title: Azure Storage Data Lake File Copy Status
+          description: Status of the last copy operation performed on the file.
+          type: object
+        CamelAzureStorageDataLakeCopyStatusDescription:
+          title: Azure Storage Data Lake File Copy Status Description
+          description: The description of the copy’s status.
+          type: string
+        CamelAzureStorageDataLakeCreationTime:
+          title: Azure Storage Data Lake File Creation Time.
+          description: Creation time of the file.
+          type: object
+        CamelAzureStorageDataLakeEncryptionKeySha256:
+          title: Azure Storage Data Lake File SHA-256 Hash
+          description: The SHA-256 hash of the encryption key used to encrypt the file.
+          type: string
+        CamelAzureStorageDataLakeETag:
+          title: Azure Storage Data Lake File E Tag
+          description: The E Tag of the file.
+          type: string
+        CamelAzureStorageDataLakeFileSize:
+          title: Azure Storage Data Lake File Size
+          description: The File Size
+          type: long
+        CamelAzureStorageDataLakeLastModified:
+          title: Azure Storage Data Lake File Last Modified Date
+          description: Datetime when the file was last modified.
+          type: object
+        CamelAzureStorageDataLakeLeaseDuration:
+          title: Azure Storage Data Lake File Lease Duration
+          description: Type of lease on the file.
+          type: object
+        CamelAzureStorageDataLakeLeaseState:
+          title: Azure Storage Data Lake File Lease State
+          description: State of the lease on the file.
+          type: object
+        CamelAzureStorageDataLakeLeaseStatus:
+          title: Azure Storage Data Lake File Lease Status
+          description: Status of the lease on the file.
+          type: object
+        CamelAzureStorageDataLakeServerEncrypted:
+          title: Azure Storage Data Lake File Content Encrypted
+          description: Flag indicating if the file’s content is encrypted on the server.
+          type: boolean
+        CamelAzureStorageDataLakeDownloadLink:
+          title: Azure Storage Data Lake File Download Link
+          description: The link that can be used to download the file from data lake.
+          type: string
+      types:
+        binary:
+          format: "application-octet-stream"
+          description: Default binary representation of the object retrieved from the Azure Data Lake.
+          mediaType: application/octet-stream
+        cloudevents:
+          format: "azure-storage-datalake:application-cloudevents"
+          description: |-
+            Data type transformer converts Azure Data Lake consumer response to CloudEvent v1_0 data format. The data type sets
+            Camel specific CloudEvent headers with values extracted from Azure Data Lake consumer response.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.azure.storage.datalake.consume"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Archive Status of the file with prefix "azure.storage.datalake.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. Usually the Azure Storage Datalake E Tag of file.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:azure-storage-datalake"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:timer"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+  template:
+    from:
+      uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}"
+      parameters:
+        clientId: "{{clientId}}"
+        clientSecret: "{{clientSecret}}"
+        tenantId: "{{tenantId}}"
+        delay: "{{delay}}"
+        credentialType: "{{credentialType}}"
+      steps:
+        - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-files-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Files Sink"
+    description: |-
+      Upload data to Azure Storage Files Share.
+
+      In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename.
+    required:
+      - accountName
+      - shareName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      shareName:
+        title: Share Name
+        description: The Azure Storage File Share share name.
+        type: string
+      sharedKey:
+        title: Shared Access Key
+        description: The Azure Storage Blob access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "SHARED_KEY_CREDENTIAL", "AZURE_SAS"]
+        default: "SHARED_ACCOUNT_KEY"
+      directoryName:
+        title: Directory Name
+        description: The directory from where the producer will upload the file.
+        type: string
+        default: "."
+  dependencies:
+    - "camel:core"
+    - "camel:azure-storage-blob"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${exchangeId}"
+      - to:
+          uri: "azure-files://{{accountName}}/{{shareName}}/{{directoryName}}"
+          parameters:
+            sharedKey: "{{?sharedKey}}"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-files-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Blob"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Storage File Source"
+    description: |-
+      Consume files from Azure Storage File Shares.
+    required:
+      - accountName
+      - shareName
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage File Share account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      shareName:
+        title: Share Name
+        description: The Azure Storage File Share share name.
+        type: string
+      sharedKey:
+        title: Shared Access Key
+        description: The Azure Storage Blob access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected blob.
+        type: integer
+        default: 500
+      deleteAfterRead:
+        title: Auto-delete Blob 
+        description: Specifies to delete blobs after consuming them
+        type: boolean
+        default: false
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "SHARED_KEY_CREDENTIAL", "AZURE_SAS"]
+        default: "SHARED_ACCOUNT_KEY"
+      directoryName:
+        title: Directory Name
+        description: The directory from where the consumer will start reading files.
+        type: string
+        default: "."
+      recursive:
+        title: Recursive Mode 
+        description: If a directory, the consumer will look for files in all the sub-directories as well.
+        type: boolean
+        default: false
+  dataTypes:
+    out:
+      default: binary
+      headers:
+        CamelFileLength:
+          title: Azure Storage Files File Length
+          description: A long value containing the file size
+          type: long
+        CamelFileLastModified:
+          title: Azure Storage Files File Last Modified Date
+          description: A Long value containing the last modified timestamp of the file.
+          type: long
+        CamelFileNameOnly:
+          title: Azure Storage Files File Name Only
+          description: Only the file name (the name with no leading paths).
+          type: string
+        CamelFileName:
+          title: Azure Storage Files File Name 
+          description: |-
+            Name of the consumed file as a relative file path with offset from the starting directory configured on the endpoint.
+          type: string
+        CamelFileNameConsumed:
+          title: Azure Storage Files Consumed File Name
+          description: The name of the file that has been consumed.
+          type: string
+        CamelFileAbsolute:
+          title: Azure Storage Files Consumed Absolute Format
+          description: |- 
+            A boolean option specifying whether the consumed file denotes an absolute path or not. 
+            Should normally be false for relative paths. Absolute paths should normally not be used but we added to the move option to allow moving files to absolute paths. 
+            But can be used elsewhere as well.
+          type: boolean
+        CamelFileAbsolutePath:
+          title: Azure Storage Files Consumed Absolute Path
+          description: The absolute path to the file. For relative files this path holds the relative path instead.
+          type: string
+        CamelFileExtendedAttributes:
+          title: Azure Storage Files Extended Attributes
+          description: Additional Metadata of the file of type Map<String,Object>
+          type: object
+        CamelFileContentType:
+          title: Content Type
+          description: The content type of the retrieved object.
+          default: application/octet-stream
+          type: string
+        CamelFilePath:
+          title: Azure Storage Files File Path
+          description: The file path. For relative files this is the starting directory the relative filename. For absolute files this is the absolute path.
+          type: string
+        CamelFileRelativePath:
+          title: Azure Storage Files File Relative Path
+          description: The relative path.
+          type: string
+        CamelFileParent:
+          title: Azure Storage Files File Relative Path
+          description: The parent path.
+          type: string
+      types:
+        binary:
+          format: "application-octet-stream"
+          description: Default binary representation of the File retrieved from Azure Storage Files.
+          mediaType: application/octet-stream
+        cloudevents:
+          format: "azure-files:application-cloudevents"
+          description: |-
+            Data type transformer converts Azure Storage Files poll response to CloudEvent v1_0 data format. The data type sets
+            Camel specific CloudEvent headers with values extracted from Azure Storage Files poll response.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.azure.storage.files.poll"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Host name of the share with prefix "azure.storage.files.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. Usually the Azure Storage Files file name.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string       
+  dependencies:
+    - "camel:azure-files"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:timer"
+  template:
+    from:
+      uri: "azure-files:{{accountName}}/{{shareName}}/{{directoryName}}"
+      parameters:
+        sharedKey: "{{?sharedKey}}"
+        credentialType: "{{credentialType}}"
+        delay: "{{delay}}"
+        delete: "{{deleteAfterRead}}"
+        recursive: "{{recursive}}"
+      steps:
+        - to: "kamelet:sink"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-queue-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Queue"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Queue Sink"
+    description: |-
+      Send events to Azure Storage queues.
+
+      In the header, you can set the `partition` / `ce-partition` property to determine how long an event remains in the Azure Storage queue. Use `PnDTnHnMn.nS.` format. For example, `PT20.345S` parses as 20.345 seconds and `P2D` parses as 2 days. If you not set the property in the header, the Kamelet uses the default of `P27D` (7 days).
+    required:
+      - accountName
+      - queueName
+      - accessKey
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Queue account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      queueName:
+        title: Queue Name
+        description: The Azure Storage Queue container name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Queue access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  dependencies:
+    - "camel:core"
+    - "camel:azure-storage-queue"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[expiration]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageQueueTimeToLive
+                simple: "${header[expiration]}"
+          - simple: "${header[ce-expiration]}"
+            steps:
+            - setHeader:
+                name: CamelAzureStorageQueueTimeToLive
+                simple: "${header[ce-expiration]}"
+      - to:
+          uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
+          parameters:
+            accessKey: "{{accessKey}}"
+            credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: azure-storage-queue-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Azure Storage Queue"
+    camel.apache.org/kamelet.namespace: "Azure"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Storage Queue Source"
+    description: |-
+      Receive events from Azure Storage queues.
+
+      One header will be duplicated with different names for clarity at sink level, CamelAzureStorageQueueMessageId will be duplicated into azure.storage.queue.message.id
+    required:
+      - accountName
+      - queueName
+      - accessKey
+    type: object
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Queue account name.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      queueName:
+        title: Queue Name
+        description: The Azure Storage Queue container name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The Azure Storage Queue access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      maxMessages:
+        title: Maximum Messages
+        description: The maximum number of messages to get. You can specify a value between 1 and 32. The default is 1 (one message). If there are fewer than the maximum number of messages in the queue, then all the messages are returned.
+        type: integer
+        default: 1
+      credentialType:
+        title: Credential Type
+        description: Determines the credential strategy to adopt.
+        type: string
+        enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
+        default: "SHARED_ACCOUNT_KEY"
+  dataTypes:
+    out:
+      default: text
+      headers:
+        CamelAzureStorageQueueMessageId:
+          title: Azure Storage Queue Message Id
+          description: The id of the message
+          type: string
+        CamelAzureStorageQueueInsertionTime:
+          title: Azure Storage Queue Message Insertion Time
+          description: The time the Message was inserted into the Queue.
+          type: OffsetDateTime
+        CamelAzureStorageQueueExpirationTime:
+          title: Azure Storage Queue Message Expiration Time
+          description: The time that the Message will expire and be automatically deleted.
+          type: OffsetDateTime
+        CamelAzureStorageQueuePopReceipt:
+          title: Pop Receipt
+          description: |-
+            Unique identifier that must match for the message to be deleted or updated. If deletion fails using this pop receipt then the message has been dequeued by another client.
+          type: string
+        CamelAzureStorageQueueTimeNextVisible:
+          title: Azure Storage Queue Message Time Next Visible
+          description: The time that the message will again become visible in the Queue.
+          type: OffsetDateTime
+        CamelAzureStorageQueueDequeueCount:
+          title: Dequeue Count
+          description: The number of times the message has been dequeued
+          type: long
+      types:
+        text:
+          format: "text-plain"
+          description: Default text representation of the Message dequeued from the queue.
+          mediaType: text/plain
+        cloudevents:
+          format: "azure-storage-queue:application-cloudevents"
+          description: |-
+            Output data type represents Azure Storage Queue receive messages operation as CloudEvent V1. The data type sets Camel
+            specific CloudEvent headers on the exchange.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.azure.storage.queue.receiveMessages"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Message Id of the message received with prefix "azure.storage.queue.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. Usually the Pop receipt of the message dequeued.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+    - "camel:azure-storage-queue"
+    - "camel:kamelet"
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+    - "camel:core"
+  template:
+    from:
+      uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
+      parameters:
+        accessKey: "{{accessKey}}"
+        maxMessages: "{{maxMessages}}"
+        credentialType: "{{credentialType}}"
+      steps:
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: beer-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iOTJwdCIgd2lkdGg9IjkycHQiIHZlcnNpb249IjEuMCIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+Cg [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Beers"
+    camel.apache.org/kamelet.namespace: "Dataset"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Beer Source"
+    description: "Produces periodic events about beers!"
+    type: object
+    properties:
+      period:
+        title: Period
+        description: The time interval between two events
+        type: integer
+        default: 5000
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+    - "camel:timer"
+    - "camel:http"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "timer:beer"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - to: https://random-data-api.com/api/beer/random_beer
+      - removeHeaders:
+          pattern: '*'
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: bitcoin-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNjQiIHdpZHRoPSI2NCIgdmVyc2lvbj0iMS4xIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwNjMwODc2LC0wLjAwMzAxOT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Bitcoin"
+    camel.apache.org/kamelet.namespace: "Bitcoin"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Bitcoin Source"
+    description: |-
+      Provides a feed of the value of the Bitcoin compared to USDT using the Binance service.
+    type: object
+    properties:
+      period:
+        title: Period between Updates
+        description: The interval between updates in milliseconds
+        type: integer
+        default: 10000
+  types:
+    out:
+      mediaType: application/json  
+      schema:
+        type: object
+        properties:
+          currencyPair:
+            type: string
+          open:
+            type: number
+          last:
+            type: number
+          bid:
+            type: number
+          ask:
+            type: number
+          high:
+            type: number
+          low:
+            type: number
+          vwap:
+            type: number
+          volume:
+            type: number
+          quoteVolume:
+            type: number
+          bidSize:
+            type: number
+          askSize:
+            type: number
+  dependencies:
+    - "camel:xchange"
+    - "camel:kamelet"
+    - "camel:jackson"
+    - "camel:timer"
+  template:
+    from:
+      uri: "timer:update"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - to: "xchange:binance?service=marketdata&method=ticker&currencyPair=BTC/USDT"
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: caffeine-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9ItCh0LvQvtC5XzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyODEuOCAyNzMuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Caffeine"
+    camel.apache.org/kamelet.namespace: "Cache"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Caffeine Action"
+    description: |-
+      Perform operations on a caffeine cache
+
+      The Kamelet expects the following headers to be set:
+
+      - `caffeine-key` / `ce-caffeinekey`: as the cache key used in the operation
+
+      - `caffeine-operation` / `ce-caffeineoperation`: as the operation to perform. It can be PUT, GET, INVALIDATE and CLEANUP.
+
+      If the caffeine-key header won't be set the exchange ID will be used as key.
+
+      If the caffeine-operation header won't be set, the GET operation will be performed.
+    required:
+      - cacheName
+    type: object
+    properties:
+      cacheName:
+        title: Cache name
+        description: The name of the cache we want to use
+        type: string
+        default: caffeine-cache
+  dependencies:
+    - "camel:core"
+    - "camel:caffeine"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[caffeine-key]}"
+            steps:
+            - setHeader:
+                name: CamelCaffeineKey
+                simple: "${header[caffeine-key]}"
+          - simple: "${header[ce-caffeinekey]}"
+            steps:
+            - setHeader:
+                name: CamelCaffeineKey
+                simple: "${header[ce-caffeinekey]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelCaffeineKey
+                simple: "${body}"
+      - choice:
+          when:
+          - simple: "${header[caffeine-operation]}"
+            steps:
+            - setHeader:
+                name: CamelCaffeineAction
+                simple: "${header[caffeine-operation]}"
+          - simple: "${header[ce-caffeineoperation]}"
+            steps:
+            - setHeader:
+                name: CamelCaffeineAction
+                simple: "${header[ce-caffeineoperation]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: CamelCaffeineAction
+                constant: "GET"
+      - to:
+          uri: "caffeine-cache:{{cacheName}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: cassandra-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Cassandra"
+    camel.apache.org/kamelet.namespace: "Nosql"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Cassandra Sink"
+    description: |-
+      Send data to an Apache Cassandra cluster.
+
+      This Kamelet expects JSON Array formatted data. The content of the JSON Array is used as input for the CQL Prepared Statement set in the query parameter.
+    required:
+      - connectionHost
+      - connectionPort
+      - keyspace
+      - query
+    type: object
+    properties:
+      connectionHost:
+        title: Connection Host
+        description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.
+        type: string
+        example: localhost
+      connectionPort:
+        title: Connection Port
+        description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.
+        type: string
+        example: 9042
+      keyspace:
+        title: Keyspace 
+        description: The keyspace to use.
+        type: string
+        example: customers
+      username:
+        title: Username
+        description: The username for accessing a secured Cassandra cluster.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password for accessing a secured Cassandra cluster.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      consistencyLevel:
+        title: Consistency Level
+        description: The consistency level to use.
+        type: string
+        default: ANY
+        enum: ["ANY", "ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "LOCAL_ONE"]
+      prepareStatements:
+        title: Prepare Statements
+        description: If true, specifies to use PreparedStatements as the query. If false, specifies to use regular Statements as the query.
+        type: boolean
+        default: true
+      query:
+        title: Query
+        description: The query to execute against the Cassandra cluster table.
+        type: string
+      extraTypeCodecs:
+        title: Extra Type Codecs
+        description: To use a specific comma separated list of Extra Type codecs. 
+        type: string
+        enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"]
+  types:
+    in:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:kamelet"
+  - "camel:cassandraql"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - unmarshal:
+          json: 
+            library: Jackson
+            useList: true
+      - to: 
+          uri: "cql://{{connectionHost}}:{{connectionPort}}/{{keyspace}}"
+          parameters:
+            username: "{{?username}}"
+            password: "{{?password}}"
+            prepareStatements: "{{prepareStatements}}"
+            consistencyLevel: "{{consistencyLevel}}"
+            cql: "{{query}}"
+            extraTypeCodecs: "{{?extraTypeCodecs}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: cassandra-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Cassandra"
+    camel.apache.org/kamelet.namespace: "Nosql"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Cassandra Source"
+    description: |-
+      Send a query to an Apache Cassandra cluster table.
+    required:
+      - connectionHost
+      - connectionPort
+      - keyspace
+      - query
+    type: object
+    properties:
+      connectionHost:
+        title: Connection Host
+        description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.
+        type: string
+        example: localhost
+      connectionPort:
+        title: Connection Port
+        description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.
+        type: string
+        example: 9042
+      keyspace:
+        title: Keyspace 
+        description: The keyspace to use.
+        type: string
+        example: customers
+      username:
+        title: Username
+        description: The username for accessing a secured Cassandra cluster.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password for accessing a secured Cassandra cluster.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      resultStrategy:
+        title: Result Strategy
+        description: The strategy to convert the result set of the query. 
+        type: string
+        default: ALL
+        enum: ["ALL", "ONE", "LIMIT_10", "LIMIT_100"]
+      consistencyLevel:
+        title: Consistency Level
+        description: The consistency level to use.
+        type: string
+        default: QUORUM
+        enum: ["ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "SERIAL", "LOCAL_SERIAL", "LOCAL_ONE"]
+      query:
+        title: Query
+        description: The query to execute against the Cassandra cluster table.
+        type: string
+      extraTypeCodecs:
+        title: Extra Type Codecs
+        description: To use a specific comma separated list of Extra Type codecs. 
+        type: string
+        enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"]
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:kamelet"
+  - "camel:cassandraql"
+  template:
+    from:
+      uri: "cql://{{connectionHost}}:{{connectionPort}}/{{keyspace}}"
+      parameters:
+        username: "{{?username}}"
+        password: "{{?password}}"
+        cql: "{{query}}"
+        consistencyLevel: "{{consistencyLevel}}"
+        resultSetConversionStrategy: "{{resultStrategy}}"
+        extraTypeCodecs: "{{?extraTypeCodecs}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: ceph-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Ceph"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Ceph Sink"
+    description: |-
+      Upload data to an Ceph Bucket managed by a Object Storage Gateway.
+
+      In the header, you can optionally set the `file` / `ce-file` property to specify the name of the file to upload.
+
+      If you do not set the property in the header, the Kamelet uses the exchange ID for the file name.
+    required:
+      - cephUrl
+      - accessKey
+      - secretKey
+      - bucketName
+      - zoneGroup
+    type: object
+    properties:
+      bucketName:
+        title: Bucket Name
+        description: The Ceph Bucket name.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      zoneGroup:
+        title: Bucket Zone Group
+        description: The bucket zone group.
+        type: string
+      autoCreateBucket:
+        title: Autocreate Bucket
+        description: Specifies to automatically create the bucket.
+        type: boolean
+        default: false
+      cephUrl:
+        title: Ceph Url Address
+        description: Set the Ceph Object Storage Address Url.
+        type: string
+        example: "http://ceph-storage-address.com"
+      keyName:
+        title: Key Name
+        description: The key name for saving an element in the bucket.
+        type: string
+  dependencies:
+    - "camel:core"
+    - "camel:aws2-s3"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelAwsS3Key
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelAwsS3Key
+                simple: "${header[ce-file]}"
+          - simple: "'{{?keyName}}' == ''"
+            steps:
+            - setHeader:
+                name: CamelAwsS3Key
+                simple: "${exchangeId}"
+      - to:
+          uri: "aws2-s3:{{bucketName}}"
+          parameters:
+            secretKey: "{{?secretKey}}"
+            accessKey: "{{?accessKey}}"
+            region: "{{zoneGroup}}"
+            autoCreateBucket: "{{autoCreateBucket}}"
+            uriEndpointOverride: "{{?cephUrl}}"
+            overrideEndpoint: "true"
+            keyName: "{{?keyName}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: ceph-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Ceph"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Ceph Source"
+    description: |-
+      Receive data from an Ceph Bucket, managed by a Object Storage Gateway.
+
+    required:
+      - cephUrl
+      - accessKey
+      - secretKey
+      - bucketName
+      - zoneGroup
+    type: object
+    properties:
+      bucketName:
+        title: Bucket Name
+        description: The Ceph Bucket name.
+        type: string
+      deleteAfterRead:
+        title: Auto-delete Objects
+        description: Specifies to delete objects after consuming them.
+        type: boolean
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      secretKey:
+        title: Secret Key
+        description: The secret key.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      zoneGroup:
+        title: Bucket Zone Group
+        description: The bucket zone group.
+        type: string
+      autoCreateBucket:
+        title: Autocreate Bucket
+        description: Specifies to automatically create the bucket.
+        type: boolean
+        default: false
+      includeBody:
+        title: Include Body
+        description: If true, the exchange is consumed and put into the body and closed. If false, the Object stream is put raw into the body and the headers are set with the object metadata.
+        type: boolean
+        default: true
+      prefix:
+        title: Prefix
+        description: The bucket prefix to consider while searching.
+        type: string
+        example: 'folder/'
+      ignoreBody:
+        title: Ignore Body
+        description: If true, the Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the object is put in the body.
+        type: boolean
+        default: false
+      cephUrl:
+        title: Ceph Url Address
+        description: Set the Ceph Object Storage Address Url.
+        type: string
+        example: "http://ceph-storage-address.com"
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll of the selected bucket.
+        type: integer
+        default: 500
+  dependencies:
+    - "camel:aws2-s3"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "aws2-s3:{{bucketName}}"
+      parameters:
+        autoCreateBucket: "{{autoCreateBucket}}"
+        secretKey: "{{?secretKey}}"
+        accessKey: "{{?accessKey}}"
+        region: "{{zoneGroup}}"
+        includeBody: "{{includeBody}}"
+        ignoreBody: "{{ignoreBody}}"
+        deleteAfterRead: "{{deleteAfterRead}}"
+        prefix: "{{?prefix}}"
+        uriEndpointOverride: "{{cephUrl}}"
+        overrideEndpoint: "true"
+        delay: "{{delay}}"
+      steps:
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: chuck-norris-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDA [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Chuck Norris"
+    camel.apache.org/kamelet.namespace: "Dataset"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Chuck Norris Source"
+    description: |-
+      Gets periodically Chuck Norris jokes
+    type: object
+    properties:
+      period:
+        title: Period
+        description: The interval (msec) to wait before getting the next joke
+        type: integer
+        default: 10000
+  types:
+    out:
+      mediaType: text/plain
+  dependencies:
+    - "camel:kamelet"
+    - "camel:timer"
+    - "camel:http"
+    - "camel:jsonpath"
+  template:
+    from:
+      uri: "timer:chuck"
+      parameters:
+        period: "{{period}}"
+      steps:
+        - to: "https://api.chucknorris.io/jokes/random"
+        - removeHeaders:
+            pattern: '*'
+        - setBody:
+            jsonpath: "$.value"
+        - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: chunk-template-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Chunk Template Action"
+    description: |-
+      Apply a Chunk Template.
+
+      The template property needs to be encoded in base64, so when you pass it as parameter, don't forget to encode it.
+    required:
+      - template
+    type: object
+    properties:
+      template:
+        title: Template
+        description: The inline template
+        type: binary
+  dependencies:
+  - "camel:chunk"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "chunk:"
+          parameters:
+            resourceUri: "base64:{{template}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: coffee-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iOTJwdCIgd2lkdGg9IjkycHQiIHZlcnNpb249IjEuMCIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+Cg [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Coffees"
+    camel.apache.org/kamelet.namespace: "Dataset"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Coffee Source"
+    description: "Produces periodic events about coffees!"
+    type: object
+    properties:
+      period:
+        title: Period
+        description: The time interval between two events
+        type: integer
+        default: 5000
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+    - "camel:timer"
+    - "camel:http"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "timer:coffee"
+      parameters:
+        period: "{{period}}"
+      steps:
+        - to: https://random-data-api.com/api/coffee/random_coffee
+        - removeHeaders:
+            pattern: '*'
+        - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: couchbase-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNjguMzQzIDY4LjM0MyIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHVzZSB4bGluazpocmVmPSIjQSIgeD0iMi4xNzEiIHk9IjIuMTcxIi8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGQ9Ik0zMi4wMDIgMEMxNC4zMzEuMDAyLjAwNSAxNC4zMjYgMC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Couchbase"
+    camel.apache.org/kamelet.namespace: "Nosql"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Couchbase Sink"
+    description: |-
+      Send documents to Couchbase.
+    required:
+      - protocol
+      - couchbaseHostname
+      - bucket
+    type: object
+    properties:
+      protocol:
+        title: Protocol
+        description: The protocol to use
+        type: string
+      couchbaseHostname:
+        title: Hostname
+        description: The hostname to use
+        type: string
+      couchbasePort:
+        title: Port
+        description: The port to use
+        type: integer
+        default: 8091
+      bucket:
+        title: Bucket
+        description: The bucket to use
+        type: string
+      username:
+        title: Username
+        description: Username to connect to Couchbase.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: Password to connect to Couchbase.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      startingId:
+        title: Starting Id
+        description: The starting id
+        type: integer
+        default: 1
+      autoStartId:
+        title: Auto Start Id
+        description: Auto Start Id or not
+        type: boolean
+        default: true
+  dependencies:
+    - "camel:couchbase"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "couchbase:{{protocol}}://{{couchbaseHostname}}:{{couchbasePort}}"
+          parameters:
+            bucket: "{{bucket}}"
+            autoStartIdForInserts: "{{autoStartId}}"
+            startingIdForInsertsFrom: "{{startingId}}"
+            username: "{{username}}"
+            password: "{{password}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: cron-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAxOTIuNzU2IDE5Mi43NTYiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDE5Mi43NTZ2MTkyLjc1NkgwVjB6Ii8+PHBhdGggZD0iTTQyLjE2IDEwMy4wNzJsNS45MDEgMS40OTZjLTEuMjQyIDQuODY1LTMuNDc2IDguNTc0LTYuNzAxIDExLjEyOXMtNy4xNjcgMy44MzItMTEuODI2IDMuODMyYy00LjgyMyAwLTguNzQ2LS45ODItMTEuNzY3LTIuOTQ3LT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Cron"
+    camel.apache.org/kamelet.namespace: "Scheduling"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Cron Source"
+    description: |-
+      Send events at specific time.
+    required:
+      - schedule
+      - message
+    type: object
+    properties:
+      schedule:
+        title: Cron Schedule
+        description: A cron expression that will be used to trigger events generation.
+        type: string
+        example: "0/3 10 * * * ?"
+      message:
+        title: Message
+        description: The message to generate
+        type: string
+        example: hello world
+  types:
+    out:
+      mediaType: text/plain
+  dependencies:
+  - "camel:quartz"
+  - "camel:core"
+  - "camel:cron"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "cron:tick"
+      parameters:
+        schedule: "{{schedule}}"
+      steps:
+      - setBody:
+          constant: "{{message}}"
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: data-type-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Data Type Action"
+    description: |-
+      Applies a given data type with respective data transformation.
+    required:
+      - format
+    type: object
+    properties:
+      scheme:
+        title: Component Scheme
+        description: The data type component scheme enables users to apply Camel component specific data type conversions.
+        type: string
+      format:
+        title: Data Type Format
+        description: Defines the data type that will be applied by this action. Apache Camel and the Kamelet catalog support different data types and performs automatic message conversion according to the given type.
+        type: string
+  dependencies:
+    - "camel:kamelet"
+    - "camel:core"
+  template:
+    beans:
+      - name: dataTypeProcessor
+        type: "#class:org.apache.camel.processor.transformer.DataTypeProcessor"
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "'{{?scheme}}' != ''"
+            steps:
+            - setProperty:
+                name: CamelDataType
+                simple: "{{?scheme}}:{{format}}"
+          otherwise:
+            steps:
+            - setProperty:
+                name: CamelDataType
+                simple: "{{format}}"
+      - bean:
+          ref: "{{dataTypeProcessor}}"
+          method: process
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: delay-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg4IDEwMC42IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjIuODggMTAwLjYiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiMyNzI3Mjc7fSAuc3Qxe2ZpbGwtcnVsZTpldmVub2 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Delay"
+    camel.apache.org/kamelet.namespace: "EIP"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Delay Action"
+    description: |-
+      Delay the processing using a specific amount of time
+    required:
+      - milliseconds
+    type: object
+    properties:
+      milliseconds:
+        title: Milliseconds
+        description: The number of milliseconds of delay
+        type: integer
+        example: 1000
+  dependencies:
+  - "camel:core"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - delay:
+          constant: "{{milliseconds}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: dns-dig-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "DNS"
+    camel.apache.org/kamelet.namespace: "Networking"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "DNS DIG Action"
+    description: |-
+      Query a DNS through Dig
+
+      The Kamelet expects the following headers to be set:
+
+      - `domain-name` / `ce-domainname`: as the domain for which we are querying the DNS
+
+      - `dns-type` / `ce-dnstype`: as the DNS type
+
+      If the domain-name header won't be set the body will be used as domain name.
+
+      If the dns-type header won't be set, the DNS Type A will be used.
+    type: object
+  dependencies:
+    - "camel:core"
+    - "camel:dns"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[domain-name]}"
+            steps:
+            - setHeader:
+                name: dns.name
+                simple: "${header[domain-name]}"
+          - simple: "${header[ce-domainname]}"
+            steps:
+            - setHeader:
+                name: dns.name
+                simple: "${header[ce-domainname]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: dns.name
+                simple: "${body}"
+      - choice:
+          when:
+          - simple: "${header[dns-type]}"
+            steps:
+            - setHeader:
+                name: dns.type
+                simple: "${header[dns-type]}"
+          - simple: "${header[ce-dnstype]}"
+            steps:
+            - setHeader:
+                name: dns.type
+                simple: "${header[ce-dnstype]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: dns.type
+                constant: "A"
+      - to:
+          uri: "dns:dig"
+      - convertBodyTo:
+          type: "java.lang.String"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: dns-ip-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "DNS"
+    camel.apache.org/kamelet.namespace: "Networking"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "DNS IP Action"
+    description: |-
+      Get an IP from a DNS
+
+      The Kamelet expects the following headers to be set:
+
+      - `domain` / `ce-domain`: as the domain for which we are looking for the IP
+
+      If the header won't be set the body will be used as domain to look for.
+    type: object
+  dependencies:
+    - "camel:core"
+    - "camel:dns"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[domain]}"
+            steps:
+            - setHeader:
+                name: dns.domain
+                simple: "${header[domain]}"
+          - simple: "${header[ce-domain]}"
+            steps:
+            - setHeader:
+                name: dns.domain
+                simple: "${header[ce-domain]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: dns.domain
+                simple: "${body}"
+      - to:
+          uri: "dns:ip"
+      - convertBodyTo:
+          type: "java.lang.String"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: dns-lookup-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "DNS"
+    camel.apache.org/kamelet.namespace: "Networking"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "DNS Lookup Action"
+    description: |-
+      Lookup for a domain
+
+      The Kamelet expects the following headers to be set:
+
+      - `domain-name` / `ce-domainname`: as the domain for which we are looking up
+
+      If the domain-name header won't be set the body will be used as domain name.
+    type: object
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+    - "camel:core"
+    - "camel:jackson"
+    - "camel:dns"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[domain-name]}"
+            steps:
+            - setHeader:
+                name: dns.domain
+                simple: "${header[domain-name]}"
+          - simple: "${header[ce-domainname]}"
+            steps:
+            - setHeader:
+                name: dns.domain
+                simple: "${header[ce-domainname]}"
+          otherwise:
+            steps:
+            - setHeader:
+                name: dns.domain
+                simple: "${body}"
+      - to:
+          uri: "dns:lookup"
+      - marshal:
+          json: {}
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: drop-field-action
+  labels:
+    camel.apache.org/kamelet.type: "action"
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+spec:
+  definition:
+    title: "Drop Field Action"
+    description: |-
+      Removes a custom field by given name from the message in transit.
+
+      The drop field action expects an application/json content type.
+
+      If for example you have an object like '{ "foo":"John", "bar":30, "element":"hello" }' and your action has been configured with field as 'element', you'll get '{ "foo":"John", "bar":30 }' as a result because the field 'element' has been removed.
+    required:
+      - field
+    properties:
+      field:
+        title: Field
+        description: The name of the field to be removed
+        type: string
+    type: object
+  dependencies:
+  - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+  - "camel:core"
+  - "camel:jackson"
+  - "camel:kamelet"
+  template:
+    beans:
+      - name: dropField
+        type: "#class:org.apache.camel.kamelets.utils.transform.DropField"
+        properties:
+          field: '{{field}}'
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[Content-Type]} == 'application/json'"
+            steps:
+            - setProperty:
+                name: deserialized
+                constant: "true"
+            - unmarshal:
+                json:
+                  library: Jackson
+                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
+      - process:
+          ref: "{{dropField}}"
+      - choice:
+          when:
+          - simple: "${exchangeProperty[deserialized]} == 'true'"
+            steps:
+            - marshal:
+                json:
+                  library: Jackson
+                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
+            - setHeader:
+                name: "Content-Type"
+                constant: "application/json"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: drop-header-action
+  labels:
+    camel.apache.org/kamelet.type: "action"
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "EIP"
+spec:
+  definition:
+    title: "Drop Header Action"
+    description: "Remove an header from the message in transit"
+    required:
+      - name
+    properties:
+      name:
+        title: Name
+        description: The name of the header to be removed
+        type: string
+        example: headername
+    type: object
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - removeHeader:
+          name: "{{name}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: drop-headers-action
+  labels:
+    camel.apache.org/kamelet.type: "action"
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "EIP"
+spec:
+  definition:
+    title: "Drop Headers Action"
+    description: "Remove headers from the message in transit based on a pattern"
+    required:
+      - pattern
+    properties:
+      pattern:
+        title: Pattern
+        description: Name or pattern of headers to remove. The pattern is matched in the following order, 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).
+        type: string
+        example: Camel*
+      excludePattern:
+        title: Exclusion Pattern
+        description: Name or pattern of headers to not remove. The pattern is matched in the following order, 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).
+        type: string
+        example: Camel*
+    type: object
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - removeHeaders:
+          pattern: "{{pattern}}"
+          excludePattern: "{{?excludePattern}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: dropbox-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Dropbox"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Dropbox Sink"
+    description: |-
+      Upload Files to Dropbox.
+
+      The Kamelet expects the following headers to be set:
+
+      - `file` / `ce-file`: as the file name to upload
+
+      If the header won't be set the exchange ID will be used as file name.
+    required:
+      - accessToken
+      - clientIdentifier
+      - remotePath
+      - uploadMode
+    type: object
+    properties:
+      accessToken:
+        title: Dropbox Access Token
+        description: The access Token to use to access Dropbox
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientIdentifier:
+        title: Client Identifier
+        description: Dropbox App client Identifier
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      remotePath:
+        title: Remote Path
+        description: Original file or folder to work with
+        type: string
+      uploadMode:
+        title: Upload Mode
+        description: Which mode to upload. in case of add the new file will be renamed if a file with the same name already exists on dropbox. in case of force if a file with the same name already exists on dropbox, this will be overwritten. The value can be one of add, force.
+        type: string
+        default: add
+  dependencies:
+    - "camel:core"
+    - "camel:dropbox"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelDropboxPutFileName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelDropboxPutFileName
+                simple: "${header[ce-file]}"
+      - to:
+          uri: 'dropbox:put'
+          parameters:
+            accessToken: '{{accessToken}}'
+            remotePath: '{{remotePath}}'
+            clientIdentifier: '{{clientIdentifier}}'
+            uploadMode: '{{uploadMode}}'
+
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: dropbox-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Dropbox"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Dropbox Source"
+    description: |-
+      Consume Files from Dropbox.
+    required:
+      - period
+      - accessToken
+      - clientIdentifier
+      - remotePath
+      - query
+    type: object
+    properties:
+      period:
+        title: Period between Polls
+        description: The interval between fetches to the Dropbox remote path in milliseconds
+        type: integer
+        default: 10000
+      accessToken:
+        title: Dropbox Access Token
+        description: The access Token to use to access Dropbox
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientIdentifier:
+        title: Client Identifier
+        description: Dropbox App client Identifier
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      remotePath:
+        title: Remote Path
+        description: Original file or folder to work with
+        type: string
+      query:
+        title: Queries
+        description: A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files will be matched.
+        type: string
+  dependencies:
+    - "camel:dropbox"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:jsonpath"
+    - "camel:timer"
+  template:
+    from:
+      uri: "timer:dropbox-stream"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - to:
+          uri: "dropbox:search"
+          parameters:
+            accessToken: "{{accessToken}}"
+            remotePath: "{{remotePath}}"
+            clientIdentifier: "{{clientIdentifier}}"
+            query: "{{query}}"
+      - split:
+          jsonpath: "$.*"
+          steps:
+          - setProperty:
+              name: dropboxFileName
+              simple: ${body.metadata.pathDisplay}
+          - toD: "dropbox:get?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
+          - to: "kamelet:sink"
+          - toD: "dropbox:del?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
+
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: earthquake-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwLjAwMyA3OS45OTciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMC4wMDMgNzkuOTk3IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNODEuNjUzLDQyLjk0Yy0xLjM4NywwLTIuNjY2LDAuNzY3LTMuMzE1LDEuOTkyTDcyLjk0Miw1NS4xbC02Lj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Earthquake"
+    camel.apache.org/kamelet.namespace: "Dataset"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.verified: "true"
+spec:
+  definition:
+    title: Earthquake Source
+    description: |-
+      Get data about current earthquake events happening in the world using the USGS API
+    type: object
+    properties:
+      period:
+        title: Period between Polls
+        description: The interval between fetches to the earthquake API in milliseconds
+        type: integer
+        default: 60000
+      lookAhead:
+        title: Look-ahead Minutes
+        description: The amount of minutes to look ahead when starting the integration afresh
+        type: integer
+        default: 120
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+    - "camel:caffeine"
+    - "camel:http"
+    - "camel:kamelet"
+    - "camel:core"
+    - "camel:jackson"
+    - "camel:jsonpath"
+    - "camel:timer"
+  template:
+    from:
+      uri: "timer:earthquake"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - setHeader:
+          name: CamelCaffeineAction
+          constant: GET
+      - toD: "caffeine-cache:cache-${routeId}?key=lastUpdate"
+      - choice:
+          when:
+          - simple: "${header.CamelCaffeineActionHasResult}"
+            steps:
+            - setProperty:
+                name: lastUpdate
+                simple: "${body}"
+          otherwise:
+            steps:
+            - setProperty:
+                name: lastUpdate
+                simple: "${date-with-timezone:now-{{lookAhead}}m:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
+      - setHeader:
+          name: CamelHttpMethod
+          constant: GET
+      - toD: "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&updatedafter=${exchangeProperty.lastUpdate}&orderby=time-asc"
+      - removeHeader:
+          name: CamelHttpMethod
+      - unmarshal:
+          json: {}
+      - setProperty:
+          name: generated
+          simple: "${body[metadata][generated]}"
+      - setProperty:
+          name: lastUpdate
+          simple: "${date-with-timezone:exchangeProperty.generated:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
+      - claimCheck:
+          operation: Push
+      - setBody:
+          exchange-property: lastUpdate
+      - setHeader:
+          name: CamelCaffeineAction
+          constant: PUT
+      - toD: "caffeine-cache:cache-${routeId}?key=lastUpdate"
+      - claimCheck:
+          operation: Pop
+      - split:
+          jsonpath: "$.features[*]"
+          steps:
+            - marshal:
+                json: {}
+            - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: elasticsearch-index-sink
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.group: "ElasticSearch"
+    camel.apache.org/kamelet.namespace: "Search"
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2Lj [...]
+spec:
+  definition:
+    title: "ElasticSearch Index Sink"
+    description: |-
+      Stores JSON-formatted data into ElasticSearch.
+
+      The input data must be formatted in JSON according to the requirements of the index. 
+
+      If you specify the `certificate` property, you must base64 encode it before you pass it as a parameter.
+      
+      In the header, you can set the following properties:
+
+      - `indexId` / `ce-indexid`: The index ID for ElasticSearch.
+      
+      - `indexName` / `ce-indexname`: The index name for ElasticSearch.
+      
+      If you do not set a property in the header, the Kamelet uses the exchange ID for the index setting.
+    required:
+      - clusterName
+      - hostAddresses
+    type: object
+    properties:
+      user:
+        title: Username
+        description: The username to connect to ElasticSearch.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to connect to ElasticSearch.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      enableSSL:
+        title: Enable SSL
+        description: Specifies to connect by using SSL.
+        type: boolean
+        default: true
+      hostAddresses:
+        title: Host Addresses
+        description: A comma-separated list of remote transport addresses in `ip:port format`.
+        type: string
+        example: quickstart-es-http:9200
+      clusterName:
+        title: ElasticSearch Cluster Name
+        description: The name of the ElasticSearch cluster.
+        type: string
+        example: quickstart
+      indexName:
+        title: Index in ElasticSearch
+        description: The name of the ElasticSearch index.
+        type: string
+        example: data
+      certificate:
+        title: Certificate 
+        description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.
+        type: string
+  types:
+    out:
+      mediaType: text/plain
+    in:
+      mediaType: application/json
+  dependencies:
+    - "camel:core"
+    - "camel:jackson"
+    - "camel:kamelet"
+    - "camel:elasticsearch"
+    - "camel:gson"
+    - "camel:bean"
+  template:
+    beans:
+      - name: local-es
+        type: "#class:org.apache.camel.component.es.ElasticsearchComponent"
+        properties:
+            user: "{{?user}}"
+            password: "{{?password}}"
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[indexId]}"
+            steps:
+            - setHeader:
+                name: "indexId"
+                simple: "${header[indexId]}"
+          - simple: "${header[ce-indexid]}"
+            steps:
+            - setHeader:
+                name: "indexId"
+                simple: "${header[ce-indexid]}"
+      - choice:
+          when:
+          - simple: "${header[indexName]}"
+            steps:
+            - setHeader:
+                name: "indexName"
+                simple: "${header[indexName]}"
+          - simple: "${header[ce-indexname]}"
+            steps:
+            - setHeader:
+                name: "indexName"
+                simple: "${header[ce-indexname]}"
+      - unmarshal:
+          json: {}
+      - to:
+          uri: "{{local-es}}:{{clusterName}}"
+          parameters:
+            operation: "INDEX"
+            hostAddresses: "{{hostAddresses}}"
+            enableSSL: "{{enableSSL}}"
+            indexName: "{{?indexName}}"
+            certificatePath: "base64:{{?certificate}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: elasticsearch-search-source
+  labels:
+    camel.apache.org/kamelet.type: "source"
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.group: "ElasticSearch"
+    camel.apache.org/kamelet.namespace: "Search"
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2Lj [...]
+spec:
+  definition:
+    title: "ElasticSearch Search Source"
+    description: |-
+      Search data on ElasticSearch
+      
+      The `query` parameter must be formatted in JSON.
+
+      If you specify the `certificate` property, you must base64 encode it before you pass it as a parameter.
+    required:
+      - query
+      - clusterName
+      - indexName
+      - hostAddresses
+    type: object
+    properties:
+      period:
+        title: Period
+        description: The time interval between two searches
+        type: integer
+        default: 1000
+      query:
+        title: Query
+        description: The query we want to use to search on ElasticSearch.
+        type: string
+      user:
+        title: Username
+        description: Username to connect to ElasticSearch.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: Password to connect to ElasticSearch.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      enableSSL:
+        title: Enable SSL
+        description: Do we want to connect using SSL?
+        type: boolean
+        default: true
+      hostAddresses:
+        title: Host Addresses
+        description: Comma separated list with ip:port formatted remote transport addresses to use.
+        type: string
+      indexName:
+        title: Index in ElasticSearch
+        description: The name of the index to act against.
+        type: string
+      clusterName:
+        title: ElasticSearch Cluster Name
+        description: The name of the cluster.
+        type: string
+      certificate:
+        title: Certificate 
+        description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.
+        type: string
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+      - "camel:core"
+      - "camel:kamelet"
+      - "camel:timer"
+      - "camel:elasticsearch"
+      - "camel:gson"
+  template:
+    beans:
+      - name: local-es
+        type: "#class:org.apache.camel.component.es.ElasticsearchComponent"
+        properties:
+            user: "{{?user}}"
+            password: "{{?password}}"
+    from:
+      uri: timer:tick
+      parameters:
+        period: "{{period}}"
+      steps:
+        - setBody:
+            constant: "{{query?nested=false}}"
+        - to:
+            uri: "{{local-es}}:{{clusterName}}"
+            parameters:
+              operation: "SEARCH"
+              indexName: "{{indexName}}"
+              hostAddresses: "{{hostAddresses}}"
+              enableSSL: "{{enableSSL}}"
+              certificatePath: "base64:{{?certificate}}"
+        - marshal:
+            json:
+              library: Gson
+        - to: kamelet:sink
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: exec-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMTI4MC4wMDAwMDBwdCIgaGVpZ2h0PSIxMDEyLjAwMDAwMHB0IiB2aWV3Qm94PSIwIDAgMTI4MC4wMDAwMDAgMTAxMi4wMDAwMDAiCiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZW [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Exec"
+    camel.apache.org/kamelet.namespace: "System"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: Exec Sink
+    description: |-
+      Execute system commands
+
+      The Kamelet expects the following headers to be set:
+
+      - `args` / `ce-args`: as the args to be set on the executable.
+
+      If the header won't be set the executable will be run without arguments.
+    required:
+    - executable
+    type: object
+    properties:
+      executable:
+        title: Executable Command
+        description: The command to execute
+        type: string
+  dependencies:
+    - "camel:core"
+    - "camel:exec"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[args]}"
+            steps:
+            - setHeader:
+                name: CamelExecCommandArgs
+                simple: "${header[args]}"
+          - simple: "${header[ce-args]}"
+            steps:
+            - setHeader:
+                name: CamelExecCommandArgs
+                simple: "${header[ce-args]}"
+      - to:
+          uri: "exec:{{executable}}"
+      - setBody:
+          simple: "${body.stdout}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: extract-field-action
+  labels:
+    camel.apache.org/kamelet.type: "action"
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+spec:
+  definition:
+    title: "Extract Field Action"
+    description: |-
+      Extract a field from the message body.
+
+      The extract field action expects an application/json content type.
+
+      The field parameter allows you to specify which field of the json the user wants to extract. By default the message body will be overriden with the extracted field.
+
+      The optional parameter headerOutput allows the user to specify wheter the extracted field should be stored in a message header named 'CamelKameletsExtractFieldName', leaving the message body untouched.
+
+      The optional parameter headerOutputName allows the user to specify a custom header name instead of the default 'CamelKameletsExtractFieldName'. This parameter must be used in conjunction with headerOutput.
+      If no headerOutputName parameter will be provided, the default 'CamelKameletsExtractFieldName' will be used.
+
+      The optional parameter strictHeaderCheck allows to user to enable a strict header name check. If enabled the action will check if the header output name (custom or default) has been used already in the     exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default).
+
+      The headerOutput/headerOutputName/strictHeaderCheck parameters are particulary useful in case you would like to reuse an extracted field as parameter for another header, for example.
+    required:
+      - field
+    properties:
+      field:
+        title: Field
+        description: The name of the field to extract
+        type: string
+      headerOutput:
+        title: Header Output
+        description: If enable the action will store the extracted field in an header named CamelKameletsExtractFieldName
+        type: boolean
+        default: false
+      headerOutputName:
+        title: Header Output Name
+        description: A custom name for the header containing the extracted field
+        default: "none"
+        type: string
+      strictHeaderCheck:
+        title: Strict Header Check
+        description: If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default).
+        type: boolean
+        default: false
+      trimField:
+        title: Trim Field
+        description: If enabled we return the Raw extracted field
+        type: boolean
+        default: false
+    type: object
+  dependencies:
+  - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson"
+  template:
+    beans:
+      - name: extractField
+        type: "#class:org.apache.camel.kamelets.utils.transform.ExtractField"
+        properties:
+          field: '{{field}}'
+          headerOutput: '{{headerOutput}}'
+          headerOutputName: '{{headerOutputName}}'
+          strictHeaderCheck: '{{strictHeaderCheck}}'
+          trimField: '{{trimField}}'
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[Content-Type]} == 'application/json'"
+            steps:
+            - setProperty:
+                name: deserialized
+                constant: "true"
+            - unmarshal:
+                json:
+                  library: Jackson
+                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
+      - process:
+          ref: "{{extractField}}"
+      - choice:
+          when:
+          - simple: "${exchangeProperty[trimField]} == 'false'"
+            steps:
+            - choice:
+                when:
+                - simple: "${exchangeProperty[deserialized]} == 'true'"
+                  steps:
+                  - marshal:
+                      json:
+                        library: Jackson
+                        unmarshalType: com.fasterxml.jackson.databind.JsonNode
+                  - setHeader:
+                      name: "Content-Type"
+                      constant: "application/json"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: fhir-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "FHIR"
+    camel.apache.org/kamelet.namespace: "API"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: FHIR Sink
+    description: |-
+      Forward data to a Fhir endpoint.
+    required:
+    - serverUrl
+    - methodName
+    type: object
+    properties:
+      apiName:
+        title: API Name
+        description: "What kind of operation to perform"
+        type: string
+        enum:  ["CAPABILITIES", "CREATE", "DELETE", "HISTORY", "LOAD_PAGE", "META", "OPERATION", "PATCH", "READ", "SEARCH", "TRANSACTION", "UPDATE", "VALIDATE"]
+      methodName:
+        title: Method Name
+        description: "What sub operation to use for the selected operation."
+        type: string
+      encoding:
+        title: Encoding
+        description: "Encoding to use for all request. One of: [JSON] [XML]."
+        type: string
+        default: "JSON"
+      fhirVersion:
+        title: Fhir Version
+        description: "The FHIR Version to use."
+        type: string
+        enum:  ["DSTU2", "DSTU2_HL7ORG", "DSTU2_1", "DSTU3", "R4", "R5"]
+        default: "R4"
+      log:
+        title: Log
+        description: "Will log every requests and responses."
+        type: boolean
+        default: false
+      prettyPrint:
+        title: Pretty Print
+        description: "Pretty print all request."
+        type: boolean
+        default: false
+      serverUrl:
+        title: Server URL
+        description: The FHIR server base URL.
+        type: string
+      lazyStartProducer:
+        title: Lazy Start Producer
+        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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the [...]
+        type: boolean
+        default: false
+      proxyHost:
+        title: Proxy Host
+        description: The proxy host.
+        type: string
+      proxyPassword:
+        title: Proxy Password
+        description: The proxy password.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      proxyPort:
+        title: Proxy Port
+        description: The proxy port.
+        type: integer
+      proxyUser:
+        title: Proxy User
+        description: The proxy username.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      accessToken:
+        title: Access Token
+        description: OAuth access token.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      username:
+        title: Username
+        description: Username to use for basic authentication.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: Password to use for basic authentication.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+  dependencies:
+  - "camel:fhir"
+  - "camel:core"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          precondition: true
+          when:
+            - simple: "${properties:encoding} =~ 'JSON'"
+              steps:
+                - unmarshal:
+                    fhirJson:
+                      fhirVersion: "{{fhirVersion}}"
+                      prettyPrint: "{{prettyPrint}}"
+            - simple: "${properties:encoding} =~ 'XML'"
+              steps:
+                - unmarshal:
+                    fhirXml:
+                      fhirVersion: "{{fhirVersion}}"
+                      prettyPrint: "{{prettyPrint}}"
+      - to:
+          uri: "fhir://{{apiName}}/{{methodName}}"
+          parameters:
+            serverUrl: "{{serverUrl}}"
+            inBody: "resource"
+            encoding: "{{encoding}}"
+            fhirVersion: "{{fhirVersion}}"
+            log: "{{log}}"
+            prettyPrint: "{{prettyPrint}}"
+            lazyStartProducer: "{{lazyStartProducer}}"
+            proxyHost: "{{?proxyHost}}"
+            proxyPassword: "{{?proxyPassword}}"
+            proxyPort: "{{?proxyPort}}"
+            proxyUser: "{{?proxyUser}}"
+            accessToken: "{{?accessToken}}"
+            username: "{{?username}}"
+            password: "{{?password}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: fhir-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "FHIR"
+    camel.apache.org/kamelet.namespace: "API"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Fhir Source"
+    description: |-
+      Receive data from Fhir server.
+    required:
+      - serverUrl
+      - username
+      - password
+    type: object
+    properties:
+      serverUrl:
+        title: Server URL
+        description: The Fhir server url
+        type: string
+      url:
+        title: URL
+        description: The Fhir resource type url
+        type: string
+        default: "/Patient"
+      encoding:
+        title: Encoding
+        description: Encoding to use for all request. 
+        type: string
+        default: "JSON"
+        enum: ["JSON", "XML"]
+      fhirVersion:
+        title: Fhir Version
+        description: The FHIR Version to use.
+        type: string
+        default: "R4"
+        enum: ["DSTU2", "DSTU2_HL7ORG", "DSTU2_1", "DSTU3", "R4", "R5"]
+      username:
+        title: Username
+        description: The username to access the Fhir server
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access the Fhir server
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      prettyPrint:
+        title: Json Pretty Print
+        description: Define if the Json must be pretty print or not
+        type: boolean
+        default: true
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+    - "camel:fhir"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "fhir://search/searchByUrl"
+      parameters:
+        serverUrl: "{{serverUrl}}"
+        url: "{{url}}"
+        encoding: "{{encoding}}"
+        fhirVersion: "{{fhirVersion}}"
+        prettyPrint: "{{prettyPrint}}"
+        username: "{{username}}"
+        password: "{{password}}"
+      steps:
+      - marshal:
+          fhirJson:
+            fhirVersion: "{{fhirVersion}}"
+            prettyPrint: "{{prettyPrint}}" 
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: file-watch-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzY4LjU1MyAzNjguNTUzIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bm [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "File Watch"
+    camel.apache.org/kamelet.namespace: "File"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "File Watch Source"
+    description: |-
+      Receive events related to a file or folder. It may require a volume mounting on Kubernetes.
+    required:
+      - filePath
+      - events
+    type: object
+    properties:
+      filePath:
+        title: Path to Watch
+        description: Path of file or folder to watch
+        type: string
+      events:
+        title: Events
+        description: The type of events to consume
+        type: string
+        default: "CREATE,MODIFY,DELETE"
+  dependencies:
+    - "camel:file-watch"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "file-watch:{{filePath}}"
+      parameters:
+        events: "{{events}}"
+      steps:
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: freemarker-template-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+    camel.apache.org/kamelet.namespace: "Transformation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Freemarker Template Action"
+    description: |-
+      Apply a Freemarker Template.
+    required:
+      - template
+    type: object
+    properties:
+      template:
+        title: Template
+        description: The inline template
+        type: string
+        example: "file:////template.ftl"
+        pattern: "^(http|https|file|classpath)://.*"
+  dependencies:
+  - "camel:freemarker"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "freemarker:"
+          parameters:
+            resourceUri: "{{template}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: ftp-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "FTP"
+    camel.apache.org/kamelet.namespace: "File"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "FTP Sink"
+    description: |-
+      Send data to an FTP server.
+      
+      In the header, you can set the `file` / `ce-file` property to specify the filename to upload.
+
+      If you do not set the property in the header, the Kamelet uses the exchange ID for the filename.
+    required:
+      - connectionHost
+      - connectionPort
+      - username
+      - password
+      - directoryName
+    type: object
+    properties:
+      connectionHost:
+        title: Connection Host
+        description: The hostname of the FTP server.
+        type: string
+      connectionPort:
+        title: Connection Port
+        description: The port of the FTP server.
+        type: string
+        default: 21
+      username:
+        title: Username
+        description: The username to access the FTP server.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access the FTP server.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      directoryName:
+        title: Directory Name
+        description: The starting directory.
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Specifies to use passive mode connection.
+        type: boolean
+        default: false
+      fileExist:
+        title: File Existence
+        description: How to behave in case of file already existent.
+        type: string
+        default: Override
+        enum: ["Override", "Append", "Fail", "Ignore"]
+      binary:
+        title: Binary
+        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+        type: boolean
+        default: false
+      autoCreate:
+        title: Autocreate Missing Directories
+        description: Automatically create the directory the files should be written to.
+        type: boolean
+        default: true
+  dependencies:
+    - "camel:ftp"
+    - "camel:core"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${header[ce-file]}"
+      - to:
+          uri: "ftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+          parameters:
+            password: "{{password}}"
+            passiveMode: "{{passiveMode}}"
+            fileExist: "{{fileExist}}"
+            binary: "{{binary}}"
+            autoCreate: "{{autoCreate}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: ftp-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "FTP"
+    camel.apache.org/kamelet.namespace: "File"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "FTP Source"
+    description: |-
+      Receive data from an FTP server.
+    required:
+      - connectionHost
+      - connectionPort
+      - username
+      - password
+      - directoryName
+    type: object
+    properties:
+      connectionHost:
+        title: Connection Host
+        description: The hostname of the FTP server.
+        type: string
+      connectionPort:
+        title: Connection Port
+        description: The port of the FTP server.
+        type: string
+        default: 21
+      username:
+        title: Username
+        description: The username to access the FTP server.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access the FTP server.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      directoryName:
+        title: Directory Name
+        description: The starting directory
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Specifes to use passive mode connection.
+        type: boolean
+        default: false
+      recursive:
+        title: Recursive
+        description: If a directory, look for files in all the sub-directories as well.
+        type: boolean
+        default: false
+      idempotent:
+        title: Idempotency
+        description: Skip already-processed files.
+        type: boolean
+        default: true
+      binary:
+        title: Binary
+        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+        type: boolean
+        default: false
+      autoCreate:
+        title: Autocreate Missing Directories
+        description: Automatically create starting directory.
+        type: boolean
+        default: true
+      delete:
+        title: Delete
+        description: If true, the file will be deleted after it is processed successfully.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:ftp"
+    - "camel:core"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "ftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+      parameters:
+        password: "{{password}}"
+        passiveMode: "{{passiveMode}}"
+        recursive: "{{recursive}}"
+        idempotent: "{{idempotent}}"
+        binary: "{{binary}}"
+        autoCreate: "{{autoCreate}}"
+        delete: "{{delete}}"
+      steps:
+      - setHeader:
+          name: file
+          simple: "${header[CamelFileName]}"
+      - setHeader:
+          name: ce-file
+          simple: "${header[CamelFileName]}"
+      - convertBodyTo:
+          type: "java.io.InputStream"
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: ftps-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "FTP"
+    camel.apache.org/kamelet.namespace: "File"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "FTPS Sink"
+    description: |-
+      Send data to an FTPS server.
+
+      In the header, you can set the `file` / `ce-file` property to specify the filename to upload.
+
+      If you do not set the property in the header, the Kamelet uses the exchange ID for the filename.
+    required:
+      - connectionHost
+      - connectionPort
+      - username
+      - password
+      - directoryName
+    type: object
+    properties:
+      connectionHost:
+        title: Connection Host
+        description: The hostname of the FTP server.
+        type: string
+      connectionPort:
+        title: Connection Port
+        description: The port of the FTP server.
+        type: string
+        default: 21
+      username:
+        title: Username
+        description: The username to access the FTP server.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access the FTP server.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      directoryName:
+        title: Directory Name
+        description: The starting directory.
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Set the passive mode connection.
+        type: boolean
+        default: false
+      fileExist:
+        title: File Existence
+        description: "Specifies how the Kamelet behaves if the file already exists."
+        type: string
+        default: Override
+        enum: ["Override", "Append", "Fail", "Ignore"]
+      binary:
+        title: Binary
+        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+        type: boolean
+        default: false
+      autoCreate:
+        title: Autocreate Missing Directories
+        description: Automatically create the directory the files should be written to.
+        type: boolean
+        default: true
+  dependencies:
+    - "camel:ftp"
+    - "camel:core"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - setHeader:
+                name: CamelFileName
+                simple: "${header[ce-file]}"
+      - to:
+          uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+          parameters:
+            password: "{{password}}"
+            passiveMode: "{{passiveMode}}"
+            fileExist: "{{fileExist}}"
+            binary: "{{binary}}"
+            autoCreate: "{{autoCreate}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: ftps-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "FTP"
+    camel.apache.org/kamelet.namespace: "File"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "FTPS Source"
+    description: |-
+      Receive data from an FTPS server.
+    required:
+      - connectionHost
+      - connectionPort
+      - username
+      - password
+      - directoryName
+    type: object
+    properties:
+      connectionHost:
+        title: Connection Host
+        description: The hostname of the FTPS server.
+        type: string
+      connectionPort:
+        title: Connection Port
+        description: The port of the FTPS server.
+        type: string
+        default: 21
+      username:
+        title: Username
+        description: The username to access the FTPS server.
+        type: string
+        x-descriptors:
+        - urn:camel:group:credentials
+      password:
+        title: Password
+        description: The password to access the FTPS server.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      directoryName:
+        title: Directory Name
+        description: The starting directory.
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Specifies to use passive mode connection.
+        type: boolean
+        default: false
+      recursive:
+        title: Recursive
+        description: If a directory, look for files in all sub-directories as well.
+        type: boolean
+        default: false
+      idempotent:
+        title: Idempotency
+        description: Skip already-processed files.
+        type: boolean
+        default: true
+      binary:
+        title: Binary
+        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+        type: boolean
+        default: false
+      autoCreate:
+        title: Autocreate Missing Directories
+        description: Automatically create starting directory.
+        type: boolean
+        default: true
+      delete:
+        title: Delete
+        description: If true, the file will be deleted after it is processed successfully.
+        type: boolean
+        default: false
+  dependencies:
+    - "camel:ftp"
+    - "camel:core"
+    - "camel:kamelet"
+  template:
+    from:
+      uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+      parameters:
+        password: "{{password}}"
+        passiveMode: "{{passiveMode}}"
+        recursive: "{{recursive}}"
+        idempotent: "{{idempotent}}"
+        binary: "{{binary}}"
+        autoCreate: "{{autoCreate}}"
+        delete: "{{delete}}"
+      steps:
+      - setHeader:
+          name: file
+          simple: "${header[CamelFileName]}"
+      - setHeader:
+          name: ce-file
+          simple: "${header[CamelFileName]}"
+      - convertBodyTo:
+          type: "java.io.InputStream"
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: github-commit-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuOD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "GitHub"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "GitHub Commit Source"
+    description: |-
+      Receive commit From GitHub.
+    required:
+      - repoName
+      - repoOwner
+      - oauthToken
+      - startingSha
+      - branch
+    type: object
+    properties:
+      repoName:
+        title: Repository Name
+        description: The GitHub Repository name
+        type: string
+      repoOwner:
+        title: Repository Owner
+        description: The repository owner
+        type: string
+      oauthToken:
+        title: OAuth Token
+        description: OAuth token
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      startingSha:
+        title: Starting SHA
+        description: The SHA from which we want to consume, possible values beginning, last or a specific SHA
+        type: string
+        default: last
+      branch:
+        title: Branch 
+        description: The branch we want to consume commit from
+        type: string
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:github"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "github://commit/{{branch}}"
+      parameters:
+        repoName: "{{repoName}}"
+        repoOwner: "{{repoOwner}}"
+        oauthToken: "{{oauthToken}}"
+        startingSha: "{{startingSha}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: github-event-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuOD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "GitHub"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "GitHub Event Source"
+    description: |-
+      Receive Events From a GitHub Repository.
+    required:
+      - repoName
+      - repoOwner
+      - oauthToken
+    type: object
+    properties:
+      repoName:
+        title: Repository Name
+        description: The GitHub Repository name
+        type: string
+      repoOwner:
+        title: Repository Owner
+        description: The repository owner
+        type: string
+      oauthToken:
+        title: OAuth Token
+        description: OAuth token
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:github"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "github://event"
+      parameters:
+        repoName: "{{repoName}}"
+        repoOwner: "{{repoOwner}}"
+        oauthToken: "{{oauthToken}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: github-pullrequest-comment-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuOD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "GitHub"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "GitHub Pull Request Comments Source"
+    description: |-
+      Receive pull request Comments From GitHub.
+    required:
+      - repoName
+      - repoOwner
+      - oauthToken
+    type: object
+    properties:
+      repoName:
+        title: Repository Name
+        description: The GitHub Repository name
+        type: string
+      repoOwner:
+        title: Repository Owner
+        description: The repository owner
+        type: string
+      oauthToken:
+        title: OAuth Token
+        description: OAuth token
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:github"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "github://pullRequestComment"
+      parameters:
+        repoName: "{{repoName}}"
+        repoOwner: "{{repoOwner}}"
+        oauthToken: "{{oauthToken}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: github-pullrequest-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuOD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "GitHub"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "GitHub Pull Request Source"
+    description: |-
+      Receive pull request From GitHub.
+    required:
+      - repoName
+      - repoOwner
+      - oauthToken
+    type: object
+    properties:
+      repoName:
+        title: Repository Name
+        description: The GitHub Repository name
+        type: string
+      repoOwner:
+        title: Repository Owner
+        description: The repository owner
+        type: string
+      oauthToken:
+        title: OAuth Token
+        description: OAuth token
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:github"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "github://pullRequest"
+      parameters:
+        repoName: "{{repoName}}"
+        repoOwner: "{{repoOwner}}"
+        oauthToken: "{{oauthToken}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: github-tag-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuOD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "GitHub"
+    camel.apache.org/kamelet.namespace: "Cloud"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "GitHub Tag Source"
+    description: |-
+      Receive Tags From a GitHub Repository.
+    required:
+      - repoName
+      - repoOwner
+      - oauthToken
+    type: object
+    properties:
+      repoName:
+        title: Repository Name
+        description: The GitHub Repository name
+        type: string
+      repoOwner:
+        title: Repository Owner
+        description: The repository owner
+        type: string
+      oauthToken:
+        title: OAuth Token
+        description: OAuth token
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:github"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "github://tag"
+      parameters:
+        repoName: "{{repoName}}"
+        repoOwner: "{{repoOwner}}"
+        oauthToken: "{{oauthToken}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-bigquery-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHdpZHRoPSIyNTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgdmlld0JveD0iLTEuNjMzMjM1NDMzMzI4MjU2IDcuMDMyNjA5MzMwMzE1NjU2NSAxMzEuMjY1NzQ2ODI0MTY4NzYgMTE0LjYzNDM5MDY2OTY4NDM1IiB2ZXJzaW9uPSIxLjAiPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJhIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjY0IiB4Mj0iNjQiIHkxPSI3LjAzNCIgeTI9IjEyMC43ODkiPgogICAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzQzODdmZCIvPgogIC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Big Query"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Google Big Query Sink"
+    description: |-
+      Send data to a Google Big Query table.
+
+      The data must be JSON format to represent an object or an array of objects.
+    required:
+      - projectId
+      - dataset
+      - table
+      - serviceAccountKey
+    type: object
+    properties:
+      projectId:
+        title: Google Cloud Project Id
+        description: The Google Cloud Project ID.
+        type: string
+      dataset:
+        title: Big Query Dataset Id
+        description: The Big Query Dataset ID.
+        type: string
+      table:
+        title: Big Query Table Id
+        description: The Big Query Table ID.
+        type: string
+      serviceAccountKey:
+        title: Service Account Key
+        description: The service account key to use as credentials for the BigQuery Service. You must encode this value in base64.
+        type: binary
+        x-descriptors:
+        - urn:camel:group:credentials
+  types:
+    in:
+      mediaType: application/json
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+    - "camel:google-bigquery"
+    - "camel:jackson"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - unmarshal:
+          json:
+              library: Jackson
+      - to:
+          uri: "google-bigquery:{{projectId}}:{{dataset}}:{{table}}"
+          parameters:
+            serviceAccountKey: "base64:{{serviceAccountKey}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-calendar-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4NiAzOCA3NiA3NiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTI0NCA1NmgtNDB2NDBoNDBWNTZ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTI0NCAxMTRsMTgtMThoLTE4djE4eiIvPjxwYXRoIGZpbGw9IiNGQkJDMDQiIGQ9Ik0yNjIgNTZoLTE4djQwaDE4VjU2eiIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Ik0yNDQgOTZoLTQwdjE4aDQwVjk2eiIvPjxwYXRoIGZpbGw9IiMxODgwMzgiIGQ9Ik0xODYgOTZ2MTJjMCAzLjMxNSAyLjY4NSA2IDYgNmgxMlY5NmgtMTh6Ii8+PH [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Calendar"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Google Calendar Source"
+    description: |-
+      Receive event data from Google Calendar.
+    required:
+      - index
+      - calendarId
+      - clientId
+      - accessToken
+      - refreshToken
+      - clientSecret
+      - applicationName
+    type: object
+    properties:
+      index:
+        title: Index
+        description: An index for the Google Calendar endpoint.
+        type: string
+      calendarId:
+        title: Calendar ID
+        description: The calendar ID to use as the source of event data.
+        type: string
+      clientId:
+        title: Client Id
+        description: The Client ID of the Google Calendar application.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientSecret:
+        title: Client Secret
+        description: The Client secret of the Google Calendar application.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      accessToken:
+        title: Access Token
+        description: The OAuth 2 access token for the Google Calendar application. This token typically expires after an hour. For long term usage, set the `refreshToken` property.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      refreshToken:
+        title: Refresh Token
+        description: The OAuth 2 refresh token for the Google Calendar application. The Google Calendar component can obtain a new `accessToken` whenever the current one expires. Set this value for long term usage.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll.
+        type: integer
+        default: 500
+      applicationName:
+        title: Application name
+        description: The Google Calendar application name.
+        type: string
+      syncFlow:
+        title: Sync Flow
+        description: Specifies to sync events for incremental synchronization.
+        type: boolean
+        default: false
+      consumeFromNow:
+        title: Consume from now
+        description: Specfies to consume events in the calendar from now on.
+        type: boolean
+        default: true
+  dataTypes:
+    out:
+      default: json
+      headers:
+        CamelGoogleCalendarEventId:
+          title: Camel Google Calendar Event Id
+          description: The calendar event id
+          type: string
+      types:
+        json:
+          format: "application-json"
+          description: |-
+            Json representation of a Google Calendar event object.
+          mediaType: application/json
+        cloudevents:
+          format: "google-calendar-stream:application-cloudevents"
+          description: |-
+            Output data type represents Google Calendar Stream response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with
+            respective data from the Calendar Events and its derived object.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.google.calendar.stream.consume"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Calendar Event Id with prefix "google.calendar.stream.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. The Calendar event type.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+  - "camel:jackson"
+  - "camel:google-calendar"
+  - "camel:kamelet"
+  template:
+    from:
+      uri: "google-calendar-stream://{{index}}"
+      parameters:
+        clientId: "{{clientId}}"
+        calendarId: "{{calendarId}}"
+        accessToken: "{{accessToken}}"
+        refreshToken: "{{refreshToken}}"
+        clientSecret: "{{clientSecret}}"
+        delay: "{{delay}}"
+        applicationName: "{{applicationName}}"
+        syncFlow: "{{syncFlow}}"
+        consumeFromNow: "{{consumeFromNow}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-functions-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjMxcHgiIHZpZXdCb3g9IjAgMCAyNTYgMjMxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0yNTIuOTI1ODU0LDEwMy4yMzcwNzcgTDIwMC4zMjczNDQsMTEuNzU5NjY3IEMxOTYuMzAyNTc5LDQuNjIyMjU3MDMgMTg4LjgwMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Functions"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Google Functions Sink"
+    description: |-
+      Send data to Google Functions.
+    required:
+      - projectId
+      - functionName
+      - region
+      - serviceAccountKey
+    type: object
+    properties:
+      projectId:
+        title: Project Id
+        description: The Google Cloud Functions Project ID.
+        type: string
+      region:
+        title: Region 
+        description: The region where Google Cloud Functions has been deployed.
+        type: string
+      functionName:
+        title: Function Name
+        description: The Function name.
+        type: string
+      serviceAccountKey:
+        title: Service Account Key
+        description: The path to the service account key file that provides credentials for the Google Cloud Functions platform. You must encode this value in base64.
+        type: binary
+        x-descriptors:
+        - urn:camel:group:credentials
+  dependencies:
+    - "camel:kamelet"
+    - "camel:google-functions"
+    - "camel:jackson"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "google-functions://{{functionName}}"
+          parameters:
+            serviceAccountKey: "base64:{{serviceAccountKey}}"
+            project: "{{projectId}}"
+            location: "{{region}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-mail-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUyIDQyIDg4IDY2Ij4KPHBhdGggZmlsbD0iIzQyODVmNCIgZD0iTTU4IDEwOGgxNFY3NEw1MiA1OXY0M2MwIDMuMzIgMi42OSA2IDYgNiIvPgo8cGF0aCBmaWxsPSIjMzRhODUzIiBkPSJNMTIwIDEwOGgxNGMzLjMyIDAgNi0yLjY5IDYtNlY1OWwtMjAgMTUiLz4KPHBhdGggZmlsbD0iI2ZiYmMwNCIgZD0iTTEyMCA0OHYyNmwyMC0xNXYtOGMwLTcuNDItOC40Ny0xMS42NS0xNC40LTcuMiIvPgo8cGF0aCBmaWxsPSIjZWE0MzM1IiBkPSJNNzIgNzRWNDhsMjQgMTggMjQtMTh2MjZMOT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Mail"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Google Mail Source"
+    description: |-
+      Receive data from Google Mail.
+    required:
+      - index
+      - clientId
+      - accessToken
+      - refreshToken
+      - clientSecret
+      - applicationName
+    type: object
+    properties:
+      index:
+        title: Index
+        description: An index for the google mail endpoint
+        type: string
+      clientId:
+        title: Client ID
+        description: Client ID of the gmail application
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientSecret:
+        title: Client Secret
+        description: Client Secret of the gmail application
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      accessToken:
+        title: Access Token
+        description: OAuth 2 access token for google mail application. This typically expires after an hour so refreshToken is recommended for long term usage.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      refreshToken:
+        title: Refresh Token
+        description: OAuth 2 refresh token for google mail application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll
+        type: integer
+        default: 500
+      applicationName:
+        title: Application name
+        description: Google Mail application name
+        type: string
+      markAsRead:
+        title: Mark as Read
+        description: Mark the message as read once it has been consumed
+        type: boolean
+        default: true
+      labels:
+        title: Gmail Labels
+        description: Comma separated list of labels to take into account
+        type: string
+        example: "inbox"
+      query:
+        title: Gmail Query
+        description: The query to execute on gmail box
+        type: string
+        example: "is:unread -category:(promotions OR social)"
+        default: "is:unread"
+  dataTypes:
+    out:
+      default: json
+      headers:
+        CamelGoogleMailId:
+          title: Camel Google Mail Id
+          description: The ID of the message
+          type: string
+        CamelGoogleMailStreamTo:
+          title: Camel Google Mail To Address
+          description: The recipient of the message
+          type: string
+        CamelGoogleMailStreamFrom:
+          title: Camel Google Mail From Address
+          description: The emitter of the message
+          type: string
+        CamelGoogleMailStreamCc:
+          title: Camel Google Mail Cc
+          description: The carbon copy of the message
+          type: string
+        CamelGoogleMailStreamBcc:
+          title: Camel Google Mail Bcc
+          description: The blind carbon cpoy of the message
+          type: string
+        CamelGoogleMailStreamSubject:
+          title: Camel Google Mail Subject
+          description: The subject of the message
+          type: string
+      types:
+        json:
+          format: "application-json"
+          description: |-
+            Json representation of a Google Mail event object.
+          mediaType: application/json
+        cloudevents:
+          format: "google-mail-stream:application-cloudevents"
+          description: |-
+            Output data type represents Google Mail Streams response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with
+            respective data from the Mail and its derived object.
+          headers:
+            CamelCloudEventID:
+              title: CloudEvent ID
+              description: The Camel exchange id set as event id
+              type: string
+            CamelCloudEventType:
+              title: CloudEvent Type
+              description: The event type
+              default: "org.apache.camel.event.google.mail.stream.consume"
+              type: string
+            CamelCloudEventSource:
+              title: CloudEvent Source
+              description: The event source. By default, the Mail From with prefix "google.mail.stream.".
+              type: string
+            CamelCloudEventSubject:
+              title: CloudEvent Subject
+              description: The event subject. The Calendar event type.
+              type: string
+            CamelCloudEventTime:
+              title: CloudEvent Time
+              description: The exchange creation timestamp as event time.
+              type: string
+  dependencies:
+  - "camel:jackson"
+  - "camel:kamelet"
+  - "camel:google-mail"
+  template:
+    from:
+      uri: "google-mail-stream://{{index}}"
+      parameters:
+        clientId: "{{clientId}}"
+        accessToken: "{{accessToken}}"
+        refreshToken: "{{refreshToken}}"
+        clientSecret: "{{clientSecret}}"
+        delay: "{{delay}}"
+        applicationName: "{{applicationName}}"
+        markAsRead: "{{markAsRead}}"
+        labels: "{{labels}}"
+        query: "{{query}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-pubsub-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0xLjYzMzIzNTQzIDcuMDMyNjA5MzMgMTMxLjI2NTc0NjgyIDExNC40MzkzOTA2NyIgd2lkdGg9IjI1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2NCIgeDI9IjY0IiB5MT0iNy4wMzQiIHkyPSIxMjAuNzg5Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzg3ZmQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Pubsub"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Google Pubsub Sink"
+    description: |-
+      Send messages to Google Cloud Pub/Sub.
+
+      If you specify the `serviceAccountKey` property, you must base64 encode it before you pass it as a parameter.
+    required:
+      - projectId
+      - destinationName
+    type: object
+    properties:
+      projectId:
+        title: Project Id
+        description: The Google Cloud Pub/Sub Project ID.
+        type: string
+      destinationName:
+        title: Destination Name
+        description: The destination name.
+        type: string
+      serviceAccountKey:
+        title: Service Account Key
+        description: The service account key to use as credentials for the Pub/Sub publisher/subscriber. You must encode this value in base64.
+        type: binary
+        x-descriptors:
+        - urn:camel:group:credentials
+  dependencies:
+    - "camel:kamelet"
+    - "camel:google-pubsub"
+    - "camel:jackson"
+  template:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "google-pubsub://{{projectId}}:{{destinationName}}"
+          parameters:
+            serviceAccountKey: "base64:{{?serviceAccountKey}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-pubsub-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0xLjYzMzIzNTQzIDcuMDMyNjA5MzMgMTMxLjI2NTc0NjgyIDExNC40MzkzOTA2NyIgd2lkdGg9IjI1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2NCIgeDI9IjY0IiB5MT0iNy4wMzQiIHkyPSIxMjAuNzg5Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzg3ZmQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Pubsub"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Google Pubsub Source"
+    description: |-
+      Consume messages from Google Cloud Pub/Sub.
+
+      If you specify the `serviceAccountKey` property, you must base64 encode it before you pass it as a parameter.
+    required:
+      - projectId
+      - subscriptionName
+    type: object
+    properties:
+      projectId:
+        title: Project Id
+        description: The Google Cloud Pub/Sub Project ID.
+        type: string
+      subscriptionName:
+        title: Subscription Name
+        description: The subscription name.
+        type: string
+      serviceAccountKey:
+        title: Service Account Key
+        description: The service account key to use as credentials for the Pub/Sub publisher/subscriber. You must encode this value in base64.
+        type: binary
+        x-descriptors:
+        - urn:camel:group:credentials
+      synchronousPull:
+        title: Synchronous Pull
+        description: Specifies to synchronously pull batches of messages.
+        type: boolean
+        default: false
+      maxMessagesPerPoll:
+        title: Max Messages Per Poll
+        description: The maximum number of messages to receive from the server in a single API call.
+        type: integer
+        default: 1
+      concurrentConsumers:
+        title: Concurrent Consumers
+        description: The number of parallel streams to consume from the subscription.
+        type: integer
+        default: 1
+  dependencies:
+    - "camel:kamelet"
+    - "camel:google-pubsub"
+    - "camel:jackson"
+  template:
+    from:
+      uri: "google-pubsub://{{projectId}}:{{subscriptionName}}"
+      parameters:
+        serviceAccountKey: "base64:{{?serviceAccountKey}}"
+        synchronousPull: "{{synchronousPull}}"
+        maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
+        concurrentConsumers: "{{concurrentConsumers}}"
+      steps:
+      - to: kamelet:sink
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-sheets-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgODg7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Sheets"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Google Sheets Sink"
+    description: |-
+      Send data to Google Sheets and update/append values on a spreadsheet.
+    required:
+      - spreadsheetId
+      - clientId
+      - accessToken
+      - refreshToken
+      - clientSecret
+    type: object
+    properties:
+      spreadsheetId:
+        title: Spreadsheet ID
+        description: The Spreadsheet ID to be used as identifier
+        type: string
+      clientId:
+        title: Client Id
+        description: Client ID of the sheets application
+        type: string
+        format: password
+        x-descriptors:
+          - urn:camel:group:credentials
+      clientSecret:
+        title: Client Secret
+        description: Client Secret of the sheets application
+        type: string
+        format: password
+        x-descriptors:
+          - urn:camel:group:credentials
+      accessToken:
+        title: Access Token
+        description: OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage.
+        type: string
+        format: password
+        x-descriptors:
+          - urn:camel:group:credentials
+      refreshToken:
+        title: Refresh Token
+        description: OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+        type: string
+        format: password
+        x-descriptors:
+          - urn:camel:group:credentials
+      applicationName:
+        title: Application Name
+        description: Google Sheets application name
+        type: string
+      operation:
+        title: Operation Mode
+        description: Operation to execute (update or append)
+        type: string
+        enum: [ "update", "append" ]
+        default: append
+        example: append
+      range:
+        title: Cells Range
+        description: The cell range of rows and columns to write data to.
+        type: string
+        example: "A1:B3"
+      majorDimension:
+        title: Major Dimension
+        description: Specifies the major dimension that the given values should use (ROWS or COLUMNS).
+        type: string
+        enum: [ "COLUMNS", "ROWS" ]
+        default: "ROWS"
+        example: "ROWS"
+      columnNames:
+        title: Column Names
+        description: Optional custom column names that map to cell coordinates based on their position.
+        type: string
+        default: "A"
+      valueInputOption:
+        title: Value Input Option
+        description: Controls how the entered values should be be interpreted when adding them.
+        type: string
+        enum: [ "USER_ENTERED", "RAW" ]
+        default: "USER_ENTERED"
+        example: "USER_ENTERED"
+  dataTypes:
+    in:
+      default: json-struct
+      types:
+        json-struct:
+          format: "google-sheets:application-x-struct"
+          description: |-
+            Special Json representation of Google Sheets ValueRange object with just row and column values as a generic JsonNode.
+            Each cell value is represented by a Json property named after the respective row (A-Z) or column (1-n) depending on the given majorDimension.
+            Custom column names are supported in order to use custom property names instead of generic row (A-Z) or column (1-n) coordinates.
+            The given Json struct is ready to be transformed into a proper Google Sheets ValueRange object that can be used in the update/append values operation.
+            The data type uses a set of header entries to determine properties such as spreadsheetId, the target cell range, the majorDimension and so on.
+          headers:
+            CamelGoogleSheets.range:
+              title: Range
+              description: Cells range to write data to.
+              default: A:A
+              type: string
+            CamelGoogleSheets.spreadsheetId:
+              title: Spreadsheet id
+              description: The Spreadsheet ID to be used as identifier.
+              type: string
+            CamelGoogleSheets.majorDimension:
+              title: Major dimension
+              description: Specifies the major dimension that the given values should use (ROWS or COLUMNS).
+              default: ROWS
+              type: string
+            CamelGoogleSheets.columnNames:
+              title: Column Names
+              description: Optional custom column names that map to cell coordinates based on their position.
+              default: A
+              type: string
+            CamelGoogleSheets.valueInputOption:
+              title: Value Input Option
+              description: Controls how the entered values should be be interpreted when adding them.
+              default: USER_ENTERED
+              type: string
+          mediaType: application/json
+  dependencies:
+    - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.7.0"
+    - "camel:core"
+    - "camel:jackson"
+    - "camel:kamelet"
+    - "camel:google-sheets"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+        - setHeader:
+            name: CamelGoogleSheets.spreadsheetId
+            simple: "{{spreadsheetId}}"
+        - setHeader:
+            name: CamelGoogleSheets.range
+            simple: "{{?range}}"
+        - setHeader:
+            name: CamelGoogleSheets.majorDimension
+            simple: "{{?majorDimension}}"
+        - setHeader:
+            name: CamelGoogleSheets.columnNames
+            simple: "{{?columnNames}}"
+        - setHeader:
+            name: CamelGoogleSheets.valueInputOption
+            simple: "{{?valueInputOption}}"
+        - transform:
+            toType: "google-sheets:application-x-struct"
+        - to:
+            uri: "google-sheets:data/{{operation}}"
+            parameters:
+              spreadsheetId: "{{spreadsheetId}}"
+              clientId: "{{clientId}}"
+              accessToken: "{{accessToken}}"
+              refreshToken: "{{refreshToken}}"
+              clientSecret: "{{clientSecret}}"
+              applicationName: "{{?applicationName}}"
+              range: "{{?range}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+  name: google-sheets-source
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.7.0"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgODg7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Google Sheets"
+    camel.apache.org/kamelet.namespace: "GCP"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Google Sheets Source"
+    description: |-
+      Receive data from Google Sheets.
+    required:
+      - spreadsheetId
+      - clientId
+      - accessToken
+      - refreshToken
+      - clientSecret
+    type: object
+    properties:
+      spreadsheetId:
+        title: Spreadsheet ID
+        description: The Spreadsheet ID to be used as events source
+        type: string
+      clientId:
+        title: Client Id
+        description: Client ID of the sheets application
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      clientSecret:
+        title: Client Secret
+        description: Client Secret of the sheets application
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      accessToken:
+        title: Access Token
+        description: OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      refreshToken:
+        title: Refresh Token
+        description: OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+      delay:
+        title: Delay
+        description: The number of milliseconds before the next poll
+        type: integer
+        default: 500
+      repeatCount:
+        title: Repeat Count
+        description: Specifies a maximum limit of number of fires
... 13096 lines suppressed ...