You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/04/27 14:38:09 UTC

[camel-kamelets] branch main updated (50425e7 -> 4313587)

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

acosentino pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git.


    from 50425e7  Added DNS Dig Action Kamelet
     add 962938f  Added Caffeine Cache Action Kamelet
     add 350ab90  Added Caffeine Cache Action Kamelet
     add d45069e  Added Caffeine Cache Action Kamelet
     add cd660e4  Added Caffeine Cache Action Kamelet
     new a3e1c82  Kamelets Catalog: First implementation
     new d52fb3d  Camel-Kamelets catalog: Add .gitignore
     new 29e65e0  Camel-Kamelets catalog: Add .gitignore
     new a3fc3e2  Camel-Kamelets catalog: First implementation
     new 1baab8a  Camel-Kamelets catalog: First implementation
     new 6347fa9  Camel-Kamelets catalog: First implementation
     new 4313587  Camel-Kamelets catalog: First implementation

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


Summary of changes:
 caffeine-action.kamelet.yaml                       |  72 ++++
 camel-kamelets-catalog/.gitignore                  |  28 ++
 camel-kamelets-catalog/pom.xml                     | 424 +++++++++++++++++++++
 .../camel/kamelets/catalog/KameletsCatalog.java    |  83 ++++
 .../kamelets/catalog/model/KameletTypeEnum.java    |  33 ++
 .../kamelets/aws-ddb-streams-source.kamelet.yaml   |   0
 .../aws-kinesis-firehose-sink.kamelet.yaml         |   0
 .../kamelets/aws-kinesis-sink.kamelet.yaml         |   0
 .../kamelets/aws-kinesis-source.kamelet.yaml       |   0
 .../kamelets/aws-lambda-sink.kamelet.yaml          |   0
 .../resources/kamelets/aws-s3-sink.kamelet.yaml    |   0
 .../resources/kamelets/aws-s3-source.kamelet.yaml  |   0
 .../kamelets/aws-sns-fifo-sink.kamelet.yaml        |   0
 .../resources/kamelets/aws-sns-sink.kamelet.yaml   |   0
 .../kamelets/aws-sqs-batch-sink.kamelet.yaml       |   0
 .../kamelets/aws-sqs-fifo-sink.kamelet.yaml        |   0
 .../resources/kamelets/aws-sqs-sink.kamelet.yaml   |   0
 .../resources/kamelets/aws-sqs-source.kamelet.yaml |   0
 .../kamelets/azure-eventhubs-sink.kamelet.yaml     |   0
 .../kamelets/azure-eventhubs-source.kamelet.yaml   |   0
 .../kamelets/azure-storage-blob-sink.kamelet.yaml  |   0
 .../azure-storage-blob-source.kamelet.yaml         |   0
 .../kamelets/azure-storage-queue-sink.kamelet.yaml |   0
 .../resources/kamelets/bitcoin-source.kamelet.yaml |   0
 .../kamelets/caffeine-action.kamelet.yaml          |  72 ++++
 .../resources/kamelets/cassandra-sink.kamelet.yaml |   0
 .../kamelets/cassandra-source.kamelet.yaml         |   0
 .../resources/kamelets/cron-source.kamelet.yaml    |   0
 .../resources/kamelets/dns-dig-action.kamelet.yaml |   0
 .../resources/kamelets/dns-ip-action.kamelet.yaml  |   0
 .../kamelets/dns-lookup-action.kamelet.yaml        |   0
 .../resources/kamelets/dropbox-sink.kamelet.yaml   |   0
 .../resources/kamelets/dropbox-source.kamelet.yaml |   0
 .../kamelets/earthquake-source.kamelet.yaml        |   0
 .../elasticsearch-search-source.kamelet.yaml       |   0
 .../main/resources/kamelets/exec-sink.kamelet.yaml |   0
 .../resources/kamelets/fhir-source.kamelet.yaml    |   0
 .../kamelets/file-watch-source.kamelet.yaml        |   0
 .../resources/kamelets/ftp-source.kamelet.yaml     |   0
 .../resources/kamelets/ftps-source.kamelet.yaml    |   0
 .../resources/kamelets/github-source.kamelet.yaml  |   0
 .../kamelets/google-calendar-source.kamelet.yaml   |   0
 .../kamelets/google-mail-source.kamelet.yaml       |   0
 .../kamelets/google-sheets-source.kamelet.yaml     |   0
 .../main/resources/kamelets/http-sink.kamelet.yaml |   0
 .../resources/kamelets/http-source.kamelet.yaml    |   0
 .../resources/kamelets/jira-source.kamelet.yaml    |   0
 .../resources/kamelets/kafka-source.kamelet.yaml   |   0
 .../kamelets/mail-imap-source.kamelet.yaml         |   0
 .../resources/kamelets/minio-sink.kamelet.yaml     |   0
 .../resources/kamelets/minio-source.kamelet.yaml   |   0
 .../resources/kamelets/mqtt-source.kamelet.yaml    |   0
 .../resources/kamelets/nats-source.kamelet.yaml    |   0
 .../kamelets/openai-completion-action.kamelet.yaml |   0
 .../resources/kamelets/pdf-action.kamelet.yaml     |   0
 .../kamelets/rabbitmq-source.kamelet.yaml          |   0
 .../kamelets/salesforce-source.kamelet.yaml        |   0
 .../resources/kamelets/sftp-source.kamelet.yaml    |   0
 .../resources/kamelets/slack-source.kamelet.yaml   |   0
 .../resources/kamelets/ssh-source.kamelet.yaml     |   0
 .../resources/kamelets/telegram-sink.kamelet.yaml  |   0
 .../kamelets/telegram-source.kamelet.yaml          |   0
 .../resources/kamelets/timer-source.kamelet.yaml   |   0
 .../kamelets/twitter-directmessage.kamelet.yaml    |   0
 .../resources/kamelets/twitter-search.kamelet.yaml |   0
 .../kamelets/twitter-timeline.kamelet.yaml         |   0
 .../resources/kamelets/webhook-source.kamelet.yaml |   0
 .../kamelets/catalog/KameletsCatalogTest.java      |  49 +++
 .../assets/images/kamelets/caffeine-action.svg     |  39 ++
 docs/modules/ROOT/nav.adoc                         |   1 +
 .../{pdf-action.adoc => caffeine-action.adoc}      |  34 +-
 71 files changed, 822 insertions(+), 13 deletions(-)
 create mode 100644 caffeine-action.kamelet.yaml
 create mode 100644 camel-kamelets-catalog/.gitignore
 create mode 100644 camel-kamelets-catalog/pom.xml
 create mode 100644 camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
 create mode 100644 camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
 copy aws-ddb-streams-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml (100%)
 copy aws-kinesis-firehose-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml (100%)
 copy aws-kinesis-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml (100%)
 copy aws-kinesis-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml (100%)
 copy aws-lambda-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml (100%)
 copy aws-s3-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml (100%)
 copy aws-s3-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml (100%)
 copy aws-sns-fifo-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml (100%)
 copy aws-sns-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml (100%)
 copy aws-sqs-batch-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml (100%)
 copy aws-sqs-fifo-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml (100%)
 copy aws-sqs-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml (100%)
 copy aws-sqs-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml (100%)
 copy azure-eventhubs-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml (100%)
 copy azure-eventhubs-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml (100%)
 copy azure-storage-blob-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml (100%)
 copy azure-storage-blob-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml (100%)
 copy azure-storage-queue-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml (100%)
 copy bitcoin-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml (100%)
 create mode 100644 camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
 copy cassandra-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml (100%)
 copy cassandra-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml (100%)
 copy cron-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml (100%)
 copy dns-dig-action.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml (100%)
 copy dns-ip-action.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml (100%)
 copy dns-lookup-action.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml (100%)
 copy dropbox-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml (100%)
 copy dropbox-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml (100%)
 copy earthquake-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy elasticsearch-search-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy exec-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml (100%)
 copy fhir-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml (100%)
 copy file-watch-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml (100%)
 copy ftp-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml (100%)
 copy ftps-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml (100%)
 copy github-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml (100%)
 copy google-calendar-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml (100%)
 copy google-mail-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml (100%)
 copy google-sheets-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml (100%)
 copy http-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml (100%)
 copy http-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml (100%)
 copy jira-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml (100%)
 copy kafka-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml (100%)
 copy mail-imap-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml (100%)
 copy minio-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml (100%)
 copy minio-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml (100%)
 copy mqtt-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml (100%)
 copy nats-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml (100%)
 copy openai-completion-action.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy pdf-action.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml (100%)
 copy rabbitmq-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml (100%)
 copy salesforce-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml (100%)
 copy sftp-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml (100%)
 copy slack-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml (100%)
 copy ssh-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml (100%)
 copy telegram-sink.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy telegram-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml (100%)
 copy timer-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml (100%)
 copy twitter-directmessage.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy twitter-search.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/twitter-search.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy twitter-timeline.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline.kamelet.yaml (100%)
 mode change 100755 => 100644
 copy webhook-source.kamelet.yaml => camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml (100%)
 create mode 100644 camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
 create mode 100644 docs/modules/ROOT/assets/images/kamelets/caffeine-action.svg
 copy docs/modules/ROOT/pages/{pdf-action.adoc => caffeine-action.adoc} (51%)

[camel-kamelets] 06/07: Camel-Kamelets catalog: First implementation

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

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

commit 6347fa9397dd71813ca49df2860dffcff5e423d3
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 16:11:17 2021 +0200

    Camel-Kamelets catalog: First implementation
---
 camel-kamelets-catalog/pom.xml | 123 ++++++++++++++++++++++-------------------
 1 file changed, 65 insertions(+), 58 deletions(-)

diff --git a/camel-kamelets-catalog/pom.xml b/camel-kamelets-catalog/pom.xml
index ebfe44c..229509b 100644
--- a/camel-kamelets-catalog/pom.xml
+++ b/camel-kamelets-catalog/pom.xml
@@ -17,13 +17,14 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.apache.camel.kamelets</groupId>
     <artifactId>camel-kamelets-catalog</artifactId>
     <packaging>jar</packaging>
-    <version>0.2.2-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <name>Camel Kamelets Catalog</name>
     <description>Camel Kamelets Catalog</description>
 
@@ -37,6 +38,11 @@
         <maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
         <maven-source-plugin.version>3.1.0</maven-source-plugin.version>
         <maven-checksum-maven-plugin.version>1.7</maven-checksum-maven-plugin.version>
+        <log4j.version>2.13.3</log4j.version>
+        <jackson.version>2.11.4</jackson.version>
+        <camel.k.extension.version>5.3.1</camel.k.extension.version>
+        <commons.io.version>2.8.0</commons.io.version>
+        <junit.jupiter.version>5.7.1</junit.jupiter.version>
     </properties>
 
     <developers>
@@ -114,54 +120,54 @@
 
     <dependencies>
 
-<dependency>
-    <groupId>com.fasterxml.jackson.dataformat</groupId>
-    <artifactId>jackson-dataformat-yaml</artifactId>
-    <version>2.11.4</version>
-</dependency>
-<dependency>
-    <groupId>io.fabric8</groupId>
-    <artifactId>camel-k-model-v1alpha1</artifactId>
-    <version>5.3.1</version>
-</dependency>
-<dependency>
-    <groupId>com.fasterxml.jackson.datatype</groupId>
-    <artifactId>jackson-datatype-jsr310</artifactId>
-    <version>2.11.4</version>
-</dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-yaml</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.fabric8</groupId>
+            <artifactId>camel-k-model-v1alpha1</artifactId>
+            <version>${camel.k.extension.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>2.8.0</version>
+            <version>${commons.io.version}</version>
         </dependency>
         <!-- logging -->
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>
-    <version>2.13.3</version>
+            <version>${log4j.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
-    <version>2.13.3</version>
+            <version>${log4j.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-slf4j-impl</artifactId>
-    <version>2.13.3</version>
+            <version>${log4j.version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
             <scope>test</scope>
-    <version>5.7.1</version>
+            <version>${junit.jupiter.version}</version>
         </dependency>
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-engine</artifactId>
             <scope>test</scope>
-    <version>5.7.1</version>
+            <version>${junit.jupiter.version}</version>
         </dependency>
 
     </dependencies>
@@ -274,39 +280,39 @@
                         <failIfNoTests>false</failIfNoTests>
                     </configuration>
                 </plugin>
-           <plugin>
-            <artifactId>maven-resources-plugin</artifactId>
-            <version>3.1.0</version>
-            <executions>
-                <execution>
-                    <id>copy-resource-one</id>
-                    <phase>install</phase>
-                    <goals>
-                        <goal>copy-resources</goal>
-                    </goals>
+                <plugin>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>3.1.0</version>
+                    <executions>
+                        <execution>
+                            <id>copy-resource-one</id>
+                            <phase>install</phase>
+                            <goals>
+                                <goal>copy-resources</goal>
+                            </goals>
 
+                            <configuration>
+                                <outputDirectory>src/main/resources/kamelets</outputDirectory>
+                                <resources>
+                                    <resource>
+                                        <directory>../</directory>
+                                        <includes>
+                                            <include>*.kamelet.yaml</include>
+                                        </includes>
+                                    </resource>
+                                </resources>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
                     <configuration>
-                        <outputDirectory>src/main/resources/kamelets</outputDirectory>
-                        <resources>
-                            <resource>
-                                <directory>../</directory>
-                                <includes>
-                                    <include>*.kamelet.yaml</include>
-                                </includes>
-                            </resource>
-                        </resources>
+                        <source>8</source>
+                        <target>8</target>
                     </configuration>
-                </execution>
-           </executions>
-        </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>8</source>
-                    <target>8</target>
-                </configuration>
-            </plugin>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>
@@ -407,11 +413,12 @@
                                     </includes>
                                 </fileSet>
                             </fileSets>
-                            <failIfNoFiles>false</failIfNoFiles><!-- usually, no file to do checksum: don't consider error -->
+                            <failIfNoFiles>false
+                            </failIfNoFiles><!-- usually, no file to do checksum: don't consider error -->
                         </configuration>
                     </plugin>
-       </plugins>
-       </build>
-       </profile>
-       </profiles>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>

[camel-kamelets] 04/07: Camel-Kamelets catalog: First implementation

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

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

commit a3fc3e2441eebc6c8a2b0fa0fa76d0d30a91f0de
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 15:29:28 2021 +0200

    Camel-Kamelets catalog: First implementation
---
 camel-kamelets-catalog/pom.xml | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/camel-kamelets-catalog/pom.xml b/camel-kamelets-catalog/pom.xml
index 1901e57..08cc4e2 100644
--- a/camel-kamelets-catalog/pom.xml
+++ b/camel-kamelets-catalog/pom.xml
@@ -20,14 +20,10 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.apache</groupId>
-        <artifactId>apache</artifactId>
-        <version>23</version>
-    </parent>
-
+    <groupId>org.apache.camel.kamelets</groupId>
     <artifactId>camel-kamelets-catalog</artifactId>
     <packaging>jar</packaging>
+    <version>0.2.2-SNAPSHOT</version>
     <name>Camel Kamelets Catalog</name>
     <description>Camel Kamelets Catalog</description>
 

[camel-kamelets] 01/07: Kamelets Catalog: First implementation

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

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

commit a3e1c825f1047018a10bd222186e45bca4ffd2b1
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 15:23:49 2021 +0200

    Kamelets Catalog: First implementation
---
 camel-kamelets-catalog/pom.xml                     | 425 +++++++++++++++++++++
 .../camel/kamelets/catalog/KameletsCatalog.java    |  83 ++++
 .../kamelets/aws-ddb-streams-source.kamelet.yaml   |  71 ++++
 .../aws-kinesis-firehose-sink.kamelet.yaml         |  51 +++
 .../kamelets/aws-kinesis-sink.kamelet.yaml         |  92 +++++
 .../kamelets/aws-kinesis-source.kamelet.yaml       |  53 +++
 .../kamelets/aws-lambda-sink.kamelet.yaml          |  51 +++
 .../resources/kamelets/aws-s3-sink.kamelet.yaml    |  94 +++++
 .../resources/kamelets/aws-s3-source.kamelet.yaml  |  69 ++++
 .../kamelets/aws-sns-fifo-sink.kamelet.yaml        | 103 +++++
 .../resources/kamelets/aws-sns-sink.kamelet.yaml   |  59 +++
 .../kamelets/aws-sqs-batch-sink.kamelet.yaml       |  67 ++++
 .../kamelets/aws-sqs-fifo-sink.kamelet.yaml        | 103 +++++
 .../resources/kamelets/aws-sqs-sink.kamelet.yaml   |  59 +++
 .../resources/kamelets/aws-sqs-source.kamelet.yaml |  69 ++++
 .../kamelets/azure-eventhubs-sink.kamelet.yaml     |  71 ++++
 .../kamelets/azure-eventhubs-source.kamelet.yaml   |  77 ++++
 .../kamelets/azure-storage-blob-sink.kamelet.yaml  |  70 ++++
 .../azure-storage-blob-source.kamelet.yaml         |  60 +++
 .../kamelets/azure-storage-queue-sink.kamelet.yaml |  61 +++
 .../resources/kamelets/bitcoin-source.kamelet.yaml |  60 +++
 .../kamelets/caffeine-action.kamelet.yaml          |  72 ++++
 .../resources/kamelets/cassandra-sink.kamelet.yaml |  75 ++++
 .../kamelets/cassandra-source.kamelet.yaml         |  79 ++++
 .../resources/kamelets/cron-source.kamelet.yaml    |  43 +++
 .../resources/kamelets/dns-dig-action.kamelet.yaml |  66 ++++
 .../resources/kamelets/dns-ip-action.kamelet.yaml  |  45 +++
 .../kamelets/dns-lookup-action.kamelet.yaml        |  50 +++
 .../resources/kamelets/dropbox-sink.kamelet.yaml   |  69 ++++
 .../resources/kamelets/dropbox-source.kamelet.yaml |  67 ++++
 .../kamelets/earthquake-source.kamelet.yaml        |  85 +++++
 .../elasticsearch-search-source.kamelet.yaml       |  94 +++++
 .../main/resources/kamelets/exec-sink.kamelet.yaml |  48 +++
 .../resources/kamelets/fhir-source.kamelet.yaml    |  77 ++++
 .../kamelets/file-watch-source.kamelet.yaml        |  37 ++
 .../resources/kamelets/ftp-source.kamelet.yaml     |  78 ++++
 .../resources/kamelets/ftps-source.kamelet.yaml    |  78 ++++
 .../resources/kamelets/github-source.kamelet.yaml  |  55 +++
 .../kamelets/google-calendar-source.kamelet.yaml   | 100 +++++
 .../kamelets/google-mail-source.kamelet.yaml       |  99 +++++
 .../kamelets/google-sheets-source.kamelet.yaml     | 100 +++++
 .../main/resources/kamelets/http-sink.kamelet.yaml |  38 ++
 .../resources/kamelets/http-source.kamelet.yaml    |  47 +++
 .../resources/kamelets/jira-source.kamelet.yaml    |  57 +++
 .../resources/kamelets/kafka-source.kamelet.yaml   |  33 ++
 .../kamelets/mail-imap-source.kamelet.yaml         |  74 ++++
 .../resources/kamelets/minio-sink.kamelet.yaml     |  82 ++++
 .../resources/kamelets/minio-source.kamelet.yaml   |  73 ++++
 .../resources/kamelets/mqtt-source.kamelet.yaml    |  41 ++
 .../resources/kamelets/nats-source.kamelet.yaml    |  40 ++
 .../kamelets/openai-completion-action.kamelet.yaml |  81 ++++
 .../resources/kamelets/pdf-action.kamelet.yaml     |  44 +++
 .../kamelets/rabbitmq-source.kamelet.yaml          |  52 +++
 .../kamelets/salesforce-source.kamelet.yaml        |  83 ++++
 .../resources/kamelets/sftp-source.kamelet.yaml    |  78 ++++
 .../resources/kamelets/slack-source.kamelet.yaml   |  43 +++
 .../resources/kamelets/ssh-source.kamelet.yaml     |  64 ++++
 .../resources/kamelets/telegram-sink.kamelet.yaml  |  99 +++++
 .../kamelets/telegram-source.kamelet.yaml          |  46 +++
 .../resources/kamelets/timer-source.kamelet.yaml   |  56 +++
 .../kamelets/twitter-directmessage.kamelet.yaml    |  73 ++++
 .../resources/kamelets/twitter-search.kamelet.yaml |  73 ++++
 .../kamelets/twitter-timeline.kamelet.yaml         |  74 ++++
 .../resources/kamelets/webhook-source.kamelet.yaml |  31 ++
 .../kamelets/catalog/KameletsCatalogTest.java      |  48 +++
 65 files changed, 4695 insertions(+)

diff --git a/camel-kamelets-catalog/pom.xml b/camel-kamelets-catalog/pom.xml
new file mode 100644
index 0000000..1901e57
--- /dev/null
+++ b/camel-kamelets-catalog/pom.xml
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>23</version>
+    </parent>
+
+    <artifactId>camel-kamelets-catalog</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel Kamelets Catalog</name>
+    <description>Camel Kamelets Catalog</description>
+
+    <properties>
+        <failIfNoTests>false</failIfNoTests>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
+        <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version>
+        <maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version>
+        <maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
+        <maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
+        <maven-source-plugin.version>3.1.0</maven-source-plugin.version>
+        <maven-checksum-maven-plugin.version>1.7</maven-checksum-maven-plugin.version>
+    </properties>
+
+    <developers>
+        <developer>
+            <name>The Apache Camel Team</name>
+            <email>dev@camel.apache.org</email>
+            <url>http://camel.apache.org</url>
+            <organization>Apache Software Foundation</organization>
+            <organizationUrl>http://apache.org/</organizationUrl>
+            <properties>
+                <picUrl>http://camel.apache.org/banner.data/apache-camel-7.png</picUrl>
+            </properties>
+        </developer>
+    </developers>
+
+    <mailingLists>
+        <mailingList>
+            <name>Development List</name>
+            <subscribe>dev-subscribe@camel.apache.org</subscribe>
+            <unsubscribe>dev-unsubscribe@camel.apache.org</unsubscribe>
+            <post>dev@camel.apache.org</post>
+        </mailingList>
+        <mailingList>
+            <name>User List</name>
+            <subscribe>users-subscribe@camel.apache.org</subscribe>
+            <unsubscribe>users-unsubscribe@camel.apache.org</unsubscribe>
+            <post>users@camel.apache.org</post>
+        </mailingList>
+        <mailingList>
+            <name>Commits List</name>
+            <subscribe>commits-subscribe@camel.apache.org</subscribe>
+            <unsubscribe>commits-unsubscribe@camel.apache.org</unsubscribe>
+            <post>commits@camel.apache.org</post>
+        </mailingList>
+    </mailingLists>
+
+    <scm>
+        <connection>scm:git:http://gitbox.apache.org/repos/asf/camel-kamelets.git</connection>
+        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/camel-kamelets.git</developerConnection>
+        <url>https://gitbox.apache.org/repos/asf?p=camel-kamelets.git;a=summary</url>
+        <tag>HEAD</tag>
+    </scm>
+
+    <issueManagement>
+        <system>GitHub</system>
+        <url>https://github.com/apache/camel-kamelets/issues</url>
+    </issueManagement>
+
+    <repositories>
+        <repository>
+            <id>apache.snapshots</id>
+            <url>https://repository.apache.org/snapshots/</url>
+            <name>Apache Snapshot Repo</name>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>apache.snapshots</id>
+            <url>https://repository.apache.org/snapshots/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </pluginRepository>
+    </pluginRepositories>
+
+    <dependencies>
+
+<dependency>
+    <groupId>com.fasterxml.jackson.dataformat</groupId>
+    <artifactId>jackson-dataformat-yaml</artifactId>
+    <version>2.11.4</version>
+</dependency>
+<dependency>
+    <groupId>io.fabric8</groupId>
+    <artifactId>camel-k-model-v1alpha1</artifactId>
+    <version>5.3.1</version>
+</dependency>
+<dependency>
+    <groupId>com.fasterxml.jackson.datatype</groupId>
+    <artifactId>jackson-datatype-jsr310</artifactId>
+    <version>2.11.4</version>
+</dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.8.0</version>
+        </dependency>
+        <!-- logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+    <version>2.13.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+    <version>2.13.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+    <version>2.13.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+    <version>5.7.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+    <version>5.7.1</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+
+        <pluginManagement>
+            <plugins>
+
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.13</version>
+                    <configuration>
+                        <excludeSubProjects>false</excludeSubProjects>
+                        <excludes>
+                            <exclude>**/generated.txt</exclude>
+                            <exclude>**/*.json</exclude>
+                            <exclude>**/README</exclude>
+                            <exclude>**/README.txt</exclude>
+                            <exclude>**/README.md</exclude>
+                            <exclude>**/ReadMe.md</exclude>
+                            <exclude>**/resources/**/*.xsd</exclude>
+                            <exclude>**/webapp/js/**/*</exclude>
+                            <exclude>**/test/resources/**/*</exclude>
+                            <exclude>**/test/data*/**/*</exclude>
+                            <exclude>.gitignore</exclude>
+                            <exclude>.git/**/*</exclude>
+                            <exclude>**/*.adoc</exclude>
+                            <exclude>**/*.adoc.template</exclude>
+                            <exclude>**/*.md</exclude>
+                            <exclude>**/*.sh</exclude>
+                            <exclude>**/*.bat</exclude>
+                            <exclude>**/java9-maven-settings</exclude>
+                            <exclude>**/*.pfx</exclude>
+                            <!-- tooling json-simple parser -->
+                            <exclude>**/src/main/java/org/json/simple/**</exclude>
+                            <!-- tooling/camel-manual/src/styles/print.css use a different license -->
+                            <exclude>**/src/styles/print.css</exclude>
+                            <!-- tooling for component docs -->
+                            <exclude>**/component-header.mvel</exclude>
+                            <exclude>**/component-options.mvel</exclude>
+                            <exclude>**/endpoint-options.mvel</exclude>
+                            <exclude>**/dataformat-options.mvel</exclude>
+                            <exclude>**/eip-options.mvel</exclude>
+                            <exclude>**/language-options.mvel</exclude>
+                            <exclude>**/website-components-list.mvel</exclude>
+                            <exclude>**/website-languages-list.mvel</exclude>
+                            <exclude>**/website-others-list.mvel</exclude>
+                            <exclude>**/website-dataformats-list.mvel</exclude>
+                            <exclude>**/readme-examples.mvel</exclude>
+                            <exclude>**/spring-boot-auto-configure-options.mvel</exclude>
+                            <exclude>**/camel-NOTICE.txt</exclude>
+                            <exclude>**/spring-boot-starter-NOTICE.txt</exclude>
+                            <!-- cxf does not handle comments here -->
+                            <exclude>**/src/main/resources/META-INF/cxf/cxf.extension</exclude>
+                            <exclude>**/src/main/resources/META-INF/cxf/bus-extensions.txt</exclude>
+                            <!-- ignore the api signatures files -->
+                            <exclude>**/src/signatures/*.txt</exclude>
+                            <!-- camel-salesforce BSD license from salesforce developers -->
+                            <exclude>**/CometDReplayExtension.java</exclude>
+                            <exclude>**/LICENSE-SALESFORCE.txt</exclude>
+                            <!-- camel-as2 -->
+                            <exclude>**/mdnDescription.vm</exclude>
+                            <!-- camel-jbpm -->
+                            <exclude>**/src/main/resources/*.wid</exclude>
+                            <!-- camel website and user-manual -->
+                            <exclude>**/node/**</exclude>
+                            <exclude>**/node_modules/**</exclude>
+                            <exclude>**/user-manual/**</exclude>
+                            <exclude>**/yarn.lock</exclude>
+                            <!-- examples -->
+                            <exclude>**/fabric8/*.yaml</exclude>
+                            <exclude>**/src/main/data/*.patient</exclude>
+                            <exclude>**/src/main/data/*.csv</exclude>
+                            <exclude>**/src/main/resources/avro/*.avsc</exclude>
+                            <!-- generated files -->
+                            <exclude>**/target/**/*</exclude>
+                            <exclude>**/eclipse-classes/**/*</exclude>
+                            <exclude>**/.*</exclude>
+                            <exclude>**/.settings/**/*</exclude>
+                            <exclude>**/*.iml</exclude>
+                            <exclude>**/.idea/**/*</exclude>
+                            <exclude>**/avro/**/*.avpr</exclude>
+                            <exclude>**/OSGI-INF/bundle.info</exclude>
+                            <exclude>**/test_rsa*</exclude>
+                            <exclude>**/data*/**/*.xml</exclude>
+                            <exlucde>**/*.log</exlucde>
+                            <exclude>**/id_file</exclude>
+                            <exclude>**/dependency-reduced-pom.xml</exclude>
+                            <exclude>**/Dropbox_API_Terms_and_Conditions.txt</exclude>
+                            <exclude>**/MerchandiseRestResource.apxc</exclude>
+                            <exclude>**/file-sig-api.txt</exclude>
+                            <exclude>**/Tasks__c.java</exclude>
+                            <exclude>**/*.proto</exclude>
+                            <exclude>
+                                **/src/main/resources/META-INF/services/org.kie.server.services.api.KieServerExtension
+                            </exclude>
+                            <!-- Maven Wrapper -->
+                            <exclude>.mvn/**/*</exclude>
+                        </excludes>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${maven-surefire-plugin.version}</version>
+                    <configuration>
+                        <failIfNoTests>false</failIfNoTests>
+                    </configuration>
+                </plugin>
+           <plugin>
+            <artifactId>maven-resources-plugin</artifactId>
+            <version>3.1.0</version>
+            <executions>
+                <execution>
+                    <id>copy-resource-one</id>
+                    <phase>install</phase>
+                    <goals>
+                        <goal>copy-resources</goal>
+                    </goals>
+
+                    <configuration>
+                        <outputDirectory>src/main/resources/kamelets</outputDirectory>
+                        <resources>
+                            <resource>
+                                <directory>../</directory>
+                                <includes>
+                                    <include>*.kamelet.yaml</include>
+                                </includes>
+                            </resource>
+                        </resources>
+                    </configuration>
+                </execution>
+           </executions>
+        </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+    <profiles>
+        <profile>
+            <id>release</id>
+            <activation>
+                <property>
+                    <name>release</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <!-- We want to deploy the artifact to a staging location for perusal -->
+                    <plugin>
+                        <inherited>true</inherited>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <version>${maven-deploy-plugin.version}</version>
+                        <configuration>
+                            <updateReleaseInfo>true</updateReleaseInfo>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                        <version>${maven-source-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>attach-sources</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <version>${maven-javadoc-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>attach-javadocs</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <doclint>none</doclint>
+                        </configuration>
+                    </plugin>
+                    <!-- We want to sign the artifact, the POM, and all attached artifacts -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <version>${maven-gpg-plugin.version}</version>
+                        <configuration>
+                            <passphrase>${gpg.passphrase}</passphrase>
+                            <useAgent>${gpg.useagent}</useAgent>
+                            <gpgArguments>
+                                <arg>--pinentry-mode</arg>
+                                <arg>loopback</arg>
+                            </gpgArguments>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>sign</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>net.nicoulaj.maven.plugins</groupId>
+                        <artifactId>checksum-maven-plugin</artifactId>
+                        <version>${maven-checksum-maven-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>source-release-checksum</id>
+                                <goals>
+                                    <goal>files</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <algorithms>
+                                <algorithm>SHA-512</algorithm>
+                                <algorithm>SHA-256</algorithm>
+                                <algorithm>SHA-1</algorithm>
+                                <algorithm>MD5</algorithm>
+                            </algorithms>
+                            <csvSummary>false</csvSummary>
+                            <fileSets>
+                                <fileSet>
+                                    <directory>${project.build.directory}</directory>
+                                    <includes>
+                                        <include>${project.artifactId}-${project.version}-sources.jar</include>
+                                        <include>${project.artifactId}-${project.version}-package.tar.gz</include>
+                                        <!--XXX: keep this in sync with distribution/pom.xml <finalName> tag-->
+                                        <include>camel-kafka-connector-${project.version}-src.zip</include>
+                                    </includes>
+                                </fileSet>
+                            </fileSets>
+                            <failIfNoFiles>false</failIfNoFiles><!-- usually, no file to do checksum: don't consider error -->
+                        </configuration>
+                    </plugin>
+       </plugins>
+       </build>
+       </profile>
+       </profiles>
+</project>
diff --git a/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java b/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
new file mode 100644
index 0000000..ed982e7
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kamelets.catalog;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
+import io.fabric8.camelk.v1alpha1.Kamelet;
+import org.apache.commons.io.Charsets;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class KameletsCatalog {
+
+    private static final Logger LOG = LoggerFactory.getLogger(KameletsCatalog.class);
+    private static final String KAMELETS_DIR = "kamelets";
+    private static final String KAMELETS_FILE_SUFFIX = ".kamelet.yaml";
+    private static ObjectMapper mapper = new ObjectMapper(new YAMLFactory()).configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+    private Map<String, Kamelet> kameletModels = new HashMap<>();
+
+    public KameletsCatalog() throws IOException {
+        initCatalog();
+    }
+
+    private void initCatalog() throws IOException {
+        List<String> files = IOUtils.readLines(KameletsCatalog.class.getClassLoader().getResourceAsStream(KAMELETS_DIR), Charsets.UTF_8);
+        for (String fileName:
+             files) {
+            Kamelet kamelet = mapper.readValue(KameletsCatalog.class.getClassLoader().getResourceAsStream(KAMELETS_DIR + File.separator + fileName), Kamelet.class);
+            kameletModels.put(sanitizeFileName(fileName), kamelet);
+        }
+    }
+
+    private String sanitizeFileName(String fileName) {
+        int index = fileName.lastIndexOf(KAMELETS_FILE_SUFFIX);
+        if (index > 0) {
+            fileName = fileName.substring(0, index);
+        }
+        return fileName;
+    }
+
+    public Map<String, Kamelet> getKamelets() {
+        return kameletModels;
+    }
+
+    public List<Kamelet> getKameletsByName(String name) {
+        List<Kamelet> collect = kameletModels.entrySet().stream()
+                .filter(x -> x.getKey().contains(name))
+                .map(Map.Entry::getValue)
+                .collect(Collectors.toList());
+        return collect;
+    }
+
+    public List<Kamelet> getKameletsByType(String type) {
+        List<Kamelet> collect = kameletModels.entrySet().stream()
+                .filter(x -> x.getValue().getMetadata().getLabels().get("camel.apache.org/kamelet.type").contains(type))
+                .map(Map.Entry::getValue)
+                .collect(Collectors.toList());
+        return collect;
+    }
+}
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml
new file mode 100644
index 0000000..24a7c31
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml
@@ -0,0 +1,71 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-ddb-streams-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS DynamoDB Streams Source"
+    description: |-
+      Receive events from AWS DynamoDB Streams.
+    required:
+      - table
+      - accessKey
+      - secretKey
+      - region
+    properties:
+      table:
+        title: Table
+        description: Name of the DynamoDB table to look at
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      iteratorType:
+        title: Iterator Type
+        description: Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if {AT,AFTER}_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. There are 4 enums and the value can be one of TRIM_HORIZON, LATEST, AT_SEQUENCE_NUMBER, AFTER_SEQUENCE_NUMBER
+        type: string
+        default: LATEST
+      sequenceNumberProvider:
+        title: Sequence Number Provider
+        description: Provider for the sequence number when using one of the two ShardIteratorType AT_SEQUENCE_NUMBER or AFTER_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number.
+        type: string
+        example: "900000000005745712447"
+        default: "000000000000000000000"
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:gson"
+  flow:
+    from:
+      uri: "aws2-ddbstream:{{table}}"
+      parameters:
+        secretKey: "{{secretKey}}"
+        accessKey: "{{accessKey}}"
+        region: "{{region}}"
+        iteratorType: "{{iteratorType}}"
+        sequenceNumberProvider: "{{sequenceNumberProvider}}"
+      steps:
+      - marshal:
+          json: 
+            library: Gson
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml
new file mode 100644
index 0000000..33ac7c4
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml
@@ -0,0 +1,51 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-kinesis-firehose-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODUgODUiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjIuNSIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTEzLjc2NiAzLjEyaDUyLjQ2OGMzLjY1MSAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS Kinesis Firehose Sink
+    description: |-
+      Send message to an AWS Kinesis Firehose Stream
+    required:
+      - streamName
+      - accessKey
+      - secretKey
+      - region
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-kinesis-firehose:{{streamName}}"
+          parameters:
+            accessKey: "{{accessKey}}"
+            secretKey: "{{secretKey}}"
+            region: "{{region}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml
new file mode 100644
index 0000000..50ac834
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml
@@ -0,0 +1,92 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-kinesis-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: "AWS Kinesis Sink"
+    description: |-
+      Send data to AWS Kinesis.
+
+      The Kamelet expects the following header:
+
+      - `partition` / `ce-partition`: to set the Kinesis partition key
+
+      If the header won't be set the exchange ID will be used.
+
+      The Kamelet is also able to recognize the following header:
+
+      - `sequence-number` / `ce-sequence-number`: to set the Sequence number
+
+      This header is optional.
+    required:
+      - stream
+      - accessKey
+      - secretKey
+      - region
+    properties:
+      stream:
+        title: Stream Name
+        description: The Kinesis stream that you want to access (needs to be created in advance)
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to (capitalized name)
+        type: string
+        example: eu-west-1
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[partition]}"
+            steps:
+            - set-header:
+                name: CamelAwsKinesisPartitionKey
+                simple: "${header[partition]}"
+          - simple: "${header[ce-partition]}"
+            steps:
+            - set-header:
+                name: CamelAwsKinesisPartitionKey
+                simple: "${header[ce-partition]}"
+          otherwise:
+            steps:
+            - set-property:
+                name: CamelAwsKinesisPartitionKey
+                simple: "${exchangeId}"
+      - choice:
+          when:
+          - simple: "${header[sequence-number]}"
+            steps:
+            - set-header:
+                name: CamelAwsKinesisSequenceNumber
+                simple: "${header[sequence-number]}"
+          - simple: "${header[ce-sequence-number]}"
+            steps:
+            - set-header:
+                name: CamelAwsKinesisSequenceNumber
+                simple: "${header[ce-sequence-number]}"
+      - to:
+          uri: "aws2-kinesis:{{stream}}"
+          parameters:
+            secretKey: "{{secretKey}}"
+            accessKey: "{{accessKey}}"
+            region: "{{region}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml
new file mode 100644
index 0000000..4a81352
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml
@@ -0,0 +1,53 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-kinesis-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS Kinesis Source"
+    description: |-
+      Receive data from AWS Kinesis.
+    required:
+      - stream
+      - accessKey
+      - secretKey
+      - region
+    properties:
+      stream:
+        title: Stream Name
+        description: The Kinesis stream that you want to access (needs to be created in advance)
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to (capitalized name)
+        type: string
+        example: eu-west-1
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: aws2-kinesis:{{stream}}
+      parameters:
+        secretKey: "{{secretKey}}"
+        accessKey: "{{accessKey}}"
+        region: "{{region}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
new file mode 100644
index 0000000..4cf46d7
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
@@ -0,0 +1,51 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-lambda-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMjQ1LjI2MmwxNi4zMjIgOC4xNjFMMTkgMjQ4LjY2OFY1OS4zMzNsLTIuNjc4LTMuNDk0TDAgNjR2MTgxLjI2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik00Ny42NzggNjMuNTdsLTMxLjM1Ni03LjczMXYxOTcuNTg0bDMxLjM1Ni03LjMwMlY2My41NyIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0xNDMuODkzIDc4LjYwNGwyMi [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS Lambda Sink
+    description: |-
+      Send a payload to an AWS Lambda function
+    required:
+      - function
+      - accessKey
+      - secretKey
+      - region
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-lambda:{{function}}"
+          parameters:
+            accessKey: "{{accessKey}}"
+            secretKey: "{{secretKey}}"
+            region: "{{region}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
new file mode 100644
index 0000000..5caafb2
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
@@ -0,0 +1,94 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-s3-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "AWS S3 Sink"
+    description: |-
+      Upload data to AWS S3.
+
+      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:
+      - bucketNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    properties:
+      bucketNameOrArn:
+        title: Bucket Name
+        description: The S3 Bucket name or ARN.
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS.
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS.
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to.
+        type: string
+        example: eu-west-1
+      overrideEndpoint:
+        title: Override Endpoint
+        description: Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride.
+        type: boolean
+        default: false
+      uriEndpointOverride:
+        title: Override Endpoint URI
+        description: Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option.
+        type: string
+        example: "http://another-s3-endpoint:9000"
+      autoCreateBucket:
+        title: Autocreate bucket
+        description: Setting the autocreation of the S3 bucket bucketName.
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - set-header:
+                name: CamelAwsS3Key
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - set-header:
+                name: CamelAwsS3Key
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: CamelAwsS3Key
+                simple: "${exchangeId}"
+      - to:
+          uri: "aws2-s3:{{bucketNameOrArn}}"
+          parameters:
+            secretKey: "{{secretKey}}"
+            accessKey: "{{accessKey}}"
+            region: "{{region}}"
+            uriEndpointOverride: "{{uriEndpointOverride}}"
+            overrideEndpoint: "{{overrideEndpoint}}"
+            autoCreateBucket: "{{autoCreateBucket}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
new file mode 100644
index 0000000..77f9bee
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
@@ -0,0 +1,69 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-s3-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS S3 Source"
+    description: |-
+      Receive data from AWS S3.
+    required:
+      - bucketNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    properties:
+      bucketNameOrArn:
+        title: Bucket Name
+        description: The S3 Bucket name or ARN
+        type: string
+      deleteAfterRead:
+        title: Auto-delete objects
+        description: Delete objects after consuming them
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      autoCreateBucket:
+        title: Autocreate bucket
+        description: Setting the autocreation of the S3 bucket bucketName. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "aws2-s3:{{bucketNameOrArn}}"
+      parameters:
+        autoCreateBucket: "{{autoCreateBucket}}"
+        secretKey: "{{secretKey}}"
+        accessKey: "{{accessKey}}"
+        region: "{{region}}"
+        deleteAfterRead: "{{deleteAfterRead}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
new file mode 100644
index 0000000..21bcc58
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
@@ -0,0 +1,103 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-sns-fifo-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+    camel.apache.org/requires.runtime: "camel-quarkus"
+spec:
+  definition:
+    title: AWS SNS FIFO Sink
+    description: Send message to an AWS SQS FIFO Queue
+    required:
+      - topicNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      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
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  dependencies:
+  - camel-quarkus:aws2-sns
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - set-property:
+          name: contentBasedDeduplication
+          constant: "{{contentBasedDeduplication}}"
+      - choice:
+          when:
+          - simple: "${header[group]}"
+            steps:
+            - set-property:
+                name: CamelAwsSnsMessageGroupId
+                simple: "${header[group]}"
+          - simple: "${header[ce-group]}"
+            steps:
+            - set-property:
+                name: CamelAwsSnsMessageGroupId
+                simple: "${header[ce-group]}"
+          otherwise:
+            steps:
+            - set-property:
+                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}}"
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useContentBasedDeduplication"
+          otherwise:
+            steps:
+            - to:
+                uri: "aws2-sns:{{topicNameOrArn}}"
+                parameters:
+                  autoCreateTopic: "{{autoCreateTopic}}"
+                  accessKey: "{{accessKey}}"
+                  secretKey: "{{secretKey}}"
+                  region: "{{region}}"
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useExchangeId"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
new file mode 100644
index 0000000..6a668e0
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
@@ -0,0 +1,59 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-sns-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SNS Sink
+    description: |-
+      Send message to an AWS SNS Topic
+    required:
+      - topicNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    properties:
+      topicNameOrArn:
+        title: Topic Name
+        description: The SQS Topic name or ARN
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      autoCreateTopic:
+        title: Autocreate topic
+        description: Setting the autocreation of the SNS topic. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-sns:{{topicNameOrArn}}"
+          parameters:
+            autoCreateTopic: "{{autoCreateTopic}}"
+            accessKey: "{{accessKey}}"
+            secretKey: "{{secretKey}}"
+            region: "{{region}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
new file mode 100644
index 0000000..8a95a76
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
@@ -0,0 +1,67 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-sqs-batch-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SQS Batch Sink
+    description: |-
+      Send Batch message to an AWS SQS Queue
+    required:
+      - queueNameOrArn
+      - accessKey
+      - secretKey
+      - region
+      - batchSeparator
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      autoCreateQueue:
+        title: Autocreate queue
+        description: Setting the autocreation of the SQS queue. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+      batchSeparator:
+        title: Batch Separator
+        description: The batch separator string
+        type: string
+        example: ","
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-sqs:{{queueNameOrArn}}"
+          parameters:
+            autoCreateQueue: "{{autoCreateQueue}}"
+            accessKey: "{{accessKey}}"
+            secretKey: "{{secretKey}}"
+            region: "{{region}}"
+            batchSeparator: "{{batchSeparator}}"
+            operation: "sendBatchMessage" 
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
new file mode 100644
index 0000000..dd2a427
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
@@ -0,0 +1,103 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-sqs-fifo-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+    camel.apache.org/requires.runtime: "camel-quarkus"
+spec:
+  definition:
+    title: AWS SQS FIFO Sink
+    description: Send message to an AWS SQS FIFO Queue
+    required:
+      - queueNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      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
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  dependencies:
+  - camel-quarkus:aws2-sqs
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - set-property:
+          name: contentBasedDeduplication
+          constant: "{{contentBasedDeduplication}}"
+      - choice:
+          when:
+          - simple: "${header[group]}"
+            steps:
+            - set-property:
+                name: CamelAwsMessageGroupId
+                simple: "${header[group]}"
+          - simple: "${header[ce-group]}"
+            steps:
+            - set-property:
+                name: CamelAwsMessageGroupId
+                simple: "${header[ce-group]}"
+          otherwise:
+            steps:
+            - set-property:
+                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}}"
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useContentBasedDeduplication"
+          otherwise:
+            steps:
+            - to:
+                uri: "aws2-sqs:{{queueNameOrArn}}"
+                parameters:
+                  autoCreateQueue: "{{autoCreateQueue}}"
+                  accessKey: "{{accessKey}}"
+                  secretKey: "{{secretKey}}"
+                  region: "{{region}}"
+                  messageGroupIdStrategy: "usePropertyValue"
+                  messageDeduplicationIdStrategy: "useExchangeId"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
new file mode 100644
index 0000000..d4151fe
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
@@ -0,0 +1,59 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-sqs-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+spec:
+  definition:
+    title: AWS SQS Sink
+    description: |-
+      Send message to an AWS SQS Queue
+    required:
+      - queueNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      autoCreateQueue:
+        title: Autocreate queue
+        description: Setting the autocreation of the SQS queue. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - to:
+          uri: "aws2-sqs:{{queueNameOrArn}}"
+          parameters:
+            autoCreateQueue: "{{autoCreateQueue}}"
+            accessKey: "{{accessKey}}"
+            secretKey: "{{secretKey}}"
+            region: "{{region}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
new file mode 100644
index 0000000..20e7326
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
@@ -0,0 +1,69 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: aws-sqs-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "AWS SQS Source"
+    description: |-
+      Receive data from AWS SQS.
+    required:
+      - queueNameOrArn
+      - accessKey
+      - secretKey
+      - region
+    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
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from AWS
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      region:
+        title: AWS Region
+        description: The AWS region to connect to
+        type: string
+        example: eu-west-1
+      autoCreateQueue:
+        title: Autocreate queue
+        description: Setting the autocreation of the SQS queue. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "aws2-sqs:{{queueNameOrArn}}"
+      parameters:
+        autoCreateQueue: "{{autoCreateQueue}}"
+        secretKey: "{{secretKey}}"
+        accessKey: "{{accessKey}}"
+        region: "{{region}}"
+        deleteAfterRead: "{{deleteAfterRead}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml
new file mode 100644
index 0000000..9208f06
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml
@@ -0,0 +1,71 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: azure-eventhubs-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Eventhubs Sink"
+    description: |-
+      Send Events to Azure Eventhubs.
+
+      The Kamelet is able to understand the following headers to be set:
+
+      - `partition` / `ce-partition`: as the time to live of the message in the queue.
+
+      If the header won't be set then the partition will be assigned by Eventhubs
+    required:
+      - namespaceName
+      - eventhubName
+      - sharedAccessName
+      - sharedAccessKey
+    properties:
+      namespaceName:
+        title: Eventhubs Namespace
+        description: The eventhubs namespace
+        type: string
+      eventhubName:
+        title: Eventhubs name
+        description: The eventhub name
+        type: boolean
+        type: string
+      sharedAccessName:
+        title: Share access name
+        description: EventHubs SAS key name
+        type: string
+      sharedAccessKey:
+        title: Share access key
+        description: The key for EventHubs SAS key name
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  dependencies:
+  - "mvn:com.fasterxml.jackson.core:jackson-core:2.11.3"
+  - "mvn:com.fasterxml.jackson.core:jackson-annotations:2.11.3"
+  - "mvn:com.fasterxml.jackson.core:jackson-databind:2.11.3"
+  - "mvn:com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.3"
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[partition]}"
+            steps:
+            - set-header:
+                name: CamelAzureEventHubsPartitionId
+                simple: "${header[partition]}"
+          - simple: "${header[ce-partition]}"
+            steps:
+            - set-header:
+                name: CamelAzureEventHubsPartitionId
+                simple: "${header[ce-partition]}"
+      - to:
+          uri: "azure-eventhubs://{{namespaceName}}/{{eventhubName}}"
+          parameters:
+            sharedAccessName: "{{sharedAccessName}}"
+            sharedAccessKey: "{{sharedAccessKey}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml
new file mode 100644
index 0000000..863f3df
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml
@@ -0,0 +1,77 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: azure-eventhubs-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Eventhubs Source"
+    description: |-
+      Receive events from Azure Eventhubs.
+    required:
+      - namespaceName
+      - eventhubName
+      - sharedAccessName
+      - sharedAccessKey
+      - blobAccountName
+      - blobAccessKey
+      - blobContainerName
+    properties:
+      namespaceName:
+        title: Eventhubs Namespace
+        description: The eventhubs namespace
+        type: string
+      eventhubName:
+        title: Eventhubs name
+        description: The eventhub name
+        type: boolean
+        type: string
+      sharedAccessName:
+        title: Share access name
+        description: EventHubs SAS key name
+        type: string
+      sharedAccessKey:
+        title: Share access key
+        description: The key for EventHubs SAS key name
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      blobAccountName:
+        title: Azure Storage Blob account name
+        description: The name of the storage blob account to be use
+        type: string
+      blobContainerName:
+        title: Azure Storage Blob container name
+        description: The name of the storage blob container to be use
+        type: string
+      blobAccessKey:
+        title: Azure Storage Blob access key
+        description: The key for Azure Storage Blob service associated with the Blob account name
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "mvn:com.fasterxml.jackson.core:jackson-core:2.11.3"
+  - "mvn:com.fasterxml.jackson.core:jackson-annotations:2.11.3"
+  - "mvn:com.fasterxml.jackson.core:jackson-databind:2.11.3"
+  - "mvn:com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.3"
+  flow:
+    from:
+      uri: 'azure-eventhubs://{{namespaceName}}/{{eventhubName}}'
+      parameters:
+        sharedAccessName: "{{sharedAccessName}}"
+        sharedAccessKey: "{{sharedAccessKey}}"
+        blobAccountName: "{{blobAccountName}}"
+        blobAccessKey: "{{blobAccessKey}}"
+        blobContainerName: "{{blobContainerName}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml
new file mode 100644
index 0000000..66fa830
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml
@@ -0,0 +1,70 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Blob Sink"
+    description: |-
+      Upload data to Azure Storage Blob.
+
+      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:
+      - accountName
+      - containerName
+      - accessKey
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      operation:
+        title: Operation name
+        description: The operation to perform.
+        type: string
+        default: uploadBlockBlob
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - set-header:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - set-header:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: CamelAzureStorageBlobBlobName
+                simple: "${exchangeId}"
+      - to:
+          uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
+          parameters:
+            accessKey: "{{accessKey}}"
+            operation: "{{operation}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml
new file mode 100644
index 0000000..93aa156
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml
@@ -0,0 +1,60 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: azure-storage-blob-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Azure Storage Blob Source"
+    description: |-
+      Consume Files from Azure Storage Blob.
+    required:
+      - period
+      - accountName
+      - containerName
+      - accessKey
+    properties:
+      period:
+        title: Period between polls
+        description: The interval between fetches to the Azure Storage Container in milliseconds
+        type: integer
+        default: 10000
+      accountName:
+        title: Account Name
+        description: The Azure Storage Blob account name.
+        type: string
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  flow:
+    from:
+      uri: "timer:azure-storage-blob-stream"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - to:
+          uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
+          parameters:
+            operation: "listBlobs"
+            accessKey: "{{accessKey}}"
+      - split:
+          jsonpath: "$.*"
+          steps:
+          - set-property:
+              name: azureBlobName
+              simple: ${body.name}
+          - to-d: "azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{accessKey}})&operation=getBlob&blobName=${exchangeProperty.azureBlobName}"
+          - to: "kamelet:sink"
+          - to-d: "azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{accessKey}})&operation=deleteBlob&blobName=${exchangeProperty.azureBlobName}"
+
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml
new file mode 100644
index 0000000..fd9fcbd
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml
@@ -0,0 +1,61 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: azure-storage-queue-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Azure Storage Queue Sink"
+    description: |-
+      Send Messages to Azure Storage queues.
+
+      The Kamelet is able to understand the following headers to be set:
+
+      - `expiration` / `ce-expiration`: as the time to live of the message in the queue.
+
+      If the header won't be set the default of 7 days will be used.
+
+      The format should be in this form: PnDTnHnMn.nS., e.g: PT20.345S — parses as 20.345 seconds, P2D — parses as 2 days.
+    required:
+      - accountName
+      - queueName
+      - accessKey
+    properties:
+      accountName:
+        title: Account Name
+        description: The Azure Storage Queue account name.
+        type: string
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[expiration]}"
+            steps:
+            - set-header:
+                name: CamelAzureStorageQueueTimeToLive
+                simple: "${header[expiration]}"
+          - simple: "${header[ce-expiration]}"
+            steps:
+            - set-header:
+                name: CamelAzureStorageQueueTimeToLive
+                simple: "${header[ce-expiration]}"
+      - to:
+          uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
+          parameters:
+            accessKey: "{{accessKey}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml
new file mode 100644
index 0000000..9d35788
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml
@@ -0,0 +1,60 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: bitcoin-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNjQiIHdpZHRoPSI2NCIgdmVyc2lvbj0iMS4xIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwNjMwODc2LC0wLjAwMzAxOT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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.
+    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
+  flow:
+    from:
+      uri: "timer:update"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - to: "xchange:binance?service=marketdata&method=ticker&currencyPair=BTC/USDT"
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
new file mode 100644
index 0000000..8977d39
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
@@ -0,0 +1,72 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: caffeine-action
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9ItCh0LvQvtC5XzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyODEuOCAyNzMuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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-caffeine-key`: as the cache key used in the operation
+
+      - `caffeine-operation` / `ce-caffeine-operation`: 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
+    properties:
+      cacheName:
+        title: Cache name
+        description: The name of the cache we want to use
+        type: string
+        default: caffeine-cache
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[caffeine-key]}"
+            steps:
+            - set-header:
+                name: CamelCaffeineKey
+                simple: "${header[caffeine-key]}"
+          - simple: "${header[ce-caffeine-key]}"
+            steps:
+            - set-header:
+                name: CamelCaffeineKey
+                simple: "${header[ce-caffeine-key]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: CamelCaffeineKey
+                simple: "${body}"
+      - choice:
+          when:
+          - simple: "${header[caffeine-operation]}"
+            steps:
+            - set-header:
+                name: CamelCaffeineAction
+                simple: "${header[caffeine-operation]}"
+          - simple: "${header[ce-caffeine-operation]}"
+            steps:
+            - set-header:
+                name: CamelCaffeineAction
+                simple: "${header[ce-caffeine-operation]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: CamelCaffeineAction
+                constant: "GET"
+      - to:
+          uri: "caffeine-cache:{{cacheName}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml
new file mode 100644
index 0000000..6a9d428
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml
@@ -0,0 +1,75 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: cassandra-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Cassandra Sink"
+    description: |-
+      Send data to a Cassandra Cluster.
+
+      This Kamelet expects the body as JSON Array. The content of the JSON Array will be used as input for the CQL Prepared Statement set in the query parameter.
+    required:
+      - host
+      - port
+      - keyspace
+      - username
+      - password
+      - query
+    properties:
+      host:
+        title: Host
+        description: Hostname(s) cassandra server(s). Multiple hosts can be separated by comma.
+        type: string
+        example: localhost
+      port:
+        title: Port
+        description: Port number of cassandra server(s)
+        type: string
+        example: 9042
+      keyspace:
+        title: Keyspace 
+        description: Keyspace to use
+        type: string
+        example: customers
+      username:
+        title: Username
+        description: The username to use for accessing a secured Cassandra Cluster
+        type: string
+      password:
+        title: Password
+        description: The password to use for accessing a secured Cassandra Cluster
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      consistencyLevel:
+        title: Consistency Level
+        description: Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE
+        type: string
+        default: ANY
+      preparedStatement:
+        title: The Prepared statement
+        description: The Prepared statement to execute against the Cassandra cluster table
+        type: string
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - unmarshal:
+          json: 
+            library: Jackson
+            useList: true
+      - to: 
+          uri: "cql://{{host}}:{{port}}/{{keyspace}}"
+          parameters:
+            username: "{{username}}"
+            password: "{{password}}"
+            preparedStatement: "{{preparedStatement}}"
+            consistencyLevel: "{{consistencyLevel}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml
new file mode 100644
index 0000000..89e5fd6
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml
@@ -0,0 +1,79 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: cassandra-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Cassandra Source"
+    description: |-
+      Query a Cassandra cluster table.
+    required:
+      - host
+      - port
+      - keyspace
+      - username
+      - password
+      - query
+    properties:
+      host:
+        title: Host
+        description: Hostname(s) cassandra server(s). Multiple hosts can be separated by comma.
+        type: string
+        example: localhost
+      port:
+        title: Port
+        description: Port number of cassandra server(s)
+        type: string
+        example: 9042
+      keyspace:
+        title: Keyspace 
+        description: Keyspace to use
+        type: string
+        example: customers
+      username:
+        title: Username
+        description: The username to use for accessing a secured Cassandra Cluster
+        type: string
+      password:
+        title: Password
+        description: The password to use for accessing a secured Cassandra Cluster
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      resultStrategy:
+        title: Result Strategy
+        description: The strategy to convert the result set of the query. Possible values are ALL, ONE, LIMIT_10, LIMIT_100...
+        type: string
+        default: ALL
+      consistencyLevel:
+        title: Consistency Level
+        description: Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE
+        type: string
+        default: ANY
+      query:
+        title: Query
+        description: The query to execute against the Cassandra cluster table
+        type: string
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "cql://{{host}}:{{port}}/{{keyspace}}"
+      parameters:
+        username: "{{username}}"
+        password: "{{password}}"
+        cql: "{{query}}"
+        consistencyLevel: "{{consistencyLevel}}"
+        resultSetConversionStrategy: "{{resultStrategy}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml
new file mode 100644
index 0000000..6e0266c
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml
@@ -0,0 +1,43 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: cron-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAxOTIuNzU2IDE5Mi43NTYiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDE5Mi43NTZ2MTkyLjc1NkgwVjB6Ii8+PHBhdGggZD0iTTQyLjE2IDEwMy4wNzJsNS45MDEgMS40OTZjLTEuMjQyIDQuODY1LTMuNDc2IDguNTc0LTYuNzAxIDExLjEyOXMtNy4xNjcgMy44MzItMTEuODI2IDMuODMyYy00LjgyMyAwLTguNzQ2LS45ODItMTEuNzY3LTIuOTQ3LT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Cron Source"
+    description: |-
+      Send events at specific time.
+    required:
+      - schedule
+      - message
+    properties:
+      schedule:
+        title: Cron Schedule
+        description: A cron expression that will be used to generate events
+        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-quarkus:quartz
+  flow:
+    from:
+      uri: "cron:tick"
+      parameters:
+        schedule: "{{schedule}}"
+      steps:
+        - set-body:
+            constant: "{{message}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml
new file mode 100644
index 0000000..c2fb484
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml
@@ -0,0 +1,66 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: dns-dig-action
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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-domain-name`: as the domain for which we are querying the DNS
+
+      - `dns-type` / `ce-dns-type`: 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.
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[domain-name]}"
+            steps:
+            - set-header:
+                name: dns.name
+                simple: "${header[domain-name]}"
+          - simple: "${header[ce-domain-name]}"
+            steps:
+            - set-header:
+                name: dns.name
+                simple: "${header[ce-domain-name]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: dns.name
+                simple: "${body}"
+      - choice:
+          when:
+          - simple: "${header[dns-type]}"
+            steps:
+            - set-header:
+                name: dns.type
+                simple: "${header[dns-type]}"
+          - simple: "${header[ce-dns-type]}"
+            steps:
+            - set-header:
+                name: dns.type
+                simple: "${header[ce-dns-type]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: dns.type
+                constant: "A"
+      - to:
+          uri: "dns:dig"
+      - convert-body-to:
+          type: "java.lang.String"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml
new file mode 100644
index 0000000..f9b1f41
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml
@@ -0,0 +1,45 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: dns-ip-action
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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.
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[domain]}"
+            steps:
+            - set-header:
+                name: dns.domain
+                simple: "${header[domain]}"
+          - simple: "${header[ce-domain]}"
+            steps:
+            - set-header:
+                name: dns.domain
+                simple: "${header[ce-domain]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: dns.domain
+                simple: "${body}"
+      - to:
+          uri: "dns:ip"
+      - convert-body-to:
+          type: "java.lang.String"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml
new file mode 100644
index 0000000..f67a004
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml
@@ -0,0 +1,50 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: dns-lookup-action
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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-domain-name`: 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.
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[domain-name]}"
+            steps:
+            - set-header:
+                name: dns.domain
+                simple: "${header[domain-name]}"
+          - simple: "${header[ce-domain-name]}"
+            steps:
+            - set-header:
+                name: dns.domain
+                simple: "${header[ce-domain-name]}"
+          otherwise:
+            steps:
+            - set-header:
+                name: dns.domain
+                simple: "${body}"
+      - to:
+          uri: "dns:lookup"
+      - marshal:
+          json: {}
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml
new file mode 100644
index 0000000..ed060c1
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml
@@ -0,0 +1,69 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: dropbox-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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
+    properties:
+      accessToken:
+        title: Dropbox Access Token
+        description: The access Token to use to access Dropbox
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      clientIdentifier:
+        title: The client identifier
+        description: Dropbox App client Identifier
+        type: string
+      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
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - set-header:
+                name: CamelDropboxPutFileName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - set-header:
+                name: CamelDropboxPutFileName
+                simple: "${header[ce-file]}"
+      - to:
+          uri: 'dropbox:put'
+          parameters:
+            accessToken: '{{accessToken}}'
+            remotePath: '{{remotePath}}'
+            clientIdentifier: '{{clientIdentifier}}'
+            uploadMode: '{{uploadMode}}'
+
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml
new file mode 100644
index 0000000..5a1a3d4
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml
@@ -0,0 +1,67 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: dropbox-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Dropbox Source"
+    description: |-
+      Consume Files from Dropbox.
+    required:
+      - period
+      - accessToken
+      - clientIdentifier
+      - remotePath
+      - query
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      clientIdentifier:
+        title: The client identifier
+        description: Dropbox App client Identifier
+        type: string
+      remotePath:
+        title: Remote path
+        description: Original file or folder to work with
+        type: string
+      query:
+        title: Querys
+        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
+  flow:
+    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:
+          - set-property:
+              name: dropboxFileName
+              simple: ${body.metadata.pathDisplay}
+          - to-d: "dropbox:get?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
+          - to: "kamelet:sink"
+          - to-d: "dropbox:del?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
+
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml
new file mode 100644
index 0000000..1954140
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml
@@ -0,0 +1,85 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: earthquake-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwLjAwMyA3OS45OTciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMC4wMDMgNzkuOTk3IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNODEuNjUzLDQyLjk0Yy0xLjM4NywwLTIuNjY2LDAuNzY3LTMuMzE1LDEuOTkyTDcyLjk0Miw1NS4xbC02Lj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.verified: "true"
+    camel.apache.org/requires.runtime: "camel-quarkus"
+spec:
+  definition:
+    title: Earthquake Source
+    description: |-
+      Get data about current earthquake events happening in the world using the USGS API
+    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-quarkus:caffeine
+    - camel-quarkus:http
+  flow:
+    from:
+      uri: "timer:earthquake"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - set-header:
+          name: CamelCaffeineAction
+          constant: GET
+      - tod: "caffeine-cache:cache-${routeId}?key=lastUpdate"
+      - choice:
+          when:
+          - simple: "${header.CamelCaffeineActionHasResult}"
+            steps:
+            - set-property:
+                name: lastUpdate
+                simple: "${body}"
+          otherwise:
+            steps:
+            - set-property:
+                name: lastUpdate
+                simple: "${date-with-timezone:now-{{lookAhead}}m:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
+      - set-header:
+          name: CamelHttpMethod
+          constant: GET
+      - tod: "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&updatedafter=${exchangeProperty.lastUpdate}&orderby=time-asc"
+      - remove-header:
+          header-name: CamelHttpMethod
+      - unmarshal:
+          json: {}
+      - set-property:
+          name: generated
+          simple: "${body[metadata][generated]}"
+      - set-property:
+          name: lastUpdate
+          simple: "${date-with-timezone:exchangeProperty.generated:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
+      - claim-check:
+          operation: Push
+      - set-body:
+          exchange-property: lastUpdate
+      - set-header:
+          name: CamelCaffeineAction
+          constant: PUT
+      - tod: "caffeine-cache:cache-${routeId}?key=lastUpdate"
+      - claim-check:
+          operation: Pop
+      - split:
+          jsonpath: "$.features[*]"
+          steps:
+            - marshal:
+                json: {}
+            - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml
new file mode 100644
index 0000000..83953bd
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml
@@ -0,0 +1,94 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: elasticsearch-search-source
+  labels:
+    camel.apache.org/kamelet.type: "source"
+  annotations:
+    camel.apache.org/kamelet.group: "ElasticSearch"
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2Lj [...]
+spec:
+  sources:
+    - content: |-
+        public class ESWorkaround extends org.apache.camel.builder.RouteBuilder {
+          @Override
+          public void configure() throws Exception {
+            getContext().setAutowiredEnabled(false);
+          }
+        }
+      name: ESWorkaround.java
+  definition:
+    title: "ElasticSearch Index Source"
+    description: |-
+      Search data on ElasticSearch
+    required:
+      - query
+      - clusterName
+      - indexName
+      - hostAddresses
+    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
+      password:
+        title: Password
+        description: Password to connect to ElasticSearch.
+        type: string
+      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: Name of the cluster.
+        type: string
+  dependencies:
+    - "camel:elasticsearch-rest"
+    - "camel:gson"
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: timer:tick
+      parameters:
+        period: "{{period}}"
+      steps:
+        - set-body:
+            constant: "{{query}}"
+        - set-header:
+            name: "Content-Type"
+            constant: "text/plain"
+        - to:
+            uri: "kamelet-reify:elasticsearch-rest:{{clusterName}}"
+            parameters:
+              operation: "SEARCH"
+              indexName: "{{indexName}}"
+              hostAddresses: "{{hostAddresses}}"
+              enableSSL: "{{enableSSL}}"
+              user: "{{user}}"
+              password: "{{password}}"
+        - marshal:
+            json:
+              library: Gson
+        - to: kamelet:sink
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml
new file mode 100644
index 0000000..78bbadf
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml
@@ -0,0 +1,48 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: exec-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMTI4MC4wMDAwMDBwdCIgaGVpZ2h0PSIxMDEyLjAwMDAwMHB0IiB2aWV3Qm94PSIwIDAgMTI4MC4wMDAwMDAgMTAxMi4wMDAwMDAiCiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZW [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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
+      - args
+    properties:
+      executable:
+        title: Executable command
+        description: The command to execute
+        type: string
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[args]}"
+            steps:
+            - set-header:
+                name: CamelExecCommandArgs
+                simple: "${header[args]}"
+          - simple: "${header[ce-args]}"
+            steps:
+            - set-header:
+                name: CamelExecCommandArgs
+                simple: "${header[ce-args]}"
+      - to:
+          uri: "exec:{{executable}}"
+      - set-body:
+          simple: "${body.stdout}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml
new file mode 100644
index 0000000..5d48f2f
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml
@@ -0,0 +1,77 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: fhir-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Fhir Source"
+    description: |-
+      Receive data from Fhir server.
+    required:
+      - serverUrl
+      - username
+      - password
+    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. Possible values are JSON and XML
+        type: string
+        default: "JSON"
+      fhirVersion:
+        title: Fhir version
+        description: The FHIR Version to use. There are 6 enums and the value can be one of DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5
+        type: string
+        default: "R4"
+      username:
+        title: Username
+        description: The username to access the Fhir server
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      password:
+        title: Password
+        description: The password to access the Fhir server
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      prettyPrint:
+        title: Json Pretty Print
+        description: Define if the Json must be pretty print or not
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: true
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "fhir://search/searchByUrl"
+      parameters:
+        serverUrl: "{{serverUrl}}"
+        url: "{{url}}"
+        encoding: "{{encoding}}"
+        fhirVersion: "{{fhirVersion}}"
+        prettyPrint: "{{prettyPrint}}"
+        username: "{{username}}"
+        password: "{{password}}"
+      steps:
+      - marshal:
+          fhirJson:
+            fhir-version: "{{fhirVersion}}"
+            pretty-print: "{{prettyPrint}}" 
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml
new file mode 100644
index 0000000..415a7d4
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml
@@ -0,0 +1,37 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: file-watch-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzY4LjU1MyAzNjguNTUzIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bm [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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:
+      - path
+      - events
+    properties:
+      path:
+        title: The path
+        description: Path of file or folder to watch
+        type: string
+      events:
+        title: The events
+        description: The type of events to consume
+        type: boolean
+        default: "CREATE,MODIFY,DELETE"
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "file-watch:{{path}}"
+      parameters:
+        events: "{{events}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml
new file mode 100644
index 0000000..99cafcc
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml
@@ -0,0 +1,78 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: ftp-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "FTP"
+spec:
+  definition:
+    title: "FTP Source"
+    description: |-
+      Receive data from an FTP Server.
+    required:
+      - host
+      - port
+      - username
+      - password
+      - directoryName
+    properties:
+      host:
+        title: Host
+        description: Hostname of the FTP server
+        type: string
+      port:
+        title: Port
+        description: Port of the FTP server
+        type: string
+        default: 21
+      username:
+        title: Username
+        description: The username to access the FTP server
+        type: string
+      password:
+        title: Password
+        description: The password to access the FTP server
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      directoryName:
+        title: Directory Name
+        description: The starting directory
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Sets passive mode connection
+        type: boolean
+        default: false
+      recursive:
+        title: Recursive
+        description: If a directory, will 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        
+  flow:
+    from:
+      uri: "ftp:{{username}}@{{host}}:{{port}}/{{directoryName}}"
+      parameters:
+        password: "{{password}}"
+        passiveMode: "{{passiveMode}}"
+        recursive: "{{recursive}}"
+        idempotent: "{{idempotent}}"
+      steps:
+      - set-header:
+          name: file
+          simple: "${header[CamelFileName]}"
+      - set-header:
+          name: ce-file
+          simple: "${header[CamelFileName]}"
+      - convert-body-to:
+          type: "java.io.InputStream"
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml
new file mode 100644
index 0000000..a819d10
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml
@@ -0,0 +1,78 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: ftps-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "FTP"
+spec:
+  definition:
+    title: "FTPS Source"
+    description: |-
+      Receive data from an FTPS Server.
+    required:
+      - host
+      - port
+      - username
+      - password
+      - directoryName
+    properties:
+      host:
+        title: Host
+        description: Hostname of the FTPS server
+        type: string
+      port:
+        title: Port
+        description: Port of the FTPS server
+        type: string
+        default: 21
+      username:
+        title: Username
+        description: The username to access the FTPS server
+        type: string
+      password:
+        title: Password
+        description: The password to access the FTPS server
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      directoryName:
+        title: Directory Name
+        description: The starting directory
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Sets passive mode connection
+        type: boolean
+        default: false
+      recursive:
+        title: Recursive
+        description: If a directory, will 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
+  flow:
+    from:
+      uri: "ftps:{{username}}@{{host}}:{{port}}/{{directoryName}}"
+      parameters:
+        password: "{{password}}"
+        passiveMode: "{{passiveMode}}"
+        recursive: "{{recursive}}"
+        idempotent: "{{idempotent}}"
+      steps:
+      - set-header:
+          name: file
+          simple: "${header[CamelFileName]}"
+      - set-header:
+          name: ce-file
+          simple: "${header[CamelFileName]}"
+      - convert-body-to:
+          type: "java.io.InputStream"
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml
new file mode 100644
index 0000000..0adf74c
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml
@@ -0,0 +1,55 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: github-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuOD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Github Source"
+    description: |-
+      Receive events From Github.
+    required:
+      - repoName
+      - repoOwner
+      - oauthToken
+      - type
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      type:
+        title: Event type
+        description: The type of event to consume. One of event, pullRequest, pullRequestComment or tag
+        type: string
+        default: event
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "github://{{type}}"
+      parameters:
+        repoName: "{{repoName}}"
+        repoOwner: "{{repoOwner}}"
+        oauthToken: "{{oauthToken}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml
new file mode 100644
index 0000000..478809c
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml
@@ -0,0 +1,100 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: google-calendar-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4NiAzOCA3NiA3NiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTI0NCA1NmgtNDB2NDBoNDBWNTZ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTI0NCAxMTRsMTgtMThoLTE4djE4eiIvPjxwYXRoIGZpbGw9IiNGQkJDMDQiIGQ9Ik0yNjIgNTZoLTE4djQwaDE4VjU2eiIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Ik0yNDQgOTZoLTQwdjE4aDQwVjk2eiIvPjxwYXRoIGZpbGw9IiMxODgwMzgiIGQ9Ik0xODYgOTZ2MTJjMCAzLjMxNSAyLjY4NSA2IDYgNmgxMlY5NmgtMTh6Ii8+PH [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Google Calendar Source"
+    description: |-
+      Receive data from Google Calendar.
+    required:
+      - index
+      - calendarId
+      - clientId
+      - accessToken
+      - refreshToken
+      - clientSecret
+      - applicationName
+    properties:
+      index:
+        title: Index
+        description: An index for the google calendar endpoint
+        type: string
+      calendarId:
+        title: Calendar ID
+        description: The calendar ID to be used as events source
+        type: string
+      clientId:
+        title: Client Id
+        description: Client ID of the calendar application
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      clientSecret:
+        title: Client Secret
+        description: Client Secret of the calendar application
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessToken:
+        title: Access Token
+        description: OAuth 2 access token for google calendar application. This typically expires after an hour so refreshToken is recommended for long term usage.
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      refreshToken:
+        title: Refresh Token
+        description: OAuth 2 refresh token for google calendar 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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      delay:
+        title: Delay
+        description: Milliseconds before the next poll
+        type: integer
+        default: 500
+      applicationName:
+        title: Application name
+        description: Google Calendar application name
+        type: string
+      syncFlow:
+        title: Sync Flow
+        description: Sync events for incremental synchronization
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+      consumeFromNow:
+        title: Consume from now
+        description: Consume events in the selected calendar from now on
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: true
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    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"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml
new file mode 100644
index 0000000..ed4461c
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml
@@ -0,0 +1,99 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: google-mail-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUyIDQyIDg4IDY2Ij4KPHBhdGggZmlsbD0iIzQyODVmNCIgZD0iTTU4IDEwOGgxNFY3NEw1MiA1OXY0M2MwIDMuMzIgMi42OSA2IDYgNiIvPgo8cGF0aCBmaWxsPSIjMzRhODUzIiBkPSJNMTIwIDEwOGgxNGMzLjMyIDAgNi0yLjY5IDYtNlY1OWwtMjAgMTUiLz4KPHBhdGggZmlsbD0iI2ZiYmMwNCIgZD0iTTEyMCA0OHYyNmwyMC0xNXYtOGMwLTcuNDItOC40Ny0xMS42NS0xNC40LTcuMiIvPgo8cGF0aCBmaWxsPSIjZWE0MzM1IiBkPSJNNzIgNzRWNDhsMjQgMTggMjQtMTh2MjZMOT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  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
+    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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      clientSecret:
+        title: Client Secret
+        description: Client Secret of the gmail application
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      delay:
+        title: Delay
+        description: 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
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        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"
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    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"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml
new file mode 100644
index 0000000..c0590a6
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml
@@ -0,0 +1,100 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: google-sheets-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgODg7Ii [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Google Sheets Source"
+    description: |-
+      Receive data from Google Sheets.
+    required:
+      - index
+      - spreadsheetId
+      - clientId
+      - accessToken
+      - refreshToken
+      - clientSecret
+      - applicationName
+    properties:
+      index:
+        title: Index
+        description: An index for the google sheets endpoint
+        type: string
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      clientSecret:
+        title: Client Secret
+        description: Client Secret of the sheets application
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      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
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      delay:
+        title: Delay
+        description: Milliseconds before the next poll
+        type: integer
+        default: 500
+      applicationName:
+        title: Application name
+        description: Google Sheets application name
+        type: string
+      splitResults:
+        title: Split Results
+        description: True if value range result should be split into rows or columns to process each of them individually. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: true
+      range:
+        title: Consume from now
+        description: the range of rows and columns in a sheet to get data from.
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        example: "A1:B3"
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "google-sheets-stream://{{index}}"
+      parameters:
+        clientId: "{{clientId}}"
+        spreadsheetId: "{{spreadsheetId}}"
+        accessToken: "{{accessToken}}"
+        refreshToken: "{{refreshToken}}"
+        clientSecret: "{{clientSecret}}"
+        delay: "{{delay}}"
+        applicationName: "{{applicationName}}"
+        splitResults: "{{splitResults}}"
+        range: "{{range}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml
new file mode 100644
index 0000000..4da8c7a
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml
@@ -0,0 +1,38 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: http-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: sink
+    camel.apache.org/requires.runtime: "camel-quarkus"
+spec:
+  definition:
+    title: HTTP Sink
+    description: Forwards an event to a HTTP endpoint
+    required:
+    - url
+    properties:
+      url:
+        title: URL
+        description: The URL to send data to
+        type: string
+        example: "https://my-service/path"
+        pattern: "^(http|https)://.*"
+      method:
+        title: Method
+        description: The HTTP method to use
+        type: string
+        default: POST
+  dependencies:
+  - camel-quarkus:http
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - set-header:
+          name: CamelHttpMethod
+          constant: "{{method}}"
+      - to: "{{url}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml
new file mode 100644
index 0000000..39da2db
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml
@@ -0,0 +1,47 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: http-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMC [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/requires.runtime: "camel-quarkus"
+spec:
+  definition:
+    title: "HTTP Source"
+    description: |-
+      Periodically fetches an HTTP resource and provides the content as output.
+    required:
+    - url
+    properties:
+      period:
+        title: Period between updates
+        description: The interval between fetches in milliseconds
+        type: integer
+        default: 10000
+      contentType:
+        title: Content type
+        description: The content type accepted for the resource
+        type: string
+        default: "application/json"
+      url:
+        title: URL
+        description: The URL to fetch for data
+        type: string
+        example: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json"
+        pattern: "^(http|https)://.*"
+  dependencies:
+    - "camel-quarkus:http"
+  flow:
+    from:
+      uri: "timer:fetch"
+      parameters:
+        period: "{{period}}"
+      steps:
+      - set-header:
+          name: "Accept"
+          constant: "{{contentType}}"
+      - to: "{{url}}"
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml
new file mode 100644
index 0000000..74167d8
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml
@@ -0,0 +1,57 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: jira-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIi [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Jira Source"
+    description: |-
+      Receive notifications about new issues from Jira.
+    required:
+      - jiraUrl
+      - username
+      - password
+    properties:
+      jiraUrl:
+        title: Jira URL
+        description: The URL of your instance of Jira
+        type: string
+        example: http://my_jira.com:8081
+      username:
+        title: Username
+        description: The username to access Jira
+        type: string
+      password:
+        title: Password
+        description: The password to access Jira
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      jql:
+        title: JQL
+        description: A query to filter issues
+        type: string
+        example: project=MyProject
+      
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "jira:newIssues"
+      parameters:
+        jiraUrl: "{{jiraUrl}}"
+        username: "{{username}}"
+        password: "{{password}}"
+        jql: "{{jql}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml
new file mode 100644
index 0000000..3dd616e
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml
@@ -0,0 +1,33 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: kafka-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Kafka Source"
+    description: |-
+      Receive data from Kafka topics.
+    required:
+      - topic
+      - brokers
+    properties:
+      topic:
+        title: Topic names
+        description: Comma separated list of Kafka topic names
+        type: string
+      brokers:
+        title: Brokers
+        description: Comma separated list of Kafka Broker URLs
+        type: string
+  flow:
+    from:
+      uri: "kafka:{{topic}}"
+      parameters:
+        brokers: "{{brokers}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml
new file mode 100644
index 0000000..532154c
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml
@@ -0,0 +1,74 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: mail-imap-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Mail IMAP Source"
+    description: |-
+      Receive unread emails from an IMAP mail server, marking them as read once they are received.
+    required:
+    - host
+    - port
+    - username
+    - password
+    properties:
+      host:
+        title: Host
+        description: The IMAP server host
+        type: string
+        example: imap.gmail.com
+      port:
+        title: Port
+        description: The IMAP server port
+        type: string
+        default: 993
+      username:
+        title: Username
+        description: The username to access the mail box
+        type: string
+      password:
+        title: Password
+        description: The password to access the mail box
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      fetchSize:
+        title: Fetch Size
+        description: The number of messages fetched for each poll (-1 for no limits)
+        type: integer
+        default: 10
+      delay:
+        title: Delay
+        description: The delay between fetches in milliseconds
+        type: integer
+        default: 60000
+  flow:
+    from:
+      uri: "imaps:{{host}}:{{port}}"
+      parameters:
+        username: "{{username}}"
+        password: "{{password}}"
+        fetchSize: "{{fetchSize}}"
+        delay: "{{delay}}"
+      steps:
+      - set-header:
+          name: "ce-subject"
+          simple: "${header.Subject}"
+      - set-header:
+          name: "ce-from"
+          simple: "${header.From}"
+      - set-header:
+          name: "ce-to"
+          simple: "${header.To}"
+      - set-header:
+          name: "ce-cc"
+          simple: "${header.Cc}"
+      - convert-body-to:
+          type: "java.lang.String"
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml
new file mode 100644
index 0000000..78e894c
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml
@@ -0,0 +1,82 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: minio-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2Mi42MTIgMjQuNDY1Ij48cGF0aCBkPSJNNTIuNzUxLjQxNGg5LjEwOHYyMy42M2gtOS4xMDh6TTQxLjcxMS43NGwtMTguNDg4IDkuOTJhLjkxOS45MTkgMCAwIDEtLjg1NiAwTDMuODc5Ljc0QTIuODA4IDIuODA4IDAgMCAwIDIuNTU4LjQxNGgtLjAyM0EyLjQgMi40IDAgMCAwIDAgMi42NDF2MjEuMzc2aDkuMVYxMy44NDJhLjkxOC45MTggMCAwIDEgMS4zODUtLjY4MmwxMC4zNjEgNS41NjhhMy42MzQgMy42MzQgMCAwIDAgMy4zMzYuMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Minio Sink"
+    description: |-
+      Upload data to Minio.
+
+      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:
+      - bucketName
+      - accessKey
+      - secretKey
+      - endpoint
+    properties:
+      bucketName:
+        title: Bucket Name
+        description: The Minio Bucket name
+        type: string
+      accessKey:
+        title: Access Key
+        description: The access key obtained from Minio
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from Minio
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      endpoint:
+        title: Endpoint
+        description: The Minio Endpoint, it can be an URL, domain name, IPv4 address or IPv6 address.
+        type: string
+        example: http://localhost:9000
+      autoCreateBucket:
+        title: Autocreate bucket
+        description: Setting the autocreation of the S3 bucket bucketName. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[file]}"
+            steps:
+            - set-header:
+                name: CamelMinioObjectName
+                simple: "${header[file]}"
+          - simple: "${header[ce-file]}"
+            steps:
+            - set-header:
+                name: CamelMinioObjectName
+                simple: "${header[ce-file]}"
+          otherwise:
+            steps:
+            - set-property:
+                name: CamelMinioObjectName
+                simple: "${exchangeId}"
+      - to:
+          uri: "minio:{{bucketName}}"
+          parameters:
+            autoCreateBucket: "{{autoCreateBucket}}"
+            secretKey: "{{secretKey}}"
+            accessKey: "{{accessKey}}"
+            endpoint: "{{endpoint}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml
new file mode 100644
index 0000000..da7e82a
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml
@@ -0,0 +1,73 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: minio-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2Mi42MTIgMjQuNDY1Ij48cGF0aCBkPSJNNTIuNzUxLjQxNGg5LjEwOHYyMy42M2gtOS4xMDh6TTQxLjcxMS43NGwtMTguNDg4IDkuOTJhLjkxOS45MTkgMCAwIDEtLjg1NiAwTDMuODc5Ljc0QTIuODA4IDIuODA4IDAgMCAwIDIuNTU4LjQxNGgtLjAyM0EyLjQgMi40IDAgMCAwIDAgMi42NDF2MjEuMzc2aDkuMVYxMy44NDJhLjkxOC45MTggMCAwIDEgMS4zODUtLjY4MmwxMC4zNjEgNS41NjhhMy42MzQgMy42MzQgMCAwIDAgMy4zMzYuMD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Minio Source"
+    description: |-
+      Receive data from Minio.
+    required:
+      - bucketName
+      - accessKey
+      - secretKey
+      - endpoint
+    properties:
+      bucketName:
+        title: Bucket Name
+        description: The Minio Bucket name
+        type: string
+      deleteAfterRead:
+        title: Auto-delete objects
+        description: Delete objects after consuming them
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: true
+      accessKey:
+        title: Access Key
+        description: The access key obtained from Minio
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      secretKey:
+        title: Secret Key
+        description: The secret key obtained from Minio
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      endpoint:
+        title: Endpoint
+        description: The Minio Endpoint, it can be an URL, domain name, IPv4 address or IPv6 address.
+        type: string
+        example: http://localhost:9000
+      autoCreateBucket:
+        title: Autocreate bucket
+        description: Setting the autocreation of the S3 bucket bucketName. 
+        type: boolean
+        x-descriptors:
+        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+        default: false
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "minio:{{bucketName}}"
+      parameters:
+        autoCreateBucket: "{{autoCreateBucket}}"
+        secretKey: "{{secretKey}}"
+        accessKey: "{{accessKey}}"
+        endpoint: "{{endpoint}}"
+        deleteAfterRead: "{{deleteAfterRead}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml
new file mode 100644
index 0000000..e213b11
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml
@@ -0,0 +1,41 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: mqtt-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjMuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9InRpbnkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIKCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCAzMjAgMzIwIiBvdmVyZmxvdz0idmlzaWJsZSIgeG1sOnNwYWNlPSJwcm [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "MQTT Source"
+    description: |-
+      Allows receiving messages from any endpoint that supports the MQTT protocol, such as a message broker.
+    required:
+    - topic
+    - brokerUrl
+    properties:
+      topic:
+        title: Topic
+        description: The topic to subscribe to
+        type: string
+        example: "mytopic"
+      brokerUrl:
+        title: Broker URL
+        description: The URL of the broker where to establish the connection
+        type: string
+        example: "tcp://mosquitto:1883"
+      clientId:
+        title: Client ID
+        description: The client ID to use when connecting to the resource
+        type: string
+        default: "mqtt-source"
+  flow:
+    from:
+      uri: paho:{{topic}}
+      parameters:
+        brokerUrl: "{{brokerUrl}}"
+        clientId: "{{clientId}}"
+      steps:
+      - to: kamelet:sink
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml
new file mode 100644
index 0000000..ed5ee90
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml
@@ -0,0 +1,40 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: nats-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3NDQuMiIgaGVpZ2h0PSIxODEuODEiIHZpZXdCb3g9IjAgMCA3NDQuMiAxODEuODEiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMjlhOWRlO30uY2xzLTJ7ZmlsbDojZmZmO30uY2xzLTN7ZmlsbDojMzNhNjc1O30uY2xzLTR7ZmlsbDojMzY1YzkzO30uY2xzLTV7ZmlsbDojOGRjMzQxO308L3N0eWxlPjwvZGVmcz48dGl0bGU+bmF0cy1sb2dvLWZyZWVsb2dvdmVjdG9ycy5uZXQ8L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMS [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "NATS Source"
+    description: |-
+      Receive data from NATS topics.
+    required:
+      - topic
+      - servers
+    properties:
+      topic:
+        title: topic
+        description: NATS Topic name
+        type: string
+      brokers:
+        title: servers
+        description: Comma separated list of NATS Servers
+        type: string
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "nats:{{topic}}"
+      parameters:
+        servers: "{{servers}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml
new file mode 100644
index 0000000..16bdbf3
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml
@@ -0,0 +1,81 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: openai-completion-action
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODk0IiBoZWlnaHQ9IjE3MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNjI1LjU1IDM1LjIyYy0xMy43NSAwLTIzLjU3IDQuNy0yOC4zOSAxMy41OWwtMi41OSA0Ljc5VjM3LjU0aC0yMi40djk3Ljg1aDIzLjU2Vjc3LjE4YzAtMTMuOTEgNy41NS0yMS44OSAyMC43My0yMS44OSAxMi41NiAwIDE5Ljc2IDcuNzYgMTkuNzYgMjEuMzF2NTguNzloMjMuNTZ2LTYzYzAtMjMuMjYtMTIuOC0zNy4xNy0zNC4yMy0zNy4xN3ptLTExNC4yMiAwYy0yNy [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "OpenAI Completion Action"
+    description: |
+      Completes a sentence using the OpenAI API.
+
+      It requires an OpenAI account (beta accounts available at https://beta.openai.com/).
+
+      The Kamelet accepts data in:
+      - `text/plain` format (default)
+      - `application/json` format: see reference at https://beta.openai.com/docs/api-reference/completions/create
+
+    required:
+      - authorizationToken
+    properties:
+      authorizationToken:
+        title: Authorization Token
+        description: The authorization token to use to contact the openAI API
+        type: string
+      format:
+        title: Format
+        description: The response format ('text/plain' or 'application/json' are supported)
+        type: string
+        default: text/plain
+      engine:
+        title: Engine
+        description: The OpenAI engine to use
+        type: string
+        default: davinci
+  types:
+    in:
+      mediaType: text/plain
+    out:
+      mediaType: text/plain
+  dependencies:
+  - camel:jackson
+  - camel:jsonpath
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[Content-Type]} == null || ${header[Content-Type]} == 'text/plain'"
+            steps:
+            - convert-body-to:
+                type: "java.lang.String"
+            - transform:
+                simple: "${bean:type:java.util.Map?method=of('prompt', ${body})}"
+            - marshal:
+                json: {}
+      - set-header:
+          name: "Authorization"
+          simple: "Bearer {{authorizationToken}}"
+      - set-header:
+          name: "Content-Type"
+          constant: "application/json"
+      - to: "https://api.openai.com/v1/engines/{{engine}}/completions"
+      - remove-header:
+          header-name: "Authorization"
+      - set-property:
+          name: format
+          constant: "{{format}}"
+      - choice:
+          when:
+          - simple: "${exchangeProperty.format} == 'text/plain'"
+            steps:
+            - transform:
+                jsonpath: "$.choices[0].text"
+            - set-header:
+                name: "Content-Type"
+                constant: "text/plain"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml
new file mode 100644
index 0000000..a3293ea
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml
@@ -0,0 +1,44 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: pdf-action
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDMwMy4xODggMzAzLjE4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "PDF Action"
+    description: |-
+      Create a PDF
+    required:
+      - font
+      - fontSize
+      - pageSize
+    properties:
+      font:
+        title: Font
+        description: The font to use while generating the PDF. One of Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique, Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique, Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic, Symbol, ZapfDingbats
+        type: string
+        default: Helvetica
+      fontSize:
+        title: Font Size
+        description: The Font size to use while generating the PDF
+        type: string
+        default: 14.0
+      pageSize:
+        title: Page Size
+        description: The Page size to use while generating the PDF. One of LETTER, LEGAL, A0, A1, A2, A3, A4, A5, A6
+        type: string
+        default: A4
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - to:
+          uri: "pdf://create"
+          parameters:
+            font: "{{font}}"
+            fontSize: "{{fontSize}}"
+            pageSize: "{{pageSize}}"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
new file mode 100644
index 0000000..1c7780e
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
@@ -0,0 +1,52 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: rabbitmq-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjcxcHgiIGhlaWdodD0iMjcxcHgiIHZpZXdCb3g9Ii03LjUgMCAyNzEgMjcxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj48cGF0aCBkPSJNMjQ1LjQ0IDEwOC4zMDhoLTg1LjA5YTcuNzM4IDcuNzM4IDAgMCAxLTcuNzM1LTcuNzM0di04OC42OEMxNTIuNjE1IDUuMzI3IDE0Ny4yOSAwIDE0MC43MjYgMGgtMzAuMzc1Yy02LjU2OCAwLTExLjg5IDUuMzI3LTExLjg5IDExLjg5NHY4OC4xNDNjMCA0LjU3My0zLjY5NyA4LjI5LTguMjcgOC4zMWwtMjcuODg1LjEzM2MtNC42MT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "RabbitMQ Source"
+    description: |-
+      Receive data from an RabbitMQ Brokers.
+    required:
+      - addresses
+      - exchangeName
+      - username
+      - password
+    properties:
+      addresses:
+        title: Addresses
+        description: Comma separated list of RabbitMQ broker addresses
+        type: string
+      port:
+        title: Port
+        description: Port of the RabbitMQ server
+        type: string
+        default: 5672
+      username:
+        title: Username
+        description: The username to access the RabbitMQ server
+        type: string
+      password:
+        title: Password
+        description: The password to access the RabbitMQ server
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      exchangeName:
+        title: Exchange name
+        description: The exchange name determines the exchange the queue will be bound to
+        type: string
+  flow:
+    from:
+      uri: "rabbitmq://{{exchangeName}}"
+      parameters:
+        password: "{{password}}"
+        username: "{{username}}"
+        addresses: "{{addresses}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml
new file mode 100644
index 0000000..b650031
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml
@@ -0,0 +1,83 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: salesforce-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Salesforce Source"
+    description: |-
+      Receive updates from Salesforce.
+    required:
+      - query
+      - topicName
+      - clientId
+      - clientSecret
+      - userName
+      - password
+    properties:
+      query:
+        title: Query
+        description: The query to execute on Salesforce
+        type: string
+        example: SELECT Id, Name, Email, Phone FROM Contact
+      topicName:
+        title: Topic Name
+        description: The name of the topic/channel to use
+        type: string
+        example: ContactTopic
+      loginUrl:
+        title: Login URL
+        description: The Salesforce instance login URL
+        type: string
+        default: https://login.salesforce.com
+      clientId:
+        title: Consumer Key
+        description: The Salesforce application consumer key
+        type: string
+      clientSecret:
+        title: Consumer Secret
+        description: The Salesforce application consumer secret
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      userName:
+        title: Username
+        description: The Salesforce username
+        type: string
+      password:
+        title: Password
+        description: The Salesforce user password
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  - "camel:salesforce"
+  flow:
+    from:
+      uri: "kamelet-reify:salesforce:{{topicName}}"
+      parameters:
+        clientId: "{{clientId}}"
+        clientSecret: "{{clientSecret}}"
+        userName: "{{userName}}"
+        password: "{{password}}"
+        notifyForFields: "ALL"
+        updateTopic: "true"
+        notifyForOperationCreate: "true"
+        notifyForOperationUpdate: "false"
+        notifyForOperationDelete: "false"
+        notifyForOperationUndelete: "false"
+        sObjectQuery: "{{query}}"
+        loginUrl: "{{loginUrl}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml
new file mode 100644
index 0000000..38ab95a
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml
@@ -0,0 +1,78 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: sftp-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "FTP"
+spec:
+  definition:
+    title: "SFTP Source"
+    description: |-
+      Receive data from an SFTP Server.
+    required:
+      - host
+      - port
+      - username
+      - password
+      - directoryName
+    properties:
+      host:
+        title: Host
+        description: Hostname of the SFTP server
+        type: string
+      port:
+        title: Port
+        description: Port of the FTP server
+        type: string
+        default: 22
+      username:
+        title: Username
+        description: The username to access the SFTP server
+        type: string
+      password:
+        title: Password
+        description: The password to access the SFTP server
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      directoryName:
+        title: Directory Name
+        description: The starting directory
+        type: string
+      passiveMode:
+        title: Passive Mode
+        description: Sets passive mode connection
+        type: boolean
+        default: false
+      recursive:
+        title: Recursive
+        description: If a directory, will 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
+  flow:
+    from:
+      uri: "sftp:{{username}}@{{host}}:{{port}}/{{directoryName}}"
+      parameters:
+        password: "{{password}}"
+        passiveMode: "{{passiveMode}}"
+        recursive: "{{recursive}}"
+        idempotent: "{{idempotent}}"
+      steps:
+      - set-header:
+          name: file
+          simple: "${header[CamelFileName]}"
+      - set-header:
+          name: ce-file
+          simple: "${header[CamelFileName]}"
+      - convert-body-to:
+          type: "java.io.InputStream"
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml
new file mode 100644
index 0000000..9f9a64e
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml
@@ -0,0 +1,43 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: slack-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNUQzNjY7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntmaWxsOiNGRjAwMDA7fQoJLnN0M3tmaWxsOiMzRDVBOT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Slack Source"
+    description: |-
+      Receive messages from a Slack channel.
+    required:
+      - channel
+      - token
+    properties:
+      channel:
+        title: Channel
+        description: The Slack channel to receive messages from
+        type: string
+        example: "#myroom"
+      token:
+        title: Token
+        description: The token to access Slack. A Slack app is needed. This app needs to have channels:history and channels:read permissions. The Bot User OAuth Access Token is the kind of token needed.
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: "slack:{{channel}}"
+      parameters:
+        token: "{{token}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml
new file mode 100644
index 0000000..b0533b0
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml
@@ -0,0 +1,64 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: ssh-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPgogICAgPHBhdGggZD0iTSA3IDggQyA1LjM0NiA4IDQgOS4zNDYgNCAxMSBMIDQgNTMgQyA0IDU0LjY1NCA1LjM0NiA1NiA3IDU2IEwgNTcgNTYgQyA1OC42NTQgNTYgNjAgNTQuNjU0IDYwIDUzIEwgNjAgMTEgQyA2MCA5LjM0NiA1OC42NTQgOCA1NyA4IEwgNyA4IHogTSA3IDEwIEwgNTcgMTAgQyA1Ny41NTIgMTAgNTggMTAuNDQ4IDU4IDExIEwgNTggNTMgQyA1OCA1My41NTIgNTcuNTUyIDU0IDU3IDU0IEwgNyA1NCBDID [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "SSH Source"
+    description: |-
+      Receive data from SSH session.
+    required:
+      - host
+      - port
+      - username
+      - password
+      - pollCommand
+    properties:
+      host:
+        title: SSH Host
+        description: The SSH Host
+        type: string
+      port:
+        title: SSH Port
+        description: The SSH Port
+        type: string
+        default: 22
+      username:
+        title: The SSH username
+        description: The SSH username to use
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      password:
+        title: The SSH password
+        description: The SSH password to use
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      delay:
+        title: Delay
+        description: Milliseconds before the next poll
+        type: integer
+        default: 500
+      pollCommand:
+        title: The Poll command
+        description: The command to run while polling the SSH session
+        type: string
+        example: date
+  flow:
+    from:
+      uri: "ssh://{{host}}:{{port}}"
+      parameters:
+        username: "{{username}}"
+        password: "{{password}}"
+        delay: "{{delay}}"
+        pollCommand: "{{pollCommand}}"
+      steps:
+      - convert-body-to:
+          type: "java.lang.String"
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml
new file mode 100644
index 0000000..71b87c1
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml
@@ -0,0 +1,99 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: telegram-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3Zm [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+    camel.apache.org/kamelet.group: "Telegram"
+spec:
+  definition:
+    title: "Telegram Sink"
+    description: |-
+      Send a message to a Telegram chat using your Telegram bot as sender.
+
+      To create a bot, contact the @botfather account using the Telegram app.
+
+      This sink supports the following message types:
+
+      - Standard text messages
+      - PNG images (`Content-Type` must be set to `image/png`)
+      - JPEG images (`Content-Type` must be set to `image/jpeg`)
+
+      This following message headers are also supported:
+
+      - `text` / `ce-text`: when sending an image, the image caption
+      - `chat-id` / `ce-chat-id`: to override the default chat where messages are sent to
+    required:
+      - authorizationToken
+    properties:
+      authorizationToken:
+        title: Token
+        description: The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather.
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      chatId:
+        title: Chat ID
+        description: The Chat ID where messages should be sent by default
+        type: string
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[Content-Type]} == 'image/png'"
+            steps:
+            - convert-body-to:
+                type: "byte[]"
+            - set-header:
+                name: CamelTelegramMediaType
+                constant: PHOTO_PNG
+          - simple: "${header[Content-Type]} == 'image/jpeg'"
+            steps:
+            - convert-body-to:
+                type: "byte[]"
+            - set-header:
+                name: CamelTelegramMediaType
+                constant: PHOTO_JPG
+          otherwise:
+            steps:
+            - convert-body-to:
+                type: "java.lang.String"
+      - choice:
+          when:
+          - simple: "${header[text]}"
+            steps:
+            - set-header:
+                name: CamelTelegramMediaTitleCaption
+                simple: "${header[text]}"
+          - simple: "${header[ce-text]}"
+            steps:
+            - set-header:
+                name: CamelTelegramMediaTitleCaption
+                simple: "${header[ce-text]}"
+      - choice:
+          when:
+          - simple: "${header[chat-id]}"
+            steps:
+            - set-header:
+                name: CamelTelegramChatId
+                simple: "${header[chat-id]}"
+          - simple: "${header[ce-chat-id]}"
+            steps:
+            - set-header:
+                name: CamelTelegramChatId
+                simple: "${header[ce-chat-id]}"
+      - to:
+          uri: "telegram:bots"
+          parameters:
+            authorizationToken: "{{authorizationToken}}"
+            chatId: "{{chatId}}"
+      - marshal:
+          json: {}
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml
new file mode 100644
index 0000000..c438ff9
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml
@@ -0,0 +1,46 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: telegram-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3Zm [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "Telegram"
+spec:
+  definition:
+    title: "Telegram Source"
+    description: |-
+      Receive all messages that people send to your Telegram bot.
+
+      To create a bot, contact the @botfather account using the Telegram app.
+    required:
+      - authorizationToken
+    properties:
+      authorizationToken:
+        title: Token
+        description: The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather.
+        type: string
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  dependencies:
+  - "camel:jackson"
+  flow:
+    from:
+      uri: telegram:bots
+      parameters:
+        authorizationToken: "{{authorizationToken}}"
+      steps:
+      - set-header:
+          name: chat-id
+          simple: "${header[CamelTelegramChatId]}"
+      - set-header:
+          name: ce-chat-id
+          simple: "${header[CamelTelegramChatId]}"
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml
new file mode 100644
index 0000000..a20d9e1
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml
@@ -0,0 +1,56 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: timer-source
+  annotations:
+    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm9 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: source
+    camel.apache.org/kamelet.verified: "true"
+spec:
+  definition:
+    title: Timer Source
+    description: Produces periodic events with a custom payload.
+    required:
+      - message
+    properties:
+      period:
+        title: Period
+        description: The interval between two events in milliseconds
+        type: integer
+        default: 1000
+      message:
+        title: Message
+        description: The message to generate
+        type: string
+        example: hello world
+  types:
+    out:
+      mediaType: text/plain
+  flow:
+    from:
+      uri: timer:tick
+      parameters:
+        period: "{{period}}"
+      steps:
+        - set-body:
+            constant: "{{message}}"
+        - to: kamelet:sink
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage.kamelet.yaml
new file mode 100644
index 0000000..ce01a20
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage.kamelet.yaml
@@ -0,0 +1,73 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: twitter-directmessage-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "Twitter"
+spec:
+  definition:
+    title: "Twitter Direct Message Source"
+    description: |-
+      Allows to get all direct messages for your Twitter account.
+
+      It requires tokens that can be obtained by creating an application 
+      in the Twitter developer portal: https://developer.twitter.com/.
+    required:
+    - user
+    - apiKey
+    - apiKeySecret
+    - accessToken
+    - accessTokenSecret
+    properties:
+      user:
+        title: User
+        description: The user we want to read the direct messages
+        type: string
+        example: "ApacheCamel"
+      apiKey:
+        title: API Key
+        description: The API Key from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      apiKeySecret:
+        title: API Key Secret
+        description: The API Key Secret from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessToken:
+        title: Access Token
+        description: The Access Token from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessTokenSecret:
+        title: Access Token Secret
+        description: The Access Token Secret from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "twitter-directmessage:{{user}}"
+      parameters:
+        accessToken: "{{accessToken}}"
+        accessTokenSecret: "{{accessTokenSecret}}"
+        consumerKey: "{{apiKey}}"
+        consumerSecret: "{{apiKeySecret}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/twitter-search.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/twitter-search.kamelet.yaml
new file mode 100644
index 0000000..cfdf71f
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/twitter-search.kamelet.yaml
@@ -0,0 +1,73 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: twitter-search-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "Twitter"
+spec:
+  definition:
+    title: "Twitter Search Source"
+    description: |-
+      Allows to get all tweets on particular keywords from Twitter.
+
+      It requires tokens that can be obtained by creating an application 
+      in the Twitter developer portal: https://developer.twitter.com/.
+    required:
+    - keywords
+    - apiKey
+    - apiKeySecret
+    - accessToken
+    - accessTokenSecret
+    properties:
+      keywords:
+        title: Keywords
+        description: The keywords to use in the Twitter search (Supports Twitter standard operators)
+        type: string
+        example: "Apache Camel"
+      apiKey:
+        title: API Key
+        description: The API Key from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      apiKeySecret:
+        title: API Key Secret
+        description: The API Key Secret from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessToken:
+        title: Access Token
+        description: The Access Token from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessTokenSecret:
+        title: Access Token Secret
+        description: The Access Token Secret from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "twitter-search:{{keywords}}"
+      parameters:
+        accessToken: "{{accessToken}}"
+        accessTokenSecret: "{{accessTokenSecret}}"
+        consumerKey: "{{apiKey}}"
+        consumerSecret: "{{apiKeySecret}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline.kamelet.yaml
new file mode 100644
index 0000000..ea2f599
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline.kamelet.yaml
@@ -0,0 +1,74 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: twitter-timeline-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMj [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+    camel.apache.org/kamelet.group: "Twitter"
+spec:
+  definition:
+    title: "Twitter Timeline Source"
+    description: |-
+      Allows to get tweets from the timeline of a specific user from Twitter.
+
+      It requires tokens that can be obtained by creating an application 
+      in the Twitter developer portal: https://developer.twitter.com/.
+    required:
+    - user
+    - apiKey
+    - apiKeySecret
+    - accessToken
+    - accessTokenSecret
+    properties:
+      user:
+        title: User
+        description: The user we want to read the timeline
+        type: string
+        example: "ApacheCamel"
+      apiKey:
+        title: API Key
+        description: The API Key from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      apiKeySecret:
+        title: API Key Secret
+        description: The API Key Secret from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessToken:
+        title: Access Token
+        description: The Access Token from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+      accessTokenSecret:
+        title: Access Token Secret
+        description: The Access Token Secret from the Twitter application in the developer portal
+        type: string
+        format: password
+        x-descriptors:
+        - urn:alm:descriptor:com.tectonic.ui:password
+  types:
+    out:
+      mediaType: application/json
+  flow:
+    from:
+      uri: "twitter-timeline:user"
+      parameters:
+        user: "{{user}}"
+        accessToken: "{{accessToken}}"
+        accessTokenSecret: "{{accessTokenSecret}}"
+        consumerKey: "{{apiKey}}"
+        consumerSecret: "{{apiKeySecret}}"
+      steps:
+      - marshal:
+          json: {}
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml b/camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml
new file mode 100644
index 0000000..63e2f8a
--- /dev/null
+++ b/camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml
@@ -0,0 +1,31 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: webhook-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ijk0NCAtNzcxIDI1MDAgMjMzNCI+PHBhdGggZD0iTTIxMTEuNCAyMTAuNWMtMTAzLjYgMTc0LjItMjAyLjkgMzQyLjktMzA0LjIgNTEwLjMtMjYgNDMtMzguOSA3OC0xOC4xIDEzMi42IDU3LjQgMTUwLjktMjMuNiAyOTcuOC0xNzUuOCAzMzcuNi0xNDMuNSAzNy42LTI4My40LTU2LjctMzExLjgtMjEwLjQtMjUuMi0xMzYgODAuMy0yNjkuMyAyMzAuMy0yOTAuNiAxMi42LTEuOCAyNS40LTIgNDYuNS0zLjZsMjI4LjEtMzgyLjVjLTE0My41LTE0Mi43LTIyOC45LTMwOS40LTIxMC01MT [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Webhook Source"
+    description: |-
+      Creates an HTTP endpoint that can be used as a bridge to forward data to the Kamelet sink.
+
+      The "subpath" parameter of the Webhook source allows to customize the subpath where the integration will respond to HTTP requests.
+      It's common to use a non-guessable ID for that parameter.
+
+      When the "subpath" parameter is set to "webhook" (default), the integration will accept requests at the "https://integration-external-url/webhook" endpoint.
+    properties:
+      subpath:
+        title: Subpath
+        description: |
+          The subpath where the webhook is registered
+        type: string
+        default: "webhook"
+  flow:
+    from:
+      uri: "platform-http:///{{subpath}}"
+      steps:
+      - to: "kamelet:sink"
diff --git a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java b/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
new file mode 100644
index 0000000..a5eee78
--- /dev/null
+++ b/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kamelets.catalog;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class KameletsCatalogTest {
+    static KameletsCatalog catalog;
+
+    @BeforeAll
+    public static void createCamelCatalog() throws IOException {
+        catalog = new KameletsCatalog();
+    }
+
+    @Test
+    void testConnectors() throws Exception {
+        assertEquals(62, catalog.getKamelets().size());
+    }
+
+    @Test
+    void testConnectorsByName() throws Exception {
+        assertEquals(13, catalog.getKameletsByName("aws").size());
+    }
+
+    @Test
+    void testConnectorsByType() throws Exception {
+        assertEquals(6, catalog.getKameletsByType("action").size());
+    }
+}

[camel-kamelets] 07/07: Camel-Kamelets catalog: First implementation

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

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

commit 431358796279a83f1403441a0cb1b2525d9778f3
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 16:34:30 2021 +0200

    Camel-Kamelets catalog: First implementation
---
 .../kamelets/catalog/model/KameletTypeEnum.java}   | 35 +++++++---------------
 .../kamelets/catalog/KameletsCatalogTest.java      |  3 +-
 2 files changed, 12 insertions(+), 26 deletions(-)

diff --git a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java b/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
similarity index 51%
copy from camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
copy to camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
index befc1ca..4ded98b 100644
--- a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
+++ b/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
@@ -14,35 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.kamelets.catalog;
+package org.apache.camel.kamelets.catalog.model;
 
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
+public enum KameletTypeEnum {
+    SOURCE("source"),
+    SINK("sink"),
+    ACTION("action");
 
-import java.io.IOException;
+    private String type;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class KameletsCatalogTest {
-    static KameletsCatalog catalog;
-
-    @BeforeAll
-    public static void createKameletsCatalog() throws IOException {
-        catalog = new KameletsCatalog();
-    }
-
-    @Test
-    void testKameletsSize() throws Exception {
-        assertEquals(62, catalog.getKamelets().size());
-    }
-
-    @Test
-    void testKameletsByName() throws Exception {
-        assertEquals(13, catalog.getKameletsByName("aws").size());
+    KameletTypeEnum(String type) {
+        this.type = type;
     }
 
-    @Test
-    void testKameletsByType() throws Exception {
-        assertEquals(6, catalog.getKameletsByType("action").size());
+    public String type() {
+        return type;
     }
 }
diff --git a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java b/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
index befc1ca..53881d8 100644
--- a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
+++ b/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.kamelets.catalog;
 
+import org.apache.camel.kamelets.catalog.model.KameletTypeEnum;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
@@ -43,6 +44,6 @@ public class KameletsCatalogTest {
 
     @Test
     void testKameletsByType() throws Exception {
-        assertEquals(6, catalog.getKameletsByType("action").size());
+        assertEquals(6, catalog.getKameletsByType(KameletTypeEnum.ACTION.type()).size());
     }
 }

[camel-kamelets] 03/07: Camel-Kamelets catalog: Add .gitignore

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

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

commit 29e65e03ed8452886274ec9b01b95ebe44f705f4
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 15:26:33 2021 +0200

    Camel-Kamelets catalog: Add .gitignore
---
 .../org/apache/camel/kamelets/catalog/KameletsCatalogTest.java    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java b/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
index a5eee78..befc1ca 100644
--- a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
+++ b/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
@@ -27,22 +27,22 @@ public class KameletsCatalogTest {
     static KameletsCatalog catalog;
 
     @BeforeAll
-    public static void createCamelCatalog() throws IOException {
+    public static void createKameletsCatalog() throws IOException {
         catalog = new KameletsCatalog();
     }
 
     @Test
-    void testConnectors() throws Exception {
+    void testKameletsSize() throws Exception {
         assertEquals(62, catalog.getKamelets().size());
     }
 
     @Test
-    void testConnectorsByName() throws Exception {
+    void testKameletsByName() throws Exception {
         assertEquals(13, catalog.getKameletsByName("aws").size());
     }
 
     @Test
-    void testConnectorsByType() throws Exception {
+    void testKameletsByType() throws Exception {
         assertEquals(6, catalog.getKameletsByType("action").size());
     }
 }

[camel-kamelets] 02/07: Camel-Kamelets catalog: Add .gitignore

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

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

commit d52fb3d34752173d0242344148756bdb9c64a330
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 15:24:33 2021 +0200

    Camel-Kamelets catalog: Add .gitignore
---
 camel-kamelets-catalog/.gitignore | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/camel-kamelets-catalog/.gitignore b/camel-kamelets-catalog/.gitignore
new file mode 100644
index 0000000..b9130f2
--- /dev/null
+++ b/camel-kamelets-catalog/.gitignore
@@ -0,0 +1,28 @@
+target
+*.iml
+*.ipr
+*.iws
+.idea
+.DS_Store
+.classpath
+.ekstazi
+.project
+.settings
+.checkstyle
+*.log
+test-salesforce-login.properties
+dependency-reduced-pom.xml
+id_file
+components/camel-solr/data
+*.epoch
+.factorypath
+.pmd
+.sts4-cache
+log-camel-lsp.out
+.vscode
+*.code-workspace
+components/camel-cxf/activemq-data
+*.swp
+.flattened-pom.xml
+.java-version
+node_modules/

[camel-kamelets] 05/07: Camel-Kamelets catalog: First implementation

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

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

commit 1baab8a290faeed4759645fc6e690f6884ccbd31
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Apr 27 15:38:29 2021 +0200

    Camel-Kamelets catalog: First implementation
---
 camel-kamelets-catalog/pom.xml | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/camel-kamelets-catalog/pom.xml b/camel-kamelets-catalog/pom.xml
index 08cc4e2..ebfe44c 100644
--- a/camel-kamelets-catalog/pom.xml
+++ b/camel-kamelets-catalog/pom.xml
@@ -367,10 +367,6 @@
                         <configuration>
                             <passphrase>${gpg.passphrase}</passphrase>
                             <useAgent>${gpg.useagent}</useAgent>
-                            <gpgArguments>
-                                <arg>--pinentry-mode</arg>
-                                <arg>loopback</arg>
-                            </gpgArguments>
                         </configuration>
                         <executions>
                             <execution>