You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/04/26 08:51:20 UTC

[camel-k] 04/18: feat(api): promote Kamelets to v1

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

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

commit a7f48056294612abb35026926759485c2e79411d
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Tue Mar 28 15:54:45 2023 +0200

    feat(api): promote Kamelets to v1
    
    We'll keep v1alpha1 in order to simplify any upgrade from Camel K v1 to v2
---
 PROJECT                                            |    4 +-
 addons/keda/keda.go                                |   12 +-
 addons/keda/keda_test.go                           |   16 +-
 addons/strimzi/strimzi.go                          |    5 +-
 addons/strimzi/strimzi_test.go                     |   14 +-
 config/crd/bases/camel.apache.org_bindings.yaml    |   14 +-
 ....yaml => camel.apache.org_kameletbindings.yaml} |   49 +-
 config/crd/bases/camel.apache.org_kamelets.yaml    |  709 +++++-
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  | 2401 +++++++++++++++-----
 docs/modules/ROOT/partials/apis/crds-html.adoc     |   90 +-
 docs/modules/ROOT/partials/apis/kamelets-crds.adoc |  444 ++--
 .../kamelets/timer-custom-source.kamelet.yaml      |    2 +-
 e2e/common/misc/files/my-timer-source.kamelet.yaml |    2 +-
 e2e/common/misc/kamelet_binding_test.go            |   24 +-
 e2e/common/misc/kamelet_binding_with_image_test.go |    6 +-
 e2e/common/misc/kamelet_update_test.go             |    6 +-
 e2e/common/misc/scale_binding_test.go              |   15 +-
 e2e/common/traits/errored_trait_test.go            |    9 +-
 e2e/common/traits/health_test.go                   |   10 +-
 e2e/install/kustomize/common.go                    |    2 +-
 e2e/knative/kamelet_test.go                        |    7 +-
 e2e/native/native_binding_test.go                  |   12 +-
 e2e/support/test_support.go                        |   81 +-
 .../common/kamelet-beans/beans-source.kamelet.yaml |    2 +-
 .../timer-source.kamelet.yaml                      |    2 +-
 .../logger-sink-binding.yaml                       |    4 +-
 .../logger-sink.kamelet.yaml                       |    2 +-
 .../timer-source-binding.yaml                      |    4 +-
 .../timer-source.kamelet.yaml                      |    2 +-
 .../timer-source-binding-display.yaml              |    4 +-
 .../kamelet-binding-http/timer-source.kamelet.yaml |    2 +-
 .../properties-binding.yaml                        |    4 +-
 .../timer-source.kamelet.yaml                      |    2 +-
 .../kamelet-binding/logger-sink-binding.yaml       |    4 +-
 .../kamelet-binding/logger-sink.kamelet.yaml       |    2 +-
 .../kamelet-binding/timer-source-binding.yaml      |    4 +-
 .../kamelet-binding/timer-source.kamelet.yaml      |    2 +-
 .../data-type-action.kamelet.yaml                  |    2 +-
 .../common/kamelet-data-types/event-binding.yaml   |    8 +-
 .../kamelet-data-types/event-sink.kamelet.yaml     |    2 +-
 .../kamelet-data-types/event-source.kamelet.yaml   |    2 +-
 .../common/kamelet-data-types/timer-to-log.yaml    |    8 +-
 .../kamelet-steps/prefix-action.kamelet.yaml       |    2 +-
 e2e/yaks/common/kamelet-steps/steps-binding.yaml   |    8 +-
 .../common/kamelet-steps/timer-source.kamelet.yaml |    2 +-
 e2e/yaks/common/kamelet/echo-sink.kamelet.yaml     |    2 +-
 e2e/yaks/common/kamelet/timer-source.kamelet.yaml  |    2 +-
 helm/camel-k/crds/crd-binding.yaml                 |   14 +-
 helm/camel-k/crds/crd-kamelet.yaml                 |  709 +++++-
 pkg/apis/addtoscheme_camel_v1alpha1.go             |    4 +-
 pkg/apis/camel/{v1alpha1 => v1}/binding_types.go   |    8 +-
 .../{v1alpha1 => v1}/binding_types_support.go      |    9 +-
 .../{v1alpha1 => v1}/binding_types_support_test.go |    2 +-
 pkg/apis/camel/v1/common_types_support.go          |   15 +
 pkg/apis/camel/v1/error_handler_types.go           |   55 +
 pkg/apis/camel/v1/error_handler_types_support.go   |  128 ++
 pkg/apis/camel/v1/jsonschema_types.go              |  108 +
 pkg/apis/camel/v1/kamelet_types.go                 |  234 ++
 .../kamelet_types_support.go}                      |  120 +-
 pkg/apis/camel/v1/register.go                      |    4 +
 pkg/apis/camel/v1/zz_generated.deepcopy.go         |  812 ++++++-
 .../{binding_types.go => kamelet_binding_types.go} |   82 +-
 ...support.go => kamelet_binding_types_support.go} |   46 +-
 ...st.go => kamelet_binding_types_support_test.go} |    0
 pkg/apis/camel/v1alpha1/register.go                |    4 +-
 pkg/apis/camel/v1alpha1/zz_generated.deepcopy.go   |  298 +--
 .../camel/{v1alpha1 => v1}/binding.go              |    4 +-
 .../camel/{v1alpha1 => v1}/bindingcondition.go     |   27 +-
 .../camel/{v1alpha1 => v1}/bindingspec.go          |   22 +-
 .../camel/{v1alpha1 => v1}/bindingstatus.go        |    8 +-
 .../camel/v1/datatypereference.go                  |   49 +
 .../applyconfiguration/camel/v1/datatypespec.go    |  102 +
 .../applyconfiguration/camel/v1/datatypesspec.go   |   70 +
 .../camel/applyconfiguration/camel/v1/endpoint.go  |   93 +
 .../camel/v1/endpointproperties.go}                |   34 +-
 .../camel/v1/errorhandlerspec.go}                  |   34 +-
 .../applyconfiguration/camel/v1/eventtypespec.go   |   49 +
 .../camel/v1/externaldocumentation.go              |   49 +
 .../applyconfiguration/camel/v1/headerspec.go      |   76 +
 .../camel/v1/json.go}                              |   26 +-
 .../applyconfiguration/camel/v1/jsonschemaprop.go  |  258 +++
 .../applyconfiguration/camel/v1/jsonschemaprops.go |  124 +
 .../camel/{v1alpha1/binding.go => v1/kamelet.go}   |   56 +-
 .../bindingcondition.go => v1/kameletcondition.go} |   55 +-
 .../applyconfiguration/camel/v1/kameletproperty.go |   49 +
 .../applyconfiguration/camel/v1/kameletspec.go     |  108 +
 .../bindingstatus.go => v1/kameletstatus.go}       |   50 +-
 .../camel/v1/template.go}                          |   26 +-
 .../v1alpha1/{binding.go => kameletbinding.go}     |   52 +-
 ...dingcondition.go => kameletbindingcondition.go} |   26 +-
 .../{bindingspec.go => kameletbindingspec.go}      |   24 +-
 .../{bindingstatus.go => kameletbindingstatus.go}  |   30 +-
 pkg/client/camel/applyconfiguration/utils.go       |   60 +-
 .../typed/camel/{v1alpha1 => v1}/binding.go        |   78 +-
 .../versioned/typed/camel/v1/camel_client.go       |   10 +
 .../camel/{v1alpha1 => v1}/fake/fake_binding.go    |   64 +-
 .../typed/camel/v1/fake/fake_camel_client.go       |    8 +
 .../versioned/typed/camel/v1/fake/fake_kamelet.go  |  191 ++
 .../typed/camel/v1/generated_expansion.go          |    4 +
 .../clientset/versioned/typed/camel/v1/kamelet.go  |  257 +++
 .../versioned/typed/camel/v1alpha1/camel_client.go |   10 +-
 .../typed/camel/v1alpha1/fake/fake_camel_client.go |    8 +-
 .../camel/v1alpha1/fake/fake_kameletbinding.go     |  214 ++
 .../typed/camel/v1alpha1/generated_expansion.go    |    4 +-
 .../typed/camel/v1alpha1/kameletbinding.go         |  290 +++
 .../camel/{v1alpha1 => v1}/binding.go              |   26 +-
 .../externalversions/camel/v1/interface.go         |   14 +
 .../camel/{v1alpha1/binding.go => v1/kamelet.go}   |   50 +-
 .../externalversions/camel/v1alpha1/interface.go   |   14 +-
 .../v1alpha1/{binding.go => kameletbinding.go}     |   38 +-
 .../camel/informers/externalversions/generic.go    |    8 +-
 .../listers/camel/{v1alpha1 => v1}/binding.go      |   24 +-
 .../camel/listers/camel/v1/expansion_generated.go  |   16 +
 pkg/client/camel/listers/camel/v1/kamelet.go       |  100 +
 .../listers/camel/v1alpha1/expansion_generated.go  |   16 +-
 .../camel/listers/camel/v1alpha1/kameletbinding.go |  100 +
 pkg/cmd/bind.go                                    |   32 +-
 pkg/cmd/bind_test.go                               |   16 +-
 pkg/cmd/delete.go                                  |   10 +-
 pkg/cmd/describe_kamelet.go                        |    7 +-
 pkg/cmd/kamelet_delete.go                          |   12 +-
 pkg/cmd/kamelet_get.go                             |   20 +-
 pkg/cmd/promote.go                                 |   11 +-
 pkg/cmd/promote_test.go                            |    9 +-
 pkg/cmd/reset.go                                   |    3 +-
 pkg/cmd/uninstall.go                               |    5 +-
 pkg/controller/binding/action.go                   |    6 +-
 pkg/controller/binding/binding_controller.go       |   20 +-
 pkg/controller/binding/error_handler.go            |   32 +-
 pkg/controller/binding/error_handler_test.go       |   32 +-
 pkg/controller/binding/initialize.go               |   25 +-
 pkg/controller/binding/integration.go              |   14 +-
 pkg/controller/binding/monitor.go                  |   43 +-
 pkg/controller/kamelet/action.go                   |    6 +-
 pkg/controller/kamelet/initialize.go               |    8 +-
 pkg/controller/kamelet/kamelet_controller.go       |   21 +-
 pkg/controller/kamelet/monitor.go                  |    8 +-
 pkg/event/manager.go                               |   13 +-
 pkg/install/kamelets.go                            |    9 +-
 pkg/install/kamelets_test.go                       |    6 +-
 pkg/kamelet/initialize.go                          |   31 +-
 pkg/kamelet/repository/composite_repository.go     |    4 +-
 .../repository/composite_repository_test.go        |    6 +-
 pkg/kamelet/repository/empty_repository.go         |    4 +-
 pkg/kamelet/repository/github_repository.go        |    8 +-
 pkg/kamelet/repository/kubernetes_repository.go    |    8 +-
 .../repository/kubernetes_repository_test.go       |    6 +-
 pkg/kamelet/repository/repository.go               |    3 +-
 pkg/kamelet/repository/repository_test.go          |    5 +-
 pkg/resources/resources.go                         |   16 +-
 pkg/trait/error_handler.go                         |    6 +-
 pkg/trait/error_handler_test.go                    |    8 +-
 pkg/trait/kamelets.go                              |   16 +-
 pkg/trait/kamelets_test.go                         |   66 +-
 pkg/trait/util.go                                  |    7 +-
 pkg/trait/util_test.go                             |   45 +-
 pkg/util/bindings/api.go                           |    6 +-
 pkg/util/bindings/bindings_test.go                 |   57 +-
 pkg/util/bindings/camel_uri.go                     |    4 +-
 pkg/util/bindings/catalog.go                       |    6 +-
 pkg/util/bindings/kamelet.go                       |   27 +-
 pkg/util/bindings/kamelet_test.go                  |   36 +-
 pkg/util/bindings/knative_ref.go                   |    7 +-
 pkg/util/bindings/knative_uri.go                   |    6 +-
 pkg/util/bindings/test_support.go                  |    6 +-
 pkg/util/dsl/template.go                           |    2 +-
 pkg/util/dsl/template_test.go                      |    2 +-
 pkg/util/kamelets/util.go                          |    4 +-
 pkg/util/log/log.go                                |    5 +-
 pkg/util/reference/reference.go                    |    2 +-
 pkg/util/reference/reference_test.go               |   12 +-
 171 files changed, 8469 insertions(+), 2089 deletions(-)

diff --git a/PROJECT b/PROJECT
index 9173437e1..fc4169d99 100644
--- a/PROJECT
+++ b/PROJECT
@@ -20,10 +20,10 @@ resources:
   version: v1
 - group: camel
   kind: Binding
-  version: v1alpha1
+  version: v1
 - group: camel
   kind: Kamelet
-  version: v1alpha1
+  version: v1
 version: "3"
 plugins:
   go.sdk.operatorframework.io/v2-alpha: {}
diff --git a/addons/keda/keda.go b/addons/keda/keda.go
index e597ce0e0..4e4ca5b17 100644
--- a/addons/keda/keda.go
+++ b/addons/keda/keda.go
@@ -27,8 +27,8 @@ import (
 
 	kedav1alpha1 "github.com/apache/camel-k/v2/addons/keda/duck/v1alpha1"
 	camelv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
+	camelv1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
-	camelv1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
 	"github.com/apache/camel-k/v2/pkg/kamelet/repository"
 	"github.com/apache/camel-k/v2/pkg/metadata"
 	"github.com/apache/camel-k/v2/pkg/platform"
@@ -279,7 +279,7 @@ func (t *kedaTrait) hackControllerReplicas(e *trait.Environment) error {
 	if err != nil {
 		return err
 	}
-	if ctrlRef.Kind == camelv1alpha1.BindingKind {
+	if ctrlRef.Kind == camelv1.BindingKind {
 		scale.ObjectMeta.Name = ctrlRef.Name
 		_, err = scalesClient.Scales(e.Integration.Namespace).Update(e.Ctx, camelv1alpha1.SchemeGroupVersion.WithResource("bindings").GroupResource(), &scale, metav1.UpdateOptions{})
 		if err != nil {
@@ -297,7 +297,7 @@ func (t *kedaTrait) hackControllerReplicas(e *trait.Environment) error {
 
 func (t *kedaTrait) getTopControllerReference(e *trait.Environment) *v1.ObjectReference {
 	for _, o := range e.Integration.OwnerReferences {
-		if o.Kind == camelv1alpha1.BindingKind && strings.HasPrefix(o.APIVersion, camelv1alpha1.SchemeGroupVersion.Group) {
+		if o.Kind == camelv1.BindingKind && strings.HasPrefix(o.APIVersion, camelv1alpha1.SchemeGroupVersion.Group) {
 			return &v1.ObjectReference{
 				APIVersion: o.APIVersion,
 				Kind:       o.Kind,
@@ -401,7 +401,7 @@ func (t *kedaTrait) populateTriggersFromKamelet(e *trait.Environment, repo repos
 	return nil
 }
 
-func (t *kedaTrait) populateTriggersFromKameletURI(e *trait.Environment, kamelet *camelv1alpha1.Kamelet, triggerType string, kedaParamToProperty map[string]string, requiredKEDAParam map[string]bool, authenticationParams map[string]bool, kameletURI string) error {
+func (t *kedaTrait) populateTriggersFromKameletURI(e *trait.Environment, kamelet *camelv1.Kamelet, triggerType string, kedaParamToProperty map[string]string, requiredKEDAParam map[string]bool, authenticationParams map[string]bool, kameletURI string) error {
 	metaValues := make(map[string]string, len(kedaParamToProperty))
 	for metaParam, prop := range kedaParamToProperty {
 		v, err := t.getKameletPropertyValue(e, kamelet, kameletURI, prop)
@@ -450,7 +450,7 @@ func (t *kedaTrait) populateTriggersFromKameletURI(e *trait.Environment, kamelet
 	return nil
 }
 
-func (t *kedaTrait) evaluateTemplateParameters(e *trait.Environment, kamelet *camelv1alpha1.Kamelet, kameletURI string) (map[string]string, map[string]bool, error) {
+func (t *kedaTrait) evaluateTemplateParameters(e *trait.Environment, kamelet *camelv1.Kamelet, kameletURI string) (map[string]string, map[string]bool, error) {
 	paramTemplates := make(map[string]string)
 	authenticationParam := make(map[string]bool)
 	for annotation, expr := range kamelet.Annotations {
@@ -492,7 +492,7 @@ func (t *kedaTrait) evaluateTemplateParameters(e *trait.Environment, kamelet *ca
 	return paramValues, authenticationParam, nil
 }
 
-func (t *kedaTrait) getKameletPropertyValue(e *trait.Environment, kamelet *camelv1alpha1.Kamelet, kameletURI, prop string) (string, error) {
+func (t *kedaTrait) getKameletPropertyValue(e *trait.Environment, kamelet *camelv1.Kamelet, kameletURI, prop string) (string, error) {
 	// From top priority to lowest
 	if v := uri.GetQueryParameter(kameletURI, prop); v != "" {
 		return v, nil
diff --git a/addons/keda/keda_test.go b/addons/keda/keda_test.go
index 9c64b3f1b..420f72d05 100644
--- a/addons/keda/keda_test.go
+++ b/addons/keda/keda_test.go
@@ -24,7 +24,7 @@ import (
 
 	"github.com/apache/camel-k/v2/addons/keda/duck/v1alpha1"
 	camelv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	camelv1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	camelv1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/v2/pkg/controller/binding"
 	"github.com/apache/camel-k/v2/pkg/trait"
 	"github.com/apache/camel-k/v2/pkg/util/camel"
@@ -117,7 +117,7 @@ func TestKameletAutoDetection(t *testing.T) {
 	keda, _ := NewKedaTrait().(*kedaTrait)
 	keda.Enabled = pointer.Bool(true)
 	env := createBasicTestEnvironment(
-		&camelv1alpha1.Kamelet{
+		&camelv1.Kamelet{
 			ObjectMeta: metav1.ObjectMeta{
 				Namespace: "test",
 				Name:      "my-kamelet",
@@ -125,7 +125,7 @@ func TestKameletAutoDetection(t *testing.T) {
 					"camel.apache.org/keda.type": "my-scaler",
 				},
 			},
-			Spec: camelv1alpha1.KameletSpec{
+			Spec: camelv1.KameletSpec{
 				Definition: &camelv1alpha1.JSONSchemaProps{
 					Properties: map[string]camelv1alpha1.JSONSchemaProp{
 						"a": {
@@ -207,12 +207,12 @@ func TestBindingAutoDetection(t *testing.T) {
 	keda, _ := NewKedaTrait().(*kedaTrait)
 	keda.Enabled = pointer.Bool(true)
 	logEndpoint := "log:info"
-	klb := camelv1alpha1.Binding{
+	klb := camelv1.Binding{
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: "test",
 			Name:      "my-binding",
 		},
-		Spec: camelv1alpha1.BindingSpec{
+		Spec: camelv1.BindingSpec{
 			Source: camelv1alpha1.Endpoint{
 				Ref: &corev1.ObjectReference{
 					Kind:       "Kamelet",
@@ -232,7 +232,7 @@ func TestBindingAutoDetection(t *testing.T) {
 	}
 
 	env := createBasicTestEnvironment(
-		&camelv1alpha1.Kamelet{
+		&camelv1.Kamelet{
 			ObjectMeta: metav1.ObjectMeta{
 				Namespace: "test",
 				Name:      "my-kamelet",
@@ -240,7 +240,7 @@ func TestBindingAutoDetection(t *testing.T) {
 					"camel.apache.org/keda.type": "my-scaler",
 				},
 			},
-			Spec: camelv1alpha1.KameletSpec{
+			Spec: camelv1.KameletSpec{
 				Definition: &camelv1alpha1.JSONSchemaProps{
 					Properties: map[string]camelv1alpha1.JSONSchemaProp{
 						"a": {
@@ -362,7 +362,7 @@ func TestHackKLBReplicas(t *testing.T) {
 	})
 	keda.HackControllerReplicas = pointer.Bool(true)
 	env := createBasicTestEnvironment(
-		&camelv1alpha1.Binding{
+		&camelv1.Binding{
 			ObjectMeta: metav1.ObjectMeta{
 				Namespace: "test",
 				Name:      "my-klb",
diff --git a/addons/strimzi/strimzi.go b/addons/strimzi/strimzi.go
index d10193f07..4207f191a 100644
--- a/addons/strimzi/strimzi.go
+++ b/addons/strimzi/strimzi.go
@@ -23,7 +23,8 @@ import (
 
 	"github.com/apache/camel-k/v2/addons/strimzi/duck/client/internalclientset"
 	"github.com/apache/camel-k/v2/addons/strimzi/duck/v1beta2"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+
+	camelv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/v2/pkg/util/bindings"
 	"github.com/apache/camel-k/v2/pkg/util/uri"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -39,7 +40,7 @@ func (s BindingProvider) ID() string {
 	return "strimzi"
 }
 
-func (s BindingProvider) Translate(ctx bindings.BindingContext, _ bindings.EndpointContext, endpoint v1alpha1.Endpoint) (*bindings.Binding, error) {
+func (s BindingProvider) Translate(ctx bindings.BindingContext, _ bindings.EndpointContext, endpoint camelv1.Endpoint) (*bindings.Binding, error) {
 	if endpoint.Ref == nil {
 		// React only on refs
 		return nil, nil
diff --git a/addons/strimzi/strimzi_test.go b/addons/strimzi/strimzi_test.go
index b99e66440..ba35e1941 100644
--- a/addons/strimzi/strimzi_test.go
+++ b/addons/strimzi/strimzi_test.go
@@ -25,7 +25,7 @@ import (
 	"github.com/apache/camel-k/v2/addons/strimzi/duck/client/internalclientset/fake"
 	"github.com/apache/camel-k/v2/addons/strimzi/duck/v1beta2"
 	camelv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+
 	"github.com/apache/camel-k/v2/pkg/util/bindings"
 	"github.com/apache/camel-k/v2/pkg/util/test"
 	"github.com/stretchr/testify/assert"
@@ -47,7 +47,7 @@ func TestStrimziDirect(t *testing.T) {
 		Profile:   camelv1.TraitProfileKubernetes,
 	}
 
-	endpoint := v1alpha1.Endpoint{
+	endpoint := camelv1.Endpoint{
 		Ref: &v1.ObjectReference{
 			Kind:       "KafkaTopic",
 			Name:       "mytopic",
@@ -59,7 +59,7 @@ func TestStrimziDirect(t *testing.T) {
 	}
 
 	binding, err := BindingProvider{}.Translate(bindingContext, bindings.EndpointContext{
-		Type: v1alpha1.EndpointTypeSink,
+		Type: camelv1.EndpointTypeSink,
 	}, endpoint)
 	assert.NoError(t, err)
 	assert.NotNil(t, binding)
@@ -110,7 +110,7 @@ func TestStrimziLookup(t *testing.T) {
 		Profile:   camelv1.TraitProfileKubernetes,
 	}
 
-	endpoint := v1alpha1.Endpoint{
+	endpoint := camelv1.Endpoint{
 		Ref: &v1.ObjectReference{
 			Kind:       "KafkaTopic",
 			Name:       "mytopicy",
@@ -119,7 +119,7 @@ func TestStrimziLookup(t *testing.T) {
 	}
 
 	binding, err := provider.Translate(bindingContext, bindings.EndpointContext{
-		Type: v1alpha1.EndpointTypeSink,
+		Type: camelv1.EndpointTypeSink,
 	}, endpoint)
 	assert.NoError(t, err)
 	assert.NotNil(t, binding)
@@ -127,12 +127,12 @@ func TestStrimziLookup(t *testing.T) {
 	assert.Equal(t, camelv1.Traits{}, binding.Traits)
 }
 
-func asEndpointProperties(props map[string]string) *v1alpha1.EndpointProperties {
+func asEndpointProperties(props map[string]string) *camelv1.EndpointProperties {
 	serialized, err := json.Marshal(props)
 	if err != nil {
 		panic(err)
 	}
-	return &v1alpha1.EndpointProperties{
+	return &camelv1.EndpointProperties{
 		RawMessage: serialized,
 	}
 }
diff --git a/config/crd/bases/camel.apache.org_bindings.yaml b/config/crd/bases/camel.apache.org_bindings.yaml
index b1b019aa4..eecb595e9 100644
--- a/config/crd/bases/camel.apache.org_bindings.yaml
+++ b/config/crd/bases/camel.apache.org_bindings.yaml
@@ -47,7 +47,7 @@ spec:
       jsonPath: .status.replicas
       name: Replicas
       type: integer
-    name: v1alpha1
+    name: v1
     schema:
       openAPIV3Schema:
         description: Binding is the Schema for the kamelets binding API
@@ -7777,6 +7777,7 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
+                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -7795,6 +7796,7 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -7806,6 +7808,7 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -7813,6 +7816,7 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8012,6 +8016,7 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
+                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -8030,6 +8035,7 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -8041,6 +8047,7 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -8048,6 +8055,7 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8252,6 +8260,7 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
+                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               externalDocs:
                                 description: ExternalDocumentation allows referencing
@@ -8270,6 +8279,7 @@ spec:
                                     default:
                                       description: default is a default value for
                                         undefined object fields.
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     deprecated:
                                       type: boolean
@@ -8281,6 +8291,7 @@ spec:
                                           value. These types are supported: bool,
                                           int64, float64, string, []interface{}, map[string]interface{}
                                           and nil.'
+                                        type: object
                                         x-kubernetes-preserve-unknown-fields: true
                                       type: array
                                     example:
@@ -8288,6 +8299,7 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     exclusiveMaximum:
                                       type: boolean
diff --git a/config/crd/bases/camel.apache.org_bindings.yaml b/config/crd/bases/camel.apache.org_kameletbindings.yaml
similarity index 99%
copy from config/crd/bases/camel.apache.org_bindings.yaml
copy to config/crd/bases/camel.apache.org_kameletbindings.yaml
index b1b019aa4..8269eee53 100644
--- a/config/crd/bases/camel.apache.org_bindings.yaml
+++ b/config/crd/bases/camel.apache.org_kameletbindings.yaml
@@ -1,45 +1,28 @@
-# ---------------------------------------------------------------------------
-# 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: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
     controller-gen.kubebuilder.io/version: v0.6.1
   creationTimestamp: null
-  labels:
-    app: camel-k
-  name: bindings.camel.apache.org
+  name: kameletbindings.camel.apache.org
 spec:
   group: camel.apache.org
   names:
     categories:
     - kamel
     - camel
-    kind: Binding
-    listKind: BindingList
-    plural: bindings
+    kind: KameletBinding
+    listKind: KameletBindingList
+    plural: kameletbindings
     shortNames:
     - klb
-    singular: binding
+    singular: kameletbinding
   scope: Namespaced
   versions:
   - additionalPrinterColumns:
-    - description: TheBinding phase
+    - description: The Kamelet Binding phase
       jsonPath: .status.phase
       name: Phase
       type: string
@@ -50,7 +33,7 @@ spec:
     name: v1alpha1
     schema:
       openAPIV3Schema:
-        description: Binding is the Schema for the kamelets binding API
+        description: KameletBinding is the Schema for the kamelets binding API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -65,7 +48,7 @@ spec:
           metadata:
             type: object
           spec:
-            description: the specification of a Binding
+            description: the specification of a KameletBinding
             properties:
               errorHandler:
                 description: ErrorHandler is an optional handler called upon an error
@@ -8410,12 +8393,12 @@ spec:
                 type: array
             type: object
           status:
-            description: the status of a Binding
+            description: the status of a KameletBinding
             properties:
               conditions:
                 description: Conditions --
                 items:
-                  description: BindingCondition describes the state of a resource
+                  description: KameletBindingCondition describes the state of a resource
                     at a certain point.
                   properties:
                     lastTransitionTime:
@@ -8498,7 +8481,7 @@ spec:
                       description: Status of the condition, one of True, False, Unknown.
                       type: string
                     type:
-                      description: Type of binding condition.
+                      description: Type of kameletBinding condition.
                       type: string
                   required:
                   - status
@@ -8507,7 +8490,7 @@ spec:
                 type: array
               observedGeneration:
                 description: ObservedGeneration is the most recent generation observed
-                  for this Binding.
+                  for this KameletBinding.
                 format: int64
                 type: integer
               phase:
@@ -8530,3 +8513,9 @@ spec:
         specReplicasPath: .spec.replicas
         statusReplicasPath: .status.replicas
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
diff --git a/config/crd/bases/camel.apache.org_kamelets.yaml b/config/crd/bases/camel.apache.org_kamelets.yaml
index 41dcba0e4..9eae88378 100644
--- a/config/crd/bases/camel.apache.org_kamelets.yaml
+++ b/config/crd/bases/camel.apache.org_kamelets.yaml
@@ -38,6 +38,713 @@ spec:
     singular: kamelet
   scope: Namespaced
   versions:
+  - additionalPrinterColumns:
+    - description: The Kamelet phase
+      jsonPath: .status.phase
+      name: Phase
+      type: string
+    name: v1
+    schema:
+      openAPIV3Schema:
+        description: Kamelet is the Schema for the kamelets API
+        properties:
+          apiVersion:
+            description: 'APIVersion defines the versioned schema of this representation
+              of an object. Servers should convert recognized schemas to the latest
+              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+            type: string
+          kind:
+            description: 'Kind is a string value representing the REST resource this
+              object represents. Servers may infer this from the endpoint the client
+              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+            type: string
+          metadata:
+            type: object
+          spec:
+            description: the desired specification
+            properties:
+              dataTypes:
+                additionalProperties:
+                  description: DataTypesSpec represents the specification for a set
+                    of data types
+                  properties:
+                    default:
+                      description: the default data type for this Kamelet
+                      type: string
+                    headers:
+                      additionalProperties:
+                        description: HeaderSpec represents the specification for a
+                          header used in the Kamelet
+                        properties:
+                          default:
+                            type: string
+                          description:
+                            type: string
+                          required:
+                            type: boolean
+                          title:
+                            type: string
+                          type:
+                            type: string
+                        type: object
+                      description: one to many header specifications
+                      type: object
+                    types:
+                      additionalProperties:
+                        description: DataTypeSpec represents the specification for
+                          a data type
+                        properties:
+                          dependencies:
+                            description: the list of Camel or Maven dependencies required
+                              by the data type
+                            items:
+                              type: string
+                            type: array
+                          description:
+                            description: optional description
+                            type: string
+                          format:
+                            description: the data type format name
+                            type: string
+                          headers:
+                            additionalProperties:
+                              description: HeaderSpec represents the specification
+                                for a header used in the Kamelet
+                              properties:
+                                default:
+                                  type: string
+                                description:
+                                  type: string
+                                required:
+                                  type: boolean
+                                title:
+                                  type: string
+                                type:
+                                  type: string
+                              type: object
+                            description: one to many header specifications
+                            type: object
+                          mediaType:
+                            description: media type as expected for HTTP media types
+                              (ie, application/json)
+                            type: string
+                          schema:
+                            description: the expected schema for the data type
+                            properties:
+                              $schema:
+                                description: JSONSchemaURL represents a schema url.
+                                type: string
+                              description:
+                                type: string
+                              example:
+                                description: 'JSON represents any valid JSON value.
+                                  These types are supported: bool, int64, float64,
+                                  string, []interface{}, map[string]interface{} and
+                                  nil.'
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              externalDocs:
+                                description: ExternalDocumentation allows referencing
+                                  an external resource for extended documentation.
+                                properties:
+                                  description:
+                                    type: string
+                                  url:
+                                    type: string
+                                type: object
+                              id:
+                                type: string
+                              properties:
+                                additionalProperties:
+                                  properties:
+                                    default:
+                                      description: default is a default value for
+                                        undefined object fields.
+                                      type: object
+                                      x-kubernetes-preserve-unknown-fields: true
+                                    deprecated:
+                                      type: boolean
+                                    description:
+                                      type: string
+                                    enum:
+                                      items:
+                                        description: 'JSON represents any valid JSON
+                                          value. These types are supported: bool,
+                                          int64, float64, string, []interface{}, map[string]interface{}
+                                          and nil.'
+                                        type: object
+                                        x-kubernetes-preserve-unknown-fields: true
+                                      type: array
+                                    example:
+                                      description: 'JSON represents any valid JSON
+                                        value. These types are supported: bool, int64,
+                                        float64, string, []interface{}, map[string]interface{}
+                                        and nil.'
+                                      type: object
+                                      x-kubernetes-preserve-unknown-fields: true
+                                    exclusiveMaximum:
+                                      type: boolean
+                                    exclusiveMinimum:
+                                      type: boolean
+                                    format:
+                                      description: "format is an OpenAPI v3 format
+                                        string. Unknown formats are ignored. The following
+                                        formats are validated: \n - bsonobjectid:
+                                        a bson object ID, i.e. a 24 characters hex
+                                        string - uri: an URI as parsed by Golang net/url.ParseRequestURI
+                                        - email: an email address as parsed by Golang
+                                        net/mail.ParseAddress - hostname: a valid
+                                        representation for an Internet host name,
+                                        as defined by RFC 1034, section 3.1 [RFC1034].
+                                        - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
+                                        - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
+                                        - cidr: a CIDR as parsed by Golang net.ParseCIDR
+                                        - mac: a MAC address as parsed by Golang net.ParseMAC
+                                        - uuid: an UUID that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                        - uuid3: an UUID3 that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                        - uuid4: an UUID4 that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                        - uuid5: an UUID5 that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                        - isbn: an ISBN10 or ISBN13 number string
+                                        like \"0321751043\" or \"978-0321751041\"
+                                        - isbn10: an ISBN10 number string like \"0321751043\"
+                                        - isbn13: an ISBN13 number string like \"978-0321751041\"
+                                        - creditcard: a credit card number defined
+                                        by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
+                                        with any non digit characters mixed in - ssn:
+                                        a U.S. social security number following the
+                                        regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$
+                                        - hexcolor: an hexadecimal color code like
+                                        \"#FFFFFF\" following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
+                                        - rgbcolor: an RGB color code like rgb like
+                                        \"rgb(255,255,255)\" - byte: base64 encoded
+                                        binary data - password: any kind of string
+                                        - date: a date string like \"2006-01-02\"
+                                        as defined by full-date in RFC3339 - duration:
+                                        a duration string like \"22 ns\" as parsed
+                                        by Golang time.ParseDuration or compatible
+                                        with Scala duration format - datetime: a date
+                                        time string like \"2014-12-15T19:30:20.000Z\"
+                                        as defined by date-time in RFC3339."
+                                      type: string
+                                    id:
+                                      type: string
+                                    maxItems:
+                                      format: int64
+                                      type: integer
+                                    maxLength:
+                                      format: int64
+                                      type: integer
+                                    maxProperties:
+                                      format: int64
+                                      type: integer
+                                    maximum:
+                                      description: A Number represents a JSON number
+                                        literal.
+                                      type: string
+                                    minItems:
+                                      format: int64
+                                      type: integer
+                                    minLength:
+                                      format: int64
+                                      type: integer
+                                    minProperties:
+                                      format: int64
+                                      type: integer
+                                    minimum:
+                                      description: A Number represents a JSON number
+                                        literal.
+                                      type: string
+                                    multipleOf:
+                                      description: A Number represents a JSON number
+                                        literal.
+                                      type: string
+                                    nullable:
+                                      type: boolean
+                                    pattern:
+                                      type: string
+                                    title:
+                                      type: string
+                                    type:
+                                      type: string
+                                    uniqueItems:
+                                      type: boolean
+                                    x-descriptors:
+                                      description: XDescriptors is a list of extended
+                                        properties that trigger a custom behavior
+                                        in external systems
+                                      items:
+                                        type: string
+                                      type: array
+                                  type: object
+                                type: object
+                              required:
+                                items:
+                                  type: string
+                                type: array
+                              title:
+                                type: string
+                              type:
+                                type: string
+                            type: object
+                          scheme:
+                            description: the data type component scheme
+                            type: string
+                        type: object
+                      description: one to many data type specifications
+                      type: object
+                  type: object
+                description: data specification types for the events consumed/produced
+                  by the Kamelet
+                type: object
+              definition:
+                description: defines the formal configuration of the Kamelet
+                properties:
+                  $schema:
+                    description: JSONSchemaURL represents a schema url.
+                    type: string
+                  description:
+                    type: string
+                  example:
+                    description: 'JSON represents any valid JSON value. These types
+                      are supported: bool, int64, float64, string, []interface{},
+                      map[string]interface{} and nil.'
+                    type: object
+                    x-kubernetes-preserve-unknown-fields: true
+                  externalDocs:
+                    description: ExternalDocumentation allows referencing an external
+                      resource for extended documentation.
+                    properties:
+                      description:
+                        type: string
+                      url:
+                        type: string
+                    type: object
+                  id:
+                    type: string
+                  properties:
+                    additionalProperties:
+                      properties:
+                        default:
+                          description: default is a default value for undefined object
+                            fields.
+                          type: object
+                          x-kubernetes-preserve-unknown-fields: true
+                        deprecated:
+                          type: boolean
+                        description:
+                          type: string
+                        enum:
+                          items:
+                            description: 'JSON represents any valid JSON value. These
+                              types are supported: bool, int64, float64, string, []interface{},
+                              map[string]interface{} and nil.'
+                            type: object
+                            x-kubernetes-preserve-unknown-fields: true
+                          type: array
+                        example:
+                          description: 'JSON represents any valid JSON value. These
+                            types are supported: bool, int64, float64, string, []interface{},
+                            map[string]interface{} and nil.'
+                          type: object
+                          x-kubernetes-preserve-unknown-fields: true
+                        exclusiveMaximum:
+                          type: boolean
+                        exclusiveMinimum:
+                          type: boolean
+                        format:
+                          description: "format is an OpenAPI v3 format string. Unknown
+                            formats are ignored. The following formats are validated:
+                            \n - bsonobjectid: a bson object ID, i.e. a 24 characters
+                            hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI
+                            - email: an email address as parsed by Golang net/mail.ParseAddress
+                            - hostname: a valid representation for an Internet host
+                            name, as defined by RFC 1034, section 3.1 [RFC1034]. -
+                            ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6:
+                            an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR
+                            as parsed by Golang net.ParseCIDR - mac: a MAC address
+                            as parsed by Golang net.ParseMAC - uuid: an UUID that
+                            allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                            - uuid3: an UUID3 that allows uppercase defined by the
+                            regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                            - uuid4: an UUID4 that allows uppercase defined by the
+                            regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                            - uuid5: an UUID5 that allows uppercase defined by the
+                            regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                            - isbn: an ISBN10 or ISBN13 number string like \"0321751043\"
+                            or \"978-0321751041\" - isbn10: an ISBN10 number string
+                            like \"0321751043\" - isbn13: an ISBN13 number string
+                            like \"978-0321751041\" - creditcard: a credit card number
+                            defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
+                            with any non digit characters mixed in - ssn: a U.S. social
+                            security number following the regex ^\\\\d{3}[- ]?\\\\d{2}[-
+                            ]?\\\\d{4}$ - hexcolor: an hexadecimal color code like
+                            \"#FFFFFF\" following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
+                            - rgbcolor: an RGB color code like rgb like \"rgb(255,255,255)\"
+                            - byte: base64 encoded binary data - password: any kind
+                            of string - date: a date string like \"2006-01-02\" as
+                            defined by full-date in RFC3339 - duration: a duration
+                            string like \"22 ns\" as parsed by Golang time.ParseDuration
+                            or compatible with Scala duration format - datetime: a
+                            date time string like \"2014-12-15T19:30:20.000Z\" as
+                            defined by date-time in RFC3339."
+                          type: string
+                        id:
+                          type: string
+                        maxItems:
+                          format: int64
+                          type: integer
+                        maxLength:
+                          format: int64
+                          type: integer
+                        maxProperties:
+                          format: int64
+                          type: integer
+                        maximum:
+                          description: A Number represents a JSON number literal.
+                          type: string
+                        minItems:
+                          format: int64
+                          type: integer
+                        minLength:
+                          format: int64
+                          type: integer
+                        minProperties:
+                          format: int64
+                          type: integer
+                        minimum:
+                          description: A Number represents a JSON number literal.
+                          type: string
+                        multipleOf:
+                          description: A Number represents a JSON number literal.
+                          type: string
+                        nullable:
+                          type: boolean
+                        pattern:
+                          type: string
+                        title:
+                          type: string
+                        type:
+                          type: string
+                        uniqueItems:
+                          type: boolean
+                        x-descriptors:
+                          description: XDescriptors is a list of extended properties
+                            that trigger a custom behavior in external systems
+                          items:
+                            type: string
+                          type: array
+                      type: object
+                    type: object
+                  required:
+                    items:
+                      type: string
+                    type: array
+                  title:
+                    type: string
+                  type:
+                    type: string
+                type: object
+              dependencies:
+                description: Camel dependencies needed by the Kamelet
+                items:
+                  type: string
+                type: array
+              sources:
+                description: sources in any Camel DSL supported
+                items:
+                  description: SourceSpec defines the configuration for one or more
+                    routes to be executed in a certain Camel DSL language
+                  properties:
+                    compression:
+                      description: if the content is compressed (base64 encrypted)
+                      type: boolean
+                    content:
+                      description: the source code (plain text)
+                      type: string
+                    contentKey:
+                      description: the confimap key holding the source content
+                      type: string
+                    contentRef:
+                      description: the confimap reference holding the source content
+                      type: string
+                    contentType:
+                      description: the content type (tipically text or binary)
+                      type: string
+                    interceptors:
+                      description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
+                        uses to pre/post process sources
+                      items:
+                        type: string
+                      type: array
+                    language:
+                      description: specify which is the language (Camel DSL) used
+                        to interpret this source code
+                      type: string
+                    loader:
+                      description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
+                        that will interpret this source at runtime
+                      type: string
+                    name:
+                      description: the name of the specification
+                      type: string
+                    path:
+                      description: the path where the file is stored
+                      type: string
+                    property-names:
+                      description: List of property names defined in the source (e.g.
+                        if type is "template")
+                      items:
+                        type: string
+                      type: array
+                    rawContent:
+                      description: the source code (binary)
+                      format: byte
+                      type: string
+                    type:
+                      description: Type defines the kind of source described by this
+                        object
+                      type: string
+                  type: object
+                type: array
+              template:
+                description: the main source in YAML DSL
+                type: object
+                x-kubernetes-preserve-unknown-fields: true
+              types:
+                additionalProperties:
+                  description: 'EventTypeSpec represents a specification for an event
+                    type Deprecated: In favor of using DataTypeSpec'
+                  properties:
+                    mediaType:
+                      description: media type as expected for HTTP media types (ie,
+                        application/json)
+                      type: string
+                    schema:
+                      description: the expected schema for the event
+                      properties:
+                        $schema:
+                          description: JSONSchemaURL represents a schema url.
+                          type: string
+                        description:
+                          type: string
+                        example:
+                          description: 'JSON represents any valid JSON value. These
+                            types are supported: bool, int64, float64, string, []interface{},
+                            map[string]interface{} and nil.'
+                          type: object
+                          x-kubernetes-preserve-unknown-fields: true
+                        externalDocs:
+                          description: ExternalDocumentation allows referencing an
+                            external resource for extended documentation.
+                          properties:
+                            description:
+                              type: string
+                            url:
+                              type: string
+                          type: object
+                        id:
+                          type: string
+                        properties:
+                          additionalProperties:
+                            properties:
+                              default:
+                                description: default is a default value for undefined
+                                  object fields.
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              deprecated:
+                                type: boolean
+                              description:
+                                type: string
+                              enum:
+                                items:
+                                  description: 'JSON represents any valid JSON value.
+                                    These types are supported: bool, int64, float64,
+                                    string, []interface{}, map[string]interface{}
+                                    and nil.'
+                                  type: object
+                                  x-kubernetes-preserve-unknown-fields: true
+                                type: array
+                              example:
+                                description: 'JSON represents any valid JSON value.
+                                  These types are supported: bool, int64, float64,
+                                  string, []interface{}, map[string]interface{} and
+                                  nil.'
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              exclusiveMaximum:
+                                type: boolean
+                              exclusiveMinimum:
+                                type: boolean
+                              format:
+                                description: "format is an OpenAPI v3 format string.
+                                  Unknown formats are ignored. The following formats
+                                  are validated: \n - bsonobjectid: a bson object
+                                  ID, i.e. a 24 characters hex string - uri: an URI
+                                  as parsed by Golang net/url.ParseRequestURI - email:
+                                  an email address as parsed by Golang net/mail.ParseAddress
+                                  - hostname: a valid representation for an Internet
+                                  host name, as defined by RFC 1034, section 3.1 [RFC1034].
+                                  - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
+                                  - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
+                                  - cidr: a CIDR as parsed by Golang net.ParseCIDR
+                                  - mac: a MAC address as parsed by Golang net.ParseMAC
+                                  - uuid: an UUID that allows uppercase defined by
+                                  the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                  - uuid3: an UUID3 that allows uppercase defined
+                                  by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                  - uuid4: an UUID4 that allows uppercase defined
+                                  by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                  - uuid5: an UUID5 that allows uppercase defined
+                                  by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                  - isbn: an ISBN10 or ISBN13 number string like \"0321751043\"
+                                  or \"978-0321751041\" - isbn10: an ISBN10 number
+                                  string like \"0321751043\" - isbn13: an ISBN13 number
+                                  string like \"978-0321751041\" - creditcard: a credit
+                                  card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
+                                  with any non digit characters mixed in - ssn: a
+                                  U.S. social security number following the regex
+                                  ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$ - hexcolor:
+                                  an hexadecimal color code like \"#FFFFFF\" following
+                                  the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ -
+                                  rgbcolor: an RGB color code like rgb like \"rgb(255,255,255)\"
+                                  - byte: base64 encoded binary data - password: any
+                                  kind of string - date: a date string like \"2006-01-02\"
+                                  as defined by full-date in RFC3339 - duration: a
+                                  duration string like \"22 ns\" as parsed by Golang
+                                  time.ParseDuration or compatible with Scala duration
+                                  format - datetime: a date time string like \"2014-12-15T19:30:20.000Z\"
+                                  as defined by date-time in RFC3339."
+                                type: string
+                              id:
+                                type: string
+                              maxItems:
+                                format: int64
+                                type: integer
+                              maxLength:
+                                format: int64
+                                type: integer
+                              maxProperties:
+                                format: int64
+                                type: integer
+                              maximum:
+                                description: A Number represents a JSON number literal.
+                                type: string
+                              minItems:
+                                format: int64
+                                type: integer
+                              minLength:
+                                format: int64
+                                type: integer
+                              minProperties:
+                                format: int64
+                                type: integer
+                              minimum:
+                                description: A Number represents a JSON number literal.
+                                type: string
+                              multipleOf:
+                                description: A Number represents a JSON number literal.
+                                type: string
+                              nullable:
+                                type: boolean
+                              pattern:
+                                type: string
+                              title:
+                                type: string
+                              type:
+                                type: string
+                              uniqueItems:
+                                type: boolean
+                              x-descriptors:
+                                description: XDescriptors is a list of extended properties
+                                  that trigger a custom behavior in external systems
+                                items:
+                                  type: string
+                                type: array
+                            type: object
+                          type: object
+                        required:
+                          items:
+                            type: string
+                          type: array
+                        title:
+                          type: string
+                        type:
+                          type: string
+                      type: object
+                  type: object
+                description: 'data specification types for the events consumed/produced
+                  by the Kamelet Deprecated: In favor of using DataTypes'
+                type: object
+            type: object
+          status:
+            description: the actual status of the resource
+            properties:
+              conditions:
+                description: Conditions --
+                items:
+                  description: KameletCondition describes the state of a resource
+                    at a certain point.
+                  properties:
+                    lastTransitionTime:
+                      description: Last time the condition transitioned from one status
+                        to another.
+                      format: date-time
+                      type: string
+                    lastUpdateTime:
+                      description: The last time this condition was updated.
+                      format: date-time
+                      type: string
+                    message:
+                      description: A human-readable message indicating details about
+                        the transition.
+                      type: string
+                    reason:
+                      description: The reason for the condition's last transition.
+                      type: string
+                    status:
+                      description: Status of the condition, one of True, False, Unknown.
+                      type: string
+                    type:
+                      description: Type of kamelet condition.
+                      type: string
+                  required:
+                  - status
+                  - type
+                  type: object
+                type: array
+              observedGeneration:
+                description: ObservedGeneration is the most recent generation observed
+                  for this Kamelet.
+                format: int64
+                type: integer
+              phase:
+                description: Phase --
+                type: string
+              properties:
+                description: Properties --
+                items:
+                  description: KameletProperty specify the behavior of a property
+                    in a Kamelet
+                  properties:
+                    default:
+                      description: the default value of the property (if any)
+                      type: string
+                    name:
+                      description: the name of the property
+                      type: string
+                  type: object
+                type: array
+            type: object
+        type: object
+    served: true
+    storage: true
+    subresources:
+      status: {}
   - additionalPrinterColumns:
     - description: The Kamelet phase
       jsonPath: .status.phase
@@ -730,6 +1437,6 @@ spec:
             type: object
         type: object
     served: true
-    storage: true
+    storage: false
     subresources:
       status: {}
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index c98fce367..097671dc4 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -5,6 +5,48 @@ Package v1 contains API Schema definitions for the camel v1 API group
 
 ==  Resource Types
 
+[#_camel_apache_org_v1_Binding]
+=== Binding
+
+Binding is the Schema for the kamelets binding API
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`apiVersion` +
+string
+|`camel.apache.org/v1`
+
+|`kind` +
+string
+|`Binding`
+|`metadata` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectmeta-v1-meta[Kubernetes meta/v1.ObjectMeta]*
+|
+
+
+
+
+Refer to the Kubernetes API documentation for the fields of the `metadata` field.
+|`spec` +
+*xref:#_camel_apache_org_v1_BindingSpec[BindingSpec]*
+|
+
+
+the specification of a Binding
+
+|`status` +
+*xref:#_camel_apache_org_v1_BindingStatus[BindingStatus]*
+|
+
+
+the status of a Binding
+
+
+|===
+
 [#_camel_apache_org_v1_Build]
 === Build
 
@@ -219,6 +261,48 @@ Refer to the Kubernetes API documentation for the fields of the `metadata` field
 
 
 
+|===
+
+[#_camel_apache_org_v1_Kamelet]
+=== Kamelet
+
+Kamelet is the Schema for the kamelets API
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`apiVersion` +
+string
+|`camel.apache.org/v1`
+
+|`kind` +
+string
+|`Kamelet`
+|`metadata` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectmeta-v1-meta[Kubernetes meta/v1.ObjectMeta]*
+|
+
+
+
+
+Refer to the Kubernetes API documentation for the fields of the `metadata` field.
+|`spec` +
+*xref:#_camel_apache_org_v1_KameletSpec[KameletSpec]*
+|
+
+
+the desired specification
+
+|`status` +
+*xref:#_camel_apache_org_v1_KameletStatus[KameletStatus]*
+|
+
+
+the actual status of the resource
+
+
 |===
 
 == Internal Types
@@ -320,6 +404,230 @@ string
 name of the task
 
 
+|===
+
+[#_camel_apache_org_v1_BeanProperties]
+=== BeanProperties
+
+BeanProperties represent an unstructured object properties to be set on a bean
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
+
+
+
+
+
+|===
+
+[#_camel_apache_org_v1_BindingCondition]
+=== BindingCondition
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_BindingStatus, BindingStatus>>
+
+BindingCondition describes the state of a resource at a certain point.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`type` +
+*xref:#_camel_apache_org_v1_BindingConditionType[BindingConditionType]*
+|
+
+
+Type of binding condition.
+
+|`status` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
+|
+
+
+Status of the condition, one of True, False, Unknown.
+
+|`lastUpdateTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+The last time this condition was updated.
+
+|`lastTransitionTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+Last time the condition transitioned from one status to another.
+
+|`reason` +
+string
+|
+
+
+The reason for the condition's last transition.
+
+|`message` +
+string
+|
+
+
+A human readable message indicating details about the transition.
+
+|`pods` +
+*xref:#_camel_apache_org_v1_PodCondition[[\]PodCondition]*
+|
+
+
+Pods collect health and conditions information from the owned PODs
+
+
+|===
+
+[#_camel_apache_org_v1_BindingConditionType]
+=== BindingConditionType(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_BindingCondition, BindingCondition>>
+
+BindingConditionType --
+
+
+[#_camel_apache_org_v1_BindingPhase]
+=== BindingPhase(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_BindingStatus, BindingStatus>>
+
+BindingPhase --
+
+
+[#_camel_apache_org_v1_BindingSpec]
+=== BindingSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Binding, Binding>>
+
+BindingSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`integration` +
+*xref:#_camel_apache_org_v1_IntegrationSpec[IntegrationSpec]*
+|
+
+
+Integration is an optional integration used to specify custom parameters
+
+|`source` +
+*xref:#_camel_apache_org_v1_Endpoint[Endpoint]*
+|
+
+
+Source is the starting point of the integration defined by this binding
+
+|`sink` +
+*xref:#_camel_apache_org_v1_Endpoint[Endpoint]*
+|
+
+
+Sink is the destination of the integration defined by this binding
+
+|`errorHandler` +
+*xref:#_camel_apache_org_v1_ErrorHandlerSpec[ErrorHandlerSpec]*
+|
+
+
+ErrorHandler is an optional handler called upon an error occuring in the integration
+
+|`steps` +
+*xref:#_camel_apache_org_v1_Endpoint[[\]Endpoint]*
+|
+
+
+Steps contains an optional list of intermediate steps that are executed between the Source and the Sink
+
+|`replicas` +
+int32
+|
+
+
+Replicas is the number of desired replicas for the binding
+
+|`serviceAccountName` +
+string
+|
+
+
+Custom SA to use for the binding
+
+
+|===
+
+[#_camel_apache_org_v1_BindingStatus]
+=== BindingStatus
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Binding, Binding>>
+
+BindingStatus specify the status of a binding
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`observedGeneration` +
+int64
+|
+
+
+ObservedGeneration is the most recent generation observed for this Binding.
+
+|`phase` +
+*xref:#_camel_apache_org_v1_BindingPhase[BindingPhase]*
+|
+
+
+Phase --
+
+|`conditions` +
+*xref:#_camel_apache_org_v1_BindingCondition[[\]BindingCondition]*
+|
+
+
+Conditions --
+
+|`replicas` +
+int32
+|
+
+
+Replicas is the number of actual replicas of the binding
+
+|`selector` +
+string
+|
+
+
+Selector allows to identify pods belonging to the binding
+
+
 |===
 
 [#_camel_apache_org_v1_BuildCondition]
@@ -1239,707 +1547,663 @@ if the content is compressed (base64 encrypted)
 
 |===
 
-[#_camel_apache_org_v1_Failure]
-=== Failure
+[#_camel_apache_org_v1_DataTypeReference]
+=== DataTypeReference
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_BuildStatus, BuildStatus>>
-* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
+* <<#_camel_apache_org_v1_Endpoint, Endpoint>>
 
-Failure represent a message specifying the reason and the time of an event failure
+DataTypeReference references to the specification of a data type by its scheme and format name
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`reason` +
+|`scheme` +
 string
 |
 
 
-a short text specifying the reason
+the data type component scheme
 
-|`time` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|`format` +
+string
 |
 
 
-the time when the failure has happened
-
-|`recovery` +
-*xref:#_camel_apache_org_v1_FailureRecovery[FailureRecovery]*
-|
-
-
-the recovery attempted for this failure
+the data type format name
 
 
 |===
 
-[#_camel_apache_org_v1_FailureRecovery]
-=== FailureRecovery
+[#_camel_apache_org_v1_DataTypeSpec]
+=== DataTypeSpec
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_Failure, Failure>>
+* <<#_camel_apache_org_v1_DataTypesSpec, DataTypesSpec>>
 
-FailureRecovery defines the attempts to recover a failure
+DataTypeSpec represents the specification for a data type
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`attempt` +
-int
+|`scheme` +
+string
 |
 
 
-attempt number
+the data type component scheme
 
-|`attemptMax` +
-int
+|`format` +
+string
 |
 
 
-maximum number of attempts
+the data type format name
 
-|`attemptTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|`description` +
+string
 |
-*(Optional)*
 
-time of the attempt execution
 
+optional description
 
-|===
+|`mediaType` +
+string
+|
 
-[#_camel_apache_org_v1_Flow]
-=== Flow
 
-*Appears on:*
+media type as expected for HTTP media types (ie, application/json)
 
-* <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>>
+|`dependencies` +
+[]string
+|
 
-Flow is an unstructured object representing a Camel Flow in YAML/JSON DSL
 
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
+the list of Camel or Maven dependencies required by the data type
 
-|`RawMessage` +
-*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
-|(Members of `RawMessage` are embedded into this type.)
+|`headers` +
+*xref:#_camel_apache_org_v1_HeaderSpec[map[string\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.HeaderSpec]*
+|
 
 
+one to many header specifications
+
+|`schema` +
+*xref:#_camel_apache_org_v1_JSONSchemaProps[JSONSchemaProps]*
+|
 
 
+the expected schema for the data type
+
 
 |===
 
-[#_camel_apache_org_v1_HealthCheck]
-=== HealthCheck
+[#_camel_apache_org_v1_DataTypesSpec]
+=== DataTypesSpec
+
+*Appears on:*
 
+* <<#_camel_apache_org_v1_KameletSpec, KameletSpec>>
 
+DataTypesSpec represents the specification for a set of data types
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`status` +
-*xref:#_camel_apache_org_v1_HealthCheckStatus[HealthCheckStatus]*
+|`default` +
+string
 |
 
 
+the default data type for this Kamelet
 
-
-|`checks` +
-*xref:#_camel_apache_org_v1_HealthCheckResponse[[\]HealthCheckResponse]*
+|`types` +
+*xref:#_camel_apache_org_v1_DataTypeSpec[map[string\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.DataTypeSpec]*
 |
 
 
+one to many data type specifications
+
+|`headers` +
+*xref:#_camel_apache_org_v1_HeaderSpec[map[string\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.HeaderSpec]*
+|
+
 
+one to many header specifications
 
 
 |===
 
-[#_camel_apache_org_v1_HealthCheckResponse]
-=== HealthCheckResponse
+[#_camel_apache_org_v1_Endpoint]
+=== Endpoint
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_HealthCheck, HealthCheck>>
-* <<#_camel_apache_org_v1_PodCondition, PodCondition>>
-
+* <<#_camel_apache_org_v1_BindingSpec, BindingSpec>>
+* <<#_camel_apache_org_v1_ErrorHandlerSink, ErrorHandlerSink>>
 
+Endpoint represents a source/sink external entity (could be any Kubernetes resource or Camel URI)
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`name` +
-string
+|`ref` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectreference-v1-core[Kubernetes core/v1.ObjectReference]*
 |
 
 
+Ref can be used to declare a Kubernetes resource as source/sink endpoint
 
-
-|`status` +
-*xref:#_camel_apache_org_v1_HealthCheckStatus[HealthCheckStatus]*
+|`uri` +
+string
 |
 
 
+URI can be used to specify the (Camel) endpoint explicitly
 
-
-|`data` +
-*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|`properties` +
+*xref:#_camel_apache_org_v1_EndpointProperties[EndpointProperties]*
 |
 
 
+Properties are a key value representation of endpoint properties
 
+|`types` +
+*xref:#_camel_apache_org_v1_EventTypeSpec[map[github.com/apache/camel-k/v2/pkg/apis/camel/v1.TypeSlot\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.EventTypeSpec]*
+|
 
 
-|===
-
-[#_camel_apache_org_v1_HealthCheckStatus]
-=== HealthCheckStatus(`string` alias)
+Types defines the data type of the data produced/consumed by the endpoint and references a given data type specification.
+Deprecated: In favor of using DataTypes
 
-*Appears on:*
+|`dataTypes` +
+*xref:#_camel_apache_org_v1_DataTypeReference[map[github.com/apache/camel-k/v2/pkg/apis/camel/v1.TypeSlot\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.DataTypeReference]*
+|
 
-* <<#_camel_apache_org_v1_HealthCheck, HealthCheck>>
-* <<#_camel_apache_org_v1_HealthCheckResponse, HealthCheckResponse>>
 
+DataTypes defines the data type of the data produced/consumed by the endpoint and references a given data type specification.
 
 
+|===
 
-[#_camel_apache_org_v1_IntegrationCondition]
-=== IntegrationCondition
+[#_camel_apache_org_v1_EndpointProperties]
+=== EndpointProperties
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
+* <<#_camel_apache_org_v1_Endpoint, Endpoint>>
 
-IntegrationCondition describes the state of a resource at a certain point.
+EndpointProperties is a key/value struct represented as JSON raw to allow numeric/boolean values
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`type` +
-*xref:#_camel_apache_org_v1_IntegrationConditionType[IntegrationConditionType]*
-|
-
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
 
-Type of integration condition.
 
-|`status` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
-|
 
 
-Status of the condition, one of True, False, Unknown.
 
-|`lastUpdateTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
-|
+|===
 
+[#_camel_apache_org_v1_EndpointType]
+=== EndpointType(`string` alias)
 
-The last time this condition was updated.
+EndpointType represents the type (ie, source or sink)
 
-|`lastTransitionTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
-|
 
+[#_camel_apache_org_v1_ErrorHandler]
+=== ErrorHandler
 
-Last time the condition transitioned from one status to another.
+ErrorHandler is a generic interface that represent any type of error handler specification
 
-|`firstTruthyTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
-|
 
+[#_camel_apache_org_v1_ErrorHandlerLog]
+=== ErrorHandlerLog
 
-First time the condition status transitioned to True.
+*Appears on:*
 
-|`reason` +
-string
-|
+* <<#_camel_apache_org_v1_ErrorHandlerSink, ErrorHandlerSink>>
 
+ErrorHandlerLog represent a default (log) error handler type
 
-The reason for the condition's last transition.
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-|`message` +
-string
+|`ErrorHandlerNone` +
+*xref:#_camel_apache_org_v1_ErrorHandlerNone[ErrorHandlerNone]*
 |
 
 
-A human-readable message indicating details about the transition.
 
-|`pods` +
-*xref:#_camel_apache_org_v1_PodCondition[[\]PodCondition]*
+
+|`parameters` +
+*xref:#_camel_apache_org_v1_ErrorHandlerParameters[ErrorHandlerParameters]*
 |
 
 
-Pods collect health and conditions information from the owned PODs
+
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationConditionType]
-=== IntegrationConditionType(`string` alias)
+[#_camel_apache_org_v1_ErrorHandlerNone]
+=== ErrorHandlerNone
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationCondition, IntegrationCondition>>
+* <<#_camel_apache_org_v1_ErrorHandlerLog, ErrorHandlerLog>>
 
-IntegrationConditionType --
+ErrorHandlerNone --
 
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-[#_camel_apache_org_v1_IntegrationKitCondition]
-=== IntegrationKitCondition
+
+|===
+
+[#_camel_apache_org_v1_ErrorHandlerParameters]
+=== ErrorHandlerParameters
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
+* <<#_camel_apache_org_v1_ErrorHandlerLog, ErrorHandlerLog>>
 
-IntegrationKitCondition describes the state of a resource at a certain point.
+ErrorHandlerParameters represent an unstructured object for error handler parameters
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`type` +
-*xref:#_camel_apache_org_v1_IntegrationKitConditionType[IntegrationKitConditionType]*
-|
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
 
 
-Type of integration condition.
 
-|`status` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
-|
 
 
-Status of the condition, one of True, False, Unknown.
+|===
 
-|`lastUpdateTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
-|
+[#_camel_apache_org_v1_ErrorHandlerSink]
+=== ErrorHandlerSink
 
+ErrorHandlerSink represents a sink error handler type which behave like a dead letter channel
 
-The last time this condition was updated.
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-|`lastTransitionTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|`ErrorHandlerLog` +
+*xref:#_camel_apache_org_v1_ErrorHandlerLog[ErrorHandlerLog]*
 |
 
 
-Last time the condition transitioned from one status to another.
-
-|`reason` +
-string
-|
-
 
-The reason for the condition's last transition.
 
-|`message` +
-string
+|`endpoint` +
+*xref:#_camel_apache_org_v1_Endpoint[Endpoint]*
 |
 
 
-A human-readable message indicating details about the transition.
+
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationKitConditionType]
-=== IntegrationKitConditionType(`string` alias)
+[#_camel_apache_org_v1_ErrorHandlerSpec]
+=== ErrorHandlerSpec
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationKitCondition, IntegrationKitCondition>>
+* <<#_camel_apache_org_v1_BindingSpec, BindingSpec>>
 
-IntegrationKitConditionType --
+ErrorHandlerSpec represents an unstructured object for an error handler
 
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-[#_camel_apache_org_v1_IntegrationKitPhase]
-=== IntegrationKitPhase(`string` alias)
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
 
-*Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
 
-IntegrationKitPhase --
 
 
-[#_camel_apache_org_v1_IntegrationKitSpec]
-=== IntegrationKitSpec
+|===
+
+[#_camel_apache_org_v1_ErrorHandlerType]
+=== ErrorHandlerType(`string` alias)
+
+ErrorHandlerType a type of error handler (ie, sink)
+
+
+[#_camel_apache_org_v1_EventTypeSpec]
+=== EventTypeSpec
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationKit, IntegrationKit>>
+* <<#_camel_apache_org_v1_Endpoint, Endpoint>>
+* <<#_camel_apache_org_v1_KameletSpec, KameletSpec>>
 
-IntegrationKitSpec defines a container image and additional configurations required to kick off an `Integration` with certain features
+EventTypeSpec represents a specification for an event type
+Deprecated: In favor of using DataTypeSpec
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`image` +
+|`mediaType` +
 string
 |
 
 
-the container image as identified in the container registry
+media type as expected for HTTP media types (ie, application/json)
 
-|`dependencies` +
-[]string
+|`schema` +
+*xref:#_camel_apache_org_v1_JSONSchemaProps[JSONSchemaProps]*
 |
 
 
-a list of Camel dependecies used by this kit
-
-|`profile` +
-*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
-|
-
+the expected schema for the event
 
-the profile which is expected by this kit
 
-|`traits` +
-*xref:#_camel_apache_org_v1_IntegrationKitTraits[IntegrationKitTraits]*
-|
+|===
 
+[#_camel_apache_org_v1_ExternalDocumentation]
+=== ExternalDocumentation
 
-traits that the kit will execute
+*Appears on:*
 
-|`configuration` +
-*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
-|
+* <<#_camel_apache_org_v1_JSONSchemaProps, JSONSchemaProps>>
 
+ExternalDocumentation allows referencing an external resource for extended documentation.
 
-Deprecated:
-Use camel trait (camel.properties) to manage properties
-Use mount trait (mount.configs) to manage configs
-Use mount trait (mount.resources) to manage resources
-Use mount trait (mount.volumes) to manage volumes
-configuration used by the kit
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-|`repositories` +
-[]string
+|`description` +
+string
 |
 
 
-Maven repositories that can be used by the kit
 
-|`sources` +
-*xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
+
+|`url` +
+string
 |
 
 
-the sources to add at build time
+
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationKitStatus]
-=== IntegrationKitStatus
+[#_camel_apache_org_v1_Failure]
+=== Failure
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationKit, IntegrationKit>>
+* <<#_camel_apache_org_v1_BuildStatus, BuildStatus>>
+* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
 
-IntegrationKitStatus defines the observed state of IntegrationKit
+Failure represent a message specifying the reason and the time of an event failure
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`observedGeneration` +
-int64
+|`reason` +
+string
 |
 
 
-ObservedGeneration is the most recent generation observed for this IntegrationKit.
+a short text specifying the reason
 
-|`phase` +
-*xref:#_camel_apache_org_v1_IntegrationKitPhase[IntegrationKitPhase]*
+|`time` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
 |
 
 
-phase of the kit
+the time when the failure has happened
 
-|`baseImage` +
-string
+|`recovery` +
+*xref:#_camel_apache_org_v1_FailureRecovery[FailureRecovery]*
 |
 
 
-base image used by the kit
-
-|`image` +
-string
-|
-
+the recovery attempted for this failure
 
-actual image name of the kit
 
-|`digest` +
-string
-|
+|===
 
+[#_camel_apache_org_v1_FailureRecovery]
+=== FailureRecovery
 
-actual image digest of the kit
+*Appears on:*
 
-|`artifacts` +
-*xref:#_camel_apache_org_v1_Artifact[[\]Artifact]*
-|
+* <<#_camel_apache_org_v1_Failure, Failure>>
 
+FailureRecovery defines the attempts to recover a failure
 
-list of artifacts used by the kit
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-|`failure` +
-*xref:#_camel_apache_org_v1_Failure[Failure]*
+|`attempt` +
+int
 |
 
 
-failure reason (if any)
+attempt number
 
-|`runtimeVersion` +
-string
+|`attemptMax` +
+int
 |
 
 
-the runtime version for which this kit was configured
+maximum number of attempts
 
-|`runtimeProvider` +
-*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
+|`attemptTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
 |
+*(Optional)*
 
+time of the attempt execution
 
-the runtime provider for which this kit was configured
 
-|`platform` +
-string
-|
+|===
 
+[#_camel_apache_org_v1_Flow]
+=== Flow
 
-the platform for which this kit was configured
+*Appears on:*
 
-|`version` +
-string
-|
+* <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>>
 
+Flow is an unstructured object representing a Camel Flow in YAML/JSON DSL
 
-the Camel K operator version for which this kit was configured
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
 
-|`conditions` +
-*xref:#_camel_apache_org_v1_IntegrationKitCondition[[\]IntegrationKitCondition]*
-|
 
 
-a list of conditions which happened for the events related the kit
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationKitTraits]
-=== IntegrationKitTraits
+[#_camel_apache_org_v1_HeaderSpec]
+=== HeaderSpec
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationKitSpec, IntegrationKitSpec>>
+* <<#_camel_apache_org_v1_DataTypeSpec, DataTypeSpec>>
+* <<#_camel_apache_org_v1_DataTypesSpec, DataTypesSpec>>
 
-IntegrationKitTraits defines traits assigned to an `IntegrationKit`
+HeaderSpec represents the specification for a header used in the Kamelet
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`builder` +
-*xref:#_camel_apache_org_v1_trait_BuilderTrait[BuilderTrait]*
+|`type` +
+string
 |
 
 
-The builder trait is internally used to determine the best strategy to build and configure IntegrationKits.
-
-|`camel` +
-*xref:#_camel_apache_org_v1_trait_CamelTrait[CamelTrait]*
-|
-
 
-The Camel trait sets up Camel configuration.
 
-|`quarkus` +
-*xref:#_camel_apache_org_v1_trait_QuarkusTrait[QuarkusTrait]*
+|`title` +
+string
 |
 
 
-The Quarkus trait configures the Quarkus runtime.
-It's enabled by default.
-NOTE: Compiling to a native executable, i.e. when using `package-type=native`, is only supported for kamelets, as well as YAML and XML integrations. It also requires at least 4GiB of memory, so the Pod running the native build, that is either the operator Pod, or the build Pod (depending on the build strategy configured for the platform), must have enough memory available.
-
-|`registry` +
-*xref:#_camel_apache_org_v1_trait_RegistryTrait[RegistryTrait]*
-|
-
 
-The Registry trait sets up Maven to use the Image registry as a Maven repository.
 
-|`addons` +
-*xref:#_camel_apache_org_v1_AddonTrait[map[string\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.AddonTrait]*
+|`description` +
+string
 |
 
 
-The collection of addon trait configurations
-
-
-|===
 
-[#_camel_apache_org_v1_IntegrationPhase]
-=== IntegrationPhase(`string` alias)
 
-*Appears on:*
+|`required` +
+bool
+|
 
-* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
 
-IntegrationPhase --
 
 
-[#_camel_apache_org_v1_IntegrationPlatformBuildPublishStrategy]
-=== IntegrationPlatformBuildPublishStrategy(`string` alias)
+|`default` +
+string
+|
 
-*Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
 
-IntegrationPlatformBuildPublishStrategy defines the strategy used to package and publish an Integration base image
 
 
-[#_camel_apache_org_v1_IntegrationPlatformBuildSpec]
-=== IntegrationPlatformBuildSpec
+|===
 
-*Appears on:*
+[#_camel_apache_org_v1_HealthCheck]
+=== HealthCheck
 
-* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
 
-IntegrationPlatformBuildSpec contains platform related build information.
-This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
-You can define the build strategy, the image registry to use and the Maven configuration to adopt.
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`buildStrategy` +
-*xref:#_camel_apache_org_v1_BuildStrategy[BuildStrategy]*
+|`status` +
+*xref:#_camel_apache_org_v1_HealthCheckStatus[HealthCheckStatus]*
 |
 
 
-the strategy to adopt for building an Integration base image
-
-|`publishStrategy` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformBuildPublishStrategy[IntegrationPlatformBuildPublishStrategy]*
-|
-
 
-the strategy to adopt for publishing an Integration base image
 
-|`runtimeVersion` +
-string
+|`checks` +
+*xref:#_camel_apache_org_v1_HealthCheckResponse[[\]HealthCheckResponse]*
 |
 
 
-the Camel K Runtime dependency version
 
-|`runtimeProvider` +
-*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
-|
 
 
-the runtime used. Likely Camel Quarkus (we used to have main runtime which has been discontinued since version 1.5)
+|===
 
-|`baseImage` +
-string
-|
+[#_camel_apache_org_v1_HealthCheckResponse]
+=== HealthCheckResponse
 
+*Appears on:*
 
-a base image that can be used as base layer for all images.
-It can be useful if you want to provide some custom base image with further utility softwares
+* <<#_camel_apache_org_v1_HealthCheck, HealthCheck>>
+* <<#_camel_apache_org_v1_PodCondition, PodCondition>>
 
-|`registry` +
-*xref:#_camel_apache_org_v1_RegistrySpec[RegistrySpec]*
-|
 
 
-the image registry used to push/pull Integration images
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-|`buildCatalogToolTimeout` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
+|`name` +
+string
 |
 
 
-the timeout (in seconds) to use when creating the build tools container image
-
-|`timeout` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
-|
-
 
-how much time to wait before time out the build process
 
-|`maven` +
-*xref:#_camel_apache_org_v1_MavenSpec[MavenSpec]*
+|`status` +
+*xref:#_camel_apache_org_v1_HealthCheckStatus[HealthCheckStatus]*
 |
 
 
-Maven configuration used to build the Camel/Camel-Quarkus applications
-
-|`PublishStrategyOptions` +
-map[string]string
-|
-
 
-Generic options that can used by each publish strategy
 
-|`maxRunningBuilds` +
-int32
+|`data` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
 |
 
 
-the maximum amount of parallel running builds started by this operator instance
+
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationPlatformCluster]
-=== IntegrationPlatformCluster(`string` alias)
+[#_camel_apache_org_v1_HealthCheckStatus]
+=== HealthCheckStatus(`string` alias)
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
+* <<#_camel_apache_org_v1_HealthCheck, HealthCheck>>
+* <<#_camel_apache_org_v1_HealthCheckResponse, HealthCheckResponse>>
 
-IntegrationPlatformCluster is the kind of orchestration cluster the platform is installed into
 
 
-[#_camel_apache_org_v1_IntegrationPlatformCondition]
-=== IntegrationPlatformCondition
+
+[#_camel_apache_org_v1_IntegrationCondition]
+=== IntegrationCondition
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformStatus, IntegrationPlatformStatus>>
+* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
 
-IntegrationPlatformCondition describes the state of a resource at a certain point.
+IntegrationCondition describes the state of a resource at a certain point.
 
 [cols="2,2a",options="header"]
 |===
@@ -1947,7 +2211,7 @@ IntegrationPlatformCondition describes the state of a resource at a certain poin
 |Description
 
 |`type` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformConditionType[IntegrationPlatformConditionType]*
+*xref:#_camel_apache_org_v1_IntegrationConditionType[IntegrationConditionType]*
 |
 
 
@@ -1974,6 +2238,13 @@ The last time this condition was updated.
 
 Last time the condition transitioned from one status to another.
 
+|`firstTruthyTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+First time the condition status transitioned to True.
+
 |`reason` +
 string
 |
@@ -1988,441 +2259,1493 @@ string
 
 A human-readable message indicating details about the transition.
 
+|`pods` +
+*xref:#_camel_apache_org_v1_PodCondition[[\]PodCondition]*
+|
+
+
+Pods collect health and conditions information from the owned PODs
+
 
 |===
 
-[#_camel_apache_org_v1_IntegrationPlatformConditionType]
-=== IntegrationPlatformConditionType(`string` alias)
+[#_camel_apache_org_v1_IntegrationConditionType]
+=== IntegrationConditionType(`string` alias)
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformCondition, IntegrationPlatformCondition>>
+* <<#_camel_apache_org_v1_IntegrationCondition, IntegrationCondition>>
 
-IntegrationPlatformConditionType defines the type of condition
+IntegrationConditionType --
 
 
-[#_camel_apache_org_v1_IntegrationPlatformKameletRepositorySpec]
-=== IntegrationPlatformKameletRepositorySpec
+[#_camel_apache_org_v1_IntegrationKitCondition]
+=== IntegrationKitCondition
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformKameletSpec, IntegrationPlatformKameletSpec>>
+* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
 
-IntegrationPlatformKameletRepositorySpec defines the location of the Kamelet catalog to use
+IntegrationKitCondition describes the state of a resource at a certain point.
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`uri` +
+|`type` +
+*xref:#_camel_apache_org_v1_IntegrationKitConditionType[IntegrationKitConditionType]*
+|
+
+
+Type of integration condition.
+
+|`status` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
+|
+
+
+Status of the condition, one of True, False, Unknown.
+
+|`lastUpdateTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+The last time this condition was updated.
+
+|`lastTransitionTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+Last time the condition transitioned from one status to another.
+
+|`reason` +
 string
 |
 
 
-the remote repository in the format github:ORG/REPO/PATH_TO_KAMELETS_FOLDER
+The reason for the condition's last transition.
+
+|`message` +
+string
+|
+
+
+A human-readable message indicating details about the transition.
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationPlatformKameletSpec]
-=== IntegrationPlatformKameletSpec
+[#_camel_apache_org_v1_IntegrationKitConditionType]
+=== IntegrationKitConditionType(`string` alias)
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
+* <<#_camel_apache_org_v1_IntegrationKitCondition, IntegrationKitCondition>>
+
+IntegrationKitConditionType --
+
+
+[#_camel_apache_org_v1_IntegrationKitPhase]
+=== IntegrationKitPhase(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
+
+IntegrationKitPhase --
 
-IntegrationPlatformKameletSpec define the behavior for all the Kamelets controller by the IntegrationPlatform
+
+[#_camel_apache_org_v1_IntegrationKitSpec]
+=== IntegrationKitSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationKit, IntegrationKit>>
+
+IntegrationKitSpec defines a container image and additional configurations required to kick off an `Integration` with certain features
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
+|`image` +
+string
+|
+
+
+the container image as identified in the container registry
+
+|`dependencies` +
+[]string
+|
+
+
+a list of Camel dependecies used by this kit
+
+|`profile` +
+*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
+|
+
+
+the profile which is expected by this kit
+
+|`traits` +
+*xref:#_camel_apache_org_v1_IntegrationKitTraits[IntegrationKitTraits]*
+|
+
+
+traits that the kit will execute
+
+|`configuration` +
+*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+|
+
+
+Deprecated:
+Use camel trait (camel.properties) to manage properties
+Use mount trait (mount.configs) to manage configs
+Use mount trait (mount.resources) to manage resources
+Use mount trait (mount.volumes) to manage volumes
+configuration used by the kit
+
 |`repositories` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformKameletRepositorySpec[[\]IntegrationPlatformKameletRepositorySpec]*
+[]string
 |
 
 
-remote repository used to retrieve Kamelet catalog
+Maven repositories that can be used by the kit
+
+|`sources` +
+*xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
+|
+
+
+the sources to add at build time
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationPlatformPhase]
-=== IntegrationPlatformPhase(`string` alias)
+[#_camel_apache_org_v1_IntegrationKitStatus]
+=== IntegrationKitStatus
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatformStatus, IntegrationPlatformStatus>>
+* <<#_camel_apache_org_v1_IntegrationKit, IntegrationKit>>
 
-IntegrationPlatformPhase is the phase of an IntegrationPlatform
+IntegrationKitStatus defines the observed state of IntegrationKit
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`observedGeneration` +
+int64
+|
 
 
-[#_camel_apache_org_v1_IntegrationPlatformSpec]
-=== IntegrationPlatformSpec
+ObservedGeneration is the most recent generation observed for this IntegrationKit.
+
+|`phase` +
+*xref:#_camel_apache_org_v1_IntegrationKitPhase[IntegrationKitPhase]*
+|
+
+
+phase of the kit
+
+|`baseImage` +
+string
+|
+
+
+base image used by the kit
+
+|`image` +
+string
+|
+
+
+actual image name of the kit
+
+|`digest` +
+string
+|
+
+
+actual image digest of the kit
+
+|`artifacts` +
+*xref:#_camel_apache_org_v1_Artifact[[\]Artifact]*
+|
+
+
+list of artifacts used by the kit
+
+|`failure` +
+*xref:#_camel_apache_org_v1_Failure[Failure]*
+|
+
+
+failure reason (if any)
+
+|`runtimeVersion` +
+string
+|
+
+
+the runtime version for which this kit was configured
+
+|`runtimeProvider` +
+*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
+|
+
+
+the runtime provider for which this kit was configured
+
+|`platform` +
+string
+|
+
+
+the platform for which this kit was configured
+
+|`version` +
+string
+|
+
+
+the Camel K operator version for which this kit was configured
+
+|`conditions` +
+*xref:#_camel_apache_org_v1_IntegrationKitCondition[[\]IntegrationKitCondition]*
+|
+
+
+a list of conditions which happened for the events related the kit
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationKitTraits]
+=== IntegrationKitTraits
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatform, IntegrationPlatform>>
-* <<#_camel_apache_org_v1_IntegrationPlatformStatus, IntegrationPlatformStatus>>
+* <<#_camel_apache_org_v1_IntegrationKitSpec, IntegrationKitSpec>>
 
-IntegrationPlatformSpec defines the desired state of IntegrationPlatform
+IntegrationKitTraits defines traits assigned to an `IntegrationKit`
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`cluster` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformCluster[IntegrationPlatformCluster]*
+|`builder` +
+*xref:#_camel_apache_org_v1_trait_BuilderTrait[BuilderTrait]*
 |
 
 
-what kind of cluster you're running (ie, plain Kubernetes or OpenShift)
+The builder trait is internally used to determine the best strategy to build and configure IntegrationKits.
 
-|`profile` +
-*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
+|`camel` +
+*xref:#_camel_apache_org_v1_trait_CamelTrait[CamelTrait]*
 |
 
 
-the profile you wish to use. It will apply certain traits which are required by the specific profile chosen.
-It usually relates the Cluster with the optional definition of special profiles (ie, Knative)
+The Camel trait sets up Camel configuration.
 
-|`build` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformBuildSpec[IntegrationPlatformBuildSpec]*
+|`quarkus` +
+*xref:#_camel_apache_org_v1_trait_QuarkusTrait[QuarkusTrait]*
 |
 
 
-specify how to build the Integration/IntegrationKits
+The Quarkus trait configures the Quarkus runtime.
+It's enabled by default.
+NOTE: Compiling to a native executable, i.e. when using `package-type=native`, is only supported for kamelets, as well as YAML and XML integrations. It also requires at least 4GiB of memory, so the Pod running the native build, that is either the operator Pod, or the build Pod (depending on the build strategy configured for the platform), must have enough memory available.
+
+|`registry` +
+*xref:#_camel_apache_org_v1_trait_RegistryTrait[RegistryTrait]*
+|
+
+
+The Registry trait sets up Maven to use the Image registry as a Maven repository.
+
+|`addons` +
+*xref:#_camel_apache_org_v1_AddonTrait[map[string\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.AddonTrait]*
+|
+
+
+The collection of addon trait configurations
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationPhase]
+=== IntegrationPhase(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
+
+IntegrationPhase --
+
+
+[#_camel_apache_org_v1_IntegrationPlatformBuildPublishStrategy]
+=== IntegrationPlatformBuildPublishStrategy(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
+
+IntegrationPlatformBuildPublishStrategy defines the strategy used to package and publish an Integration base image
+
+
+[#_camel_apache_org_v1_IntegrationPlatformBuildSpec]
+=== IntegrationPlatformBuildSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
+
+IntegrationPlatformBuildSpec contains platform related build information.
+This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
+You can define the build strategy, the image registry to use and the Maven configuration to adopt.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`buildStrategy` +
+*xref:#_camel_apache_org_v1_BuildStrategy[BuildStrategy]*
+|
+
+
+the strategy to adopt for building an Integration base image
+
+|`publishStrategy` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformBuildPublishStrategy[IntegrationPlatformBuildPublishStrategy]*
+|
+
+
+the strategy to adopt for publishing an Integration base image
+
+|`runtimeVersion` +
+string
+|
+
+
+the Camel K Runtime dependency version
+
+|`runtimeProvider` +
+*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
+|
+
+
+the runtime used. Likely Camel Quarkus (we used to have main runtime which has been discontinued since version 1.5)
+
+|`baseImage` +
+string
+|
+
+
+a base image that can be used as base layer for all images.
+It can be useful if you want to provide some custom base image with further utility softwares
+
+|`registry` +
+*xref:#_camel_apache_org_v1_RegistrySpec[RegistrySpec]*
+|
+
+
+the image registry used to push/pull Integration images
+
+|`buildCatalogToolTimeout` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
+|
+
+
+the timeout (in seconds) to use when creating the build tools container image
+
+|`timeout` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
+|
+
+
+how much time to wait before time out the build process
+
+|`maven` +
+*xref:#_camel_apache_org_v1_MavenSpec[MavenSpec]*
+|
+
+
+Maven configuration used to build the Camel/Camel-Quarkus applications
+
+|`PublishStrategyOptions` +
+map[string]string
+|
+
+
+Generic options that can used by each publish strategy
+
+|`maxRunningBuilds` +
+int32
+|
+
+
+the maximum amount of parallel running builds started by this operator instance
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationPlatformCluster]
+=== IntegrationPlatformCluster(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
+
+IntegrationPlatformCluster is the kind of orchestration cluster the platform is installed into
+
+
+[#_camel_apache_org_v1_IntegrationPlatformCondition]
+=== IntegrationPlatformCondition
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformStatus, IntegrationPlatformStatus>>
+
+IntegrationPlatformCondition describes the state of a resource at a certain point.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`type` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformConditionType[IntegrationPlatformConditionType]*
+|
+
+
+Type of integration condition.
+
+|`status` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
+|
+
+
+Status of the condition, one of True, False, Unknown.
+
+|`lastUpdateTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+The last time this condition was updated.
+
+|`lastTransitionTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+Last time the condition transitioned from one status to another.
+
+|`reason` +
+string
+|
+
+
+The reason for the condition's last transition.
+
+|`message` +
+string
+|
+
+
+A human-readable message indicating details about the transition.
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationPlatformConditionType]
+=== IntegrationPlatformConditionType(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformCondition, IntegrationPlatformCondition>>
+
+IntegrationPlatformConditionType defines the type of condition
+
+
+[#_camel_apache_org_v1_IntegrationPlatformKameletRepositorySpec]
+=== IntegrationPlatformKameletRepositorySpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformKameletSpec, IntegrationPlatformKameletSpec>>
+
+IntegrationPlatformKameletRepositorySpec defines the location of the Kamelet catalog to use
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`uri` +
+string
+|
+
+
+the remote repository in the format github:ORG/REPO/PATH_TO_KAMELETS_FOLDER
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationPlatformKameletSpec]
+=== IntegrationPlatformKameletSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
+
+IntegrationPlatformKameletSpec define the behavior for all the Kamelets controller by the IntegrationPlatform
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`repositories` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformKameletRepositorySpec[[\]IntegrationPlatformKameletRepositorySpec]*
+|
+
+
+remote repository used to retrieve Kamelet catalog
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationPlatformPhase]
+=== IntegrationPlatformPhase(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatformStatus, IntegrationPlatformStatus>>
+
+IntegrationPlatformPhase is the phase of an IntegrationPlatform
+
+
+[#_camel_apache_org_v1_IntegrationPlatformSpec]
+=== IntegrationPlatformSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatform, IntegrationPlatform>>
+* <<#_camel_apache_org_v1_IntegrationPlatformStatus, IntegrationPlatformStatus>>
+
+IntegrationPlatformSpec defines the desired state of IntegrationPlatform
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`cluster` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformCluster[IntegrationPlatformCluster]*
+|
+
+
+what kind of cluster you're running (ie, plain Kubernetes or OpenShift)
+
+|`profile` +
+*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
+|
+
+
+the profile you wish to use. It will apply certain traits which are required by the specific profile chosen.
+It usually relates the Cluster with the optional definition of special profiles (ie, Knative)
+
+|`build` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformBuildSpec[IntegrationPlatformBuildSpec]*
+|
+
+
+specify how to build the Integration/IntegrationKits
+
+|`traits` +
+*xref:#_camel_apache_org_v1_Traits[Traits]*
+|
+
+
+list of traits to be executed for all the Integration/IntegrationKits built from this IntegrationPlatform
+
+|`configuration` +
+*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+|
+
+
+Deprecated:
+Use camel trait (camel.properties) to manage properties
+Use mount trait (mount.configs) to manage configs
+Use mount trait (mount.resources) to manage resources
+Use mount trait (mount.volumes) to manage volumes
+list of configuration properties to be attached to all the Integration/IntegrationKits built from this IntegrationPlatform
+
+|`kamelet` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformKameletSpec[IntegrationPlatformKameletSpec]*
+|
+
+
+configuration to be executed to all Kamelets controlled by this IntegrationPlatform
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationPlatformStatus]
+=== IntegrationPlatformStatus
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_IntegrationPlatform, IntegrationPlatform>>
+
+IntegrationPlatformStatus defines the observed state of IntegrationPlatform
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`IntegrationPlatformSpec` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformSpec[IntegrationPlatformSpec]*
+|(Members of `IntegrationPlatformSpec` are embedded into this type.)
+
+
+
+
+|`observedGeneration` +
+int64
+|
+
+
+ObservedGeneration is the most recent generation observed for this IntegrationPlatform.
+
+|`phase` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformPhase[IntegrationPlatformPhase]*
+|
+
+
+defines in what phase the IntegrationPlatform is found
+
+|`conditions` +
+*xref:#_camel_apache_org_v1_IntegrationPlatformCondition[[\]IntegrationPlatformCondition]*
+|
+
+
+which are the conditions met (particularly useful when in ERROR phase)
+
+|`version` +
+string
+|
+
+
+the Camel K operator version controlling this IntegrationPlatform
+
+|`info` +
+map[string]string
+|
+
+
+generic information related to the build of Camel K operator software
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationSpec]
+=== IntegrationSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Integration, Integration>>
+* <<#_camel_apache_org_v1_BindingSpec, BindingSpec>>
+
+IntegrationSpec specifies the configuration of an Integration.
+The Integration will be watched by the operator which will be in charge to run the related application, according to the configuration specified.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`replicas` +
+int32
+|
+
+
+the number of `Pods` needed for the running Integration
+
+|`sources` +
+*xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
+|
+
+
+the sources which contain the Camel routes to run
+
+|`flows` +
+*xref:#_camel_apache_org_v1_Flow[[\]Flow]*
+|
+
+
+a source in YAML DSL language which contain the routes to run
+
+|`integrationKit` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectreference-v1-core[Kubernetes core/v1.ObjectReference]*
+|
+
+
+the reference of the `IntegrationKit` which is used for this Integration
+
+|`dependencies` +
+[]string
+|
+
+
+the list of Camel or Maven dependencies required by the Integration
+
+|`profile` +
+*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
+|
+
+
+the profile needed to run this Integration
+
+|`traits` +
+*xref:#_camel_apache_org_v1_Traits[Traits]*
+|
+
+
+the traits needed to run this Integration
+
+|`template` +
+*xref:#_camel_apache_org_v1_PodSpecTemplate[PodSpecTemplate]*
+|
+
+
+Pod template customization
+
+|`configuration` +
+*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+|
+
+
+Deprecated:
+Use camel trait (camel.properties) to manage properties
+Use mount trait (mount.configs) to manage configs
+Use mount trait (mount.resources) to manage resources
+Use mount trait (mount.volumes) to manage volumes
+
+|`repositories` +
+[]string
+|
+
+
+additional Maven repositories to be used
+
+|`serviceAccountName` +
+string
+|
+
+
+custom SA to use for the Integration
+
+
+|===
+
+[#_camel_apache_org_v1_IntegrationStatus]
+=== IntegrationStatus
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Integration, Integration>>
+
+IntegrationStatus defines the observed state of Integration
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`observedGeneration` +
+int64
+|
+
+
+ObservedGeneration is the most recent generation observed for this Integration.
+
+|`phase` +
+*xref:#_camel_apache_org_v1_IntegrationPhase[IntegrationPhase]*
+|
+
+
+the actual phase
+
+|`digest` +
+string
+|
+
+
+the digest calculated for this Integration
+
+|`image` +
+string
+|
+
+
+the container image used
+
+|`dependencies` +
+[]string
+|
+
+
+a list of dependencies needed by the application
+
+|`profile` +
+*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
+|
+
+
+the profile needed to run this Integration
+
+|`integrationKit` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectreference-v1-core[Kubernetes core/v1.ObjectReference]*
+|
+
+
+the reference of the `IntegrationKit` which is used for this Integration
+
+|`platform` +
+string
+|
+
+
+The IntegrationPlatform watching this Integration
+
+|`generatedSources` +
+*xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
+|
+
+
+a list of sources generated for this Integration
+
+|`runtimeVersion` +
+string
+|
+
+
+the runtime version targeted for this Integration
+
+|`runtimeProvider` +
+*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
+|
+
+
+the runtime provider targeted for this Integration
+
+|`configuration` +
+*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+|
+
+
+Deprecated:
+a list of configuration specification
+
+|`conditions` +
+*xref:#_camel_apache_org_v1_IntegrationCondition[[\]IntegrationCondition]*
+|
+
+
+a list of events happened for the Integration
+
+|`version` +
+string
+|
+
+
+the operator version
+
+|`replicas` +
+int32
+|
+
+
+the number of replicas
+
+|`selector` +
+string
+|
+
+
+label selector
+
+|`capabilities` +
+[]string
+|
+
+
+features offered by the Integration
+
+|`lastInitTimestamp` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+the timestamp representing the last time when this integration was initialized.
+
+
+|===
+
+[#_camel_apache_org_v1_JSON]
+=== JSON
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_JSONSchemaProp, JSONSchemaProp>>
+* <<#_camel_apache_org_v1_JSONSchemaProps, JSONSchemaProps>>
+
+JSON represents any valid JSON value.
+These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
+
+
+
+
+
+|===
+
+[#_camel_apache_org_v1_JSONSchemaProp]
+=== JSONSchemaProp
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_JSONSchemaProps, JSONSchemaProps>>
+
+
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`id` +
+string
+|
+
+
+
+
+|`deprecated` +
+bool
+|
+
+
+
+
+|`description` +
+string
+|
+
+
+
+
+|`type` +
+string
+|
+
+
+
+
+|`format` +
+string
+|
+
+
+format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
+
+- bsonobjectid: a bson object ID, i.e. a 24 characters hex string
+- uri: an URI as parsed by Golang net/url.ParseRequestURI
+- email: an email address as parsed by Golang net/mail.ParseAddress
+- hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
+- ipv4: an IPv4 IP as parsed by Golang net.ParseIP
+- ipv6: an IPv6 IP as parsed by Golang net.ParseIP
+- cidr: a CIDR as parsed by Golang net.ParseCIDR
+- mac: a MAC address as parsed by Golang net.ParseMAC
+- uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]\{8}-?[0-9a-f]\{4}-?[0-9a-f]\{4}-?[0-9a-f]\{4}-?[0-9a-f]\{12}$
+- uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]\{8}-?[0-9a-f]\{4}-?3[0-9a-f]\{3}-?[0-9a-f]\{4}-?[0-9a-f]\{12}$
+- uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]\{8}-?[0-9a-f]\{4}-?4[0-9a-f]\{3}-?[89ab][0-9a-f]\{3}-?[0-9a-f]\{12}$
+- uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]\{8}-?[0-9a-f]\{4}-?5[0-9a-f]\{3}-?[89ab][0-9a-f]\{3}-?[0-9a-f]\{12}$
+- isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
+- isbn10: an ISBN10 number string like "0321751043"
+- isbn13: an ISBN13 number string like "978-0321751041"
+- creditcard: a credit card number defined by the regex ^(?:4[0-9]\{12}(?:[0-9]\{3})?{vbar}5[1-5][0-9]\{14}{vbar}6(?:011{vbar}5[0-9][0-9])[0-9]\{12}{vbar}3[47][0-9]\{13}{vbar}3(?:0[0-5]{vbar}[68][0-9])[0-9]\{11}{vbar}(?:2131{vbar}1800{vbar}35\\d\{3})\\d\{11})$ with any non digit characters mixed in
+- ssn: a U.S. social security number following the regex ^\\d\{3}[- ]?\\d\{2}[- ]?\\d\{4}$
+- hexcolor: an hexadecimal color code like "\#FFFFFF" following the regex ^#?([0-9a-fA-F]\{3}{vbar}[0-9a-fA-F]\{6})$
+- rgbcolor: an RGB color code like rgb like "rgb(255,255,255)"
+- byte: base64 encoded binary data
+- password: any kind of string
+- date: a date string like "2006-01-02" as defined by full-date in RFC3339
+- duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
+- datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
+
+|`title` +
+string
+|
+
+
+
+
+|`default` +
+*xref:#_camel_apache_org_v1_JSON[JSON]*
+|
+
+
+default is a default value for undefined object fields.
+
+|`maximum` +
+encoding/json.Number
+|
+
+
+
+
+|`exclusiveMaximum` +
+bool
+|
+
+
+
+
+|`minimum` +
+encoding/json.Number
+|
+
+
+
+
+|`exclusiveMinimum` +
+bool
+|
+
+
+
+
+|`maxLength` +
+int64
+|
+
+
+
+
+|`minLength` +
+int64
+|
+
+
+
+
+|`pattern` +
+string
+|
+
+
+
+
+|`maxItems` +
+int64
+|
+
+
+
+
+|`minItems` +
+int64
+|
+
+
+
+
+|`uniqueItems` +
+bool
+|
+
+
+
+
+|`maxProperties` +
+int64
+|
+
+
+
+
+|`minProperties` +
+int64
+|
+
+
+
+
+|`multipleOf` +
+encoding/json.Number
+|
+
+
+
+
+|`enum` +
+*xref:#_camel_apache_org_v1_JSON[[\]JSON]*
+|
+
+
+
 
-|`traits` +
-*xref:#_camel_apache_org_v1_Traits[Traits]*
+|`example` +
+*xref:#_camel_apache_org_v1_JSON[JSON]*
 |
 
 
-list of traits to be executed for all the Integration/IntegrationKits built from this IntegrationPlatform
 
-|`configuration` +
-*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+
+|`nullable` +
+bool
 |
 
 
-Deprecated:
-Use camel trait (camel.properties) to manage properties
-Use mount trait (mount.configs) to manage configs
-Use mount trait (mount.resources) to manage resources
-Use mount trait (mount.volumes) to manage volumes
-list of configuration properties to be attached to all the Integration/IntegrationKits built from this IntegrationPlatform
 
-|`kamelet` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformKameletSpec[IntegrationPlatformKameletSpec]*
+
+|`x-descriptors` +
+[]string
 |
 
 
-configuration to be executed to all Kamelets controlled by this IntegrationPlatform
+XDescriptors is a list of extended properties that trigger a custom behavior in external systems
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationPlatformStatus]
-=== IntegrationPlatformStatus
+[#_camel_apache_org_v1_JSONSchemaProps]
+=== JSONSchemaProps
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_IntegrationPlatform, IntegrationPlatform>>
+* <<#_camel_apache_org_v1_DataTypeSpec, DataTypeSpec>>
+* <<#_camel_apache_org_v1_EventTypeSpec, EventTypeSpec>>
+* <<#_camel_apache_org_v1_KameletSpec, KameletSpec>>
 
-IntegrationPlatformStatus defines the observed state of IntegrationPlatform
+JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
 
 [cols="2,2a",options="header"]
 |===
 |Field
 |Description
 
-|`IntegrationPlatformSpec` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformSpec[IntegrationPlatformSpec]*
-|(Members of `IntegrationPlatformSpec` are embedded into this type.)
+|`id` +
+string
+|
 
 
 
 
-|`observedGeneration` +
-int64
+|`description` +
+string
 |
 
 
-ObservedGeneration is the most recent generation observed for this IntegrationPlatform.
 
-|`phase` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformPhase[IntegrationPlatformPhase]*
+
+|`title` +
+string
 |
 
 
-defines in what phase the IntegrationPlatform is found
 
-|`conditions` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformCondition[[\]IntegrationPlatformCondition]*
+
+|`properties` +
+*xref:#_camel_apache_org_v1_JSONSchemaProp[map[string\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.JSONSchemaProp]*
 |
 
 
-which are the conditions met (particularly useful when in ERROR phase)
 
-|`version` +
-string
+
+|`required` +
+[]string
 |
 
 
-the Camel K operator version controlling this IntegrationPlatform
 
-|`info` +
-map[string]string
+
+|`example` +
+*xref:#_camel_apache_org_v1_JSON[JSON]*
 |
 
 
-generic information related to the build of Camel K operator software
 
 
-|===
+|`externalDocs` +
+*xref:#_camel_apache_org_v1_ExternalDocumentation[ExternalDocumentation]*
+|
 
-[#_camel_apache_org_v1_IntegrationSpec]
-=== IntegrationSpec
 
-*Appears on:*
 
-* <<#_camel_apache_org_v1_Integration, Integration>>
 
-IntegrationSpec specifies the configuration of an Integration.
-The Integration will be watched by the operator which will be in charge to run the related application, according to the configuration specified.
+|`$schema` +
+*xref:#_camel_apache_org_v1_JSONSchemaURL[JSONSchemaURL]*
+|
 
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
 
-|`replicas` +
-int32
+
+
+|`type` +
+string
 |
 
 
-the number of `Pods` needed for the running Integration
 
-|`sources` +
-*xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
-|
 
 
-the sources which contain the Camel routes to run
+|===
 
-|`flows` +
-*xref:#_camel_apache_org_v1_Flow[[\]Flow]*
-|
+[#_camel_apache_org_v1_JSONSchemaURL]
+=== JSONSchemaURL(`string` alias)
 
+*Appears on:*
 
-a source in YAML DSL language which contain the routes to run
+* <<#_camel_apache_org_v1_JSONSchemaProps, JSONSchemaProps>>
 
-|`integrationKit` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectreference-v1-core[Kubernetes core/v1.ObjectReference]*
-|
+JSONSchemaURL represents a schema url.
 
 
-the reference of the `IntegrationKit` which is used for this Integration
+[#_camel_apache_org_v1_KameletCondition]
+=== KameletCondition
 
-|`dependencies` +
-[]string
-|
+*Appears on:*
 
+* <<#_camel_apache_org_v1_KameletStatus, KameletStatus>>
 
-the list of Camel or Maven dependencies required by the Integration
+KameletCondition describes the state of a resource at a certain point.
 
-|`profile` +
-*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`type` +
+*xref:#_camel_apache_org_v1_KameletConditionType[KameletConditionType]*
 |
 
 
-the profile needed to run this Integration
+Type of kamelet condition.
 
-|`traits` +
-*xref:#_camel_apache_org_v1_Traits[Traits]*
+|`status` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
 |
 
 
-the traits needed to run this Integration
+Status of the condition, one of True, False, Unknown.
 
-|`template` +
-*xref:#_camel_apache_org_v1_PodSpecTemplate[PodSpecTemplate]*
+|`lastUpdateTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
 |
 
 
-Pod template customization
+The last time this condition was updated.
 
-|`configuration` +
-*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+|`lastTransitionTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
 |
 
 
-Deprecated:
-Use camel trait (camel.properties) to manage properties
-Use mount trait (mount.configs) to manage configs
-Use mount trait (mount.resources) to manage resources
-Use mount trait (mount.volumes) to manage volumes
+Last time the condition transitioned from one status to another.
 
-|`repositories` +
-[]string
+|`reason` +
+string
 |
 
 
-additional Maven repositories to be used
+The reason for the condition's last transition.
 
-|`serviceAccountName` +
+|`message` +
 string
 |
 
 
-custom SA to use for the Integration
+A human-readable message indicating details about the transition.
 
 
 |===
 
-[#_camel_apache_org_v1_IntegrationStatus]
-=== IntegrationStatus
+[#_camel_apache_org_v1_KameletConditionType]
+=== KameletConditionType(`string` alias)
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_Integration, Integration>>
+* <<#_camel_apache_org_v1_KameletCondition, KameletCondition>>
 
-IntegrationStatus defines the observed state of Integration
+KameletConditionType --
 
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
 
-|`observedGeneration` +
-int64
-|
+[#_camel_apache_org_v1_KameletPhase]
+=== KameletPhase(`string` alias)
+
+*Appears on:*
 
+* <<#_camel_apache_org_v1_KameletStatus, KameletStatus>>
 
-ObservedGeneration is the most recent generation observed for this Integration.
+KameletPhase --
 
-|`phase` +
-*xref:#_camel_apache_org_v1_IntegrationPhase[IntegrationPhase]*
-|
 
+[#_camel_apache_org_v1_KameletProperty]
+=== KameletProperty
 
-the actual phase
+*Appears on:*
 
-|`digest` +
-string
-|
+* <<#_camel_apache_org_v1_KameletStatus, KameletStatus>>
 
+KameletProperty specify the behavior of a property in a Kamelet
 
-the digest calculated for this Integration
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
 
-|`image` +
+|`name` +
 string
 |
 
 
-the container image used
+the name of the property
 
-|`dependencies` +
-[]string
+|`default` +
+string
 |
 
 
-a list of dependencies needed by the application
+the default value of the property (if any)
 
-|`profile` +
-*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
-|
 
+|===
 
-the profile needed to run this Integration
+[#_camel_apache_org_v1_KameletSpec]
+=== KameletSpec
 
-|`integrationKit` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectreference-v1-core[Kubernetes core/v1.ObjectReference]*
-|
+*Appears on:*
 
+* <<#_camel_apache_org_v1_Kamelet, Kamelet>>
 
-the reference of the `IntegrationKit` which is used for this Integration
+KameletSpec specifies the configuration required to execute a Kamelet
 
-|`platform` +
-string
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`definition` +
+*xref:#_camel_apache_org_v1_JSONSchemaProps[JSONSchemaProps]*
 |
 
 
-The IntegrationPlatform watching this Integration
+defines the formal configuration of the Kamelet
 
-|`generatedSources` +
+|`sources` +
 *xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
 |
 
 
-a list of sources generated for this Integration
+sources in any Camel DSL supported
 
-|`runtimeVersion` +
-string
+|`template` +
+*xref:#_camel_apache_org_v1_Template[Template]*
 |
 
 
-the runtime version targeted for this Integration
+the main source in YAML DSL
 
-|`runtimeProvider` +
-*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
+|`types` +
+*xref:#_camel_apache_org_v1_EventTypeSpec[map[github.com/apache/camel-k/v2/pkg/apis/camel/v1.TypeSlot\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.EventTypeSpec]*
 |
 
 
-the runtime provider targeted for this Integration
+data specification types for the events consumed/produced by the Kamelet
+Deprecated: In favor of using DataTypes
 
-|`configuration` +
-*xref:#_camel_apache_org_v1_ConfigurationSpec[[\]ConfigurationSpec]*
+|`dataTypes` +
+*xref:#_camel_apache_org_v1_DataTypesSpec[map[github.com/apache/camel-k/v2/pkg/apis/camel/v1.TypeSlot\]github.com/apache/camel-k/v2/pkg/apis/camel/v1.DataTypesSpec]*
 |
 
 
-Deprecated:
-a list of configuration specification
+data specification types for the events consumed/produced by the Kamelet
 
-|`conditions` +
-*xref:#_camel_apache_org_v1_IntegrationCondition[[\]IntegrationCondition]*
+|`dependencies` +
+[]string
 |
 
 
-a list of events happened for the Integration
+Camel dependencies needed by the Kamelet
 
-|`version` +
-string
-|
 
+|===
 
-the operator version
+[#_camel_apache_org_v1_KameletStatus]
+=== KameletStatus
 
-|`replicas` +
-int32
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Kamelet, Kamelet>>
+
+KameletStatus defines the observed state of Kamelet
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`observedGeneration` +
+int64
 |
 
 
-the number of replicas
+ObservedGeneration is the most recent generation observed for this Kamelet.
 
-|`selector` +
-string
+|`phase` +
+*xref:#_camel_apache_org_v1_KameletPhase[KameletPhase]*
 |
 
 
-label selector
+Phase --
 
-|`capabilities` +
-[]string
+|`conditions` +
+*xref:#_camel_apache_org_v1_KameletCondition[[\]KameletCondition]*
 |
 
 
-features offered by the Integration
+Conditions --
 
-|`lastInitTimestamp` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|`properties` +
+*xref:#_camel_apache_org_v1_KameletProperty[[\]KameletProperty]*
 |
 
 
-the timestamp representing the last time when this integration was initialized.
+Properties --
 
 
 |===
@@ -2688,6 +4011,7 @@ See https://maven.apache.org/ref/3.8.4/maven-embedder/cli.html.
 
 *Appears on:*
 
+* <<#_camel_apache_org_v1_BindingCondition, BindingCondition>>
 * <<#_camel_apache_org_v1_IntegrationCondition, IntegrationCondition>>
 
 
@@ -2903,8 +4227,14 @@ where to publish the final image
 *Appears on:*
 
 * <<#_camel_apache_org_v1_AddonTrait, AddonTrait>>
+* <<#_camel_apache_org_v1_BeanProperties, BeanProperties>>
+* <<#_camel_apache_org_v1_EndpointProperties, EndpointProperties>>
+* <<#_camel_apache_org_v1_ErrorHandlerParameters, ErrorHandlerParameters>>
+* <<#_camel_apache_org_v1_ErrorHandlerSpec, ErrorHandlerSpec>>
 * <<#_camel_apache_org_v1_Flow, Flow>>
 * <<#_camel_apache_org_v1_HealthCheckResponse, HealthCheckResponse>>
+* <<#_camel_apache_org_v1_JSON, JSON>>
+* <<#_camel_apache_org_v1_Template, Template>>
 * <<#_camel_apache_org_v1_TraitConfiguration, TraitConfiguration>>
 
 RawMessage is a raw encoded JSON value.
@@ -3281,6 +4611,7 @@ string
 * <<#_camel_apache_org_v1_IntegrationKitSpec, IntegrationKitSpec>>
 * <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>>
 * <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
+* <<#_camel_apache_org_v1_KameletSpec, KameletSpec>>
 
 SourceSpec defines the configuration for one or more routes to be executed in a certain Camel DSL language
 
@@ -3454,6 +4785,30 @@ a SpectrumTask, for Spectrum strategy
 a S2iTask, for S2I strategy
 
 
+|===
+
+[#_camel_apache_org_v1_Template]
+=== Template
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletSpec, KameletSpec>>
+
+Template is an unstructured object representing a Kamelet template in YAML/JSON DSL
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`RawMessage` +
+*xref:#_camel_apache_org_v1_RawMessage[RawMessage]*
+|(Members of `RawMessage` are embedded into this type.)
+
+
+an unstructured raw message
+
+
 |===
 
 [#_camel_apache_org_v1_TraitConfiguration]
@@ -3817,6 +5172,12 @@ Deprecated: for backward compatibility.
 
 |===
 
+[#_camel_apache_org_v1_TypeSlot]
+=== TypeSlot(`string` alias)
+
+TypeSlot represent a kind of data (ie, input, output, ...)
+
+
 [#_camel_apache_org_v1_ValueSource]
 === ValueSource
 
diff --git a/docs/modules/ROOT/partials/apis/crds-html.adoc b/docs/modules/ROOT/partials/apis/crds-html.adoc
index d4d44ebe2..8ae089c6d 100644
--- a/docs/modules/ROOT/partials/apis/crds-html.adoc
+++ b/docs/modules/ROOT/partials/apis/crds-html.adoc
@@ -3083,7 +3083,7 @@ map[string]string
 <p>
 (<em>Appears on:</em>
 <a href="#camel.apache.org/v1.Integration">Integration</a>,
-<a href="#camel.apache.org/v1alpha1.BindingSpec">BindingSpec</a>)
+<a href="#camel.apache.org/v1.BindingSpec">BindingSpec</a>)
 </p>
 <div>
 <p>IntegrationSpec defines the desired state of Integration</p>
@@ -4576,7 +4576,7 @@ string
 <a href="#camel.apache.org/v1.BuilderTask">BuilderTask</a>,
 <a href="#camel.apache.org/v1.IntegrationSpec">IntegrationSpec</a>,
 <a href="#camel.apache.org/v1.IntegrationStatus">IntegrationStatus</a>,
-<a href="#camel.apache.org/v1alpha1.KameletSpec">KameletSpec</a>)
+<a href="#camel.apache.org/v1.KameletSpec">KameletSpec</a>)
 </p>
 <div>
 <p>SourceSpec &ndash;</p>
@@ -4806,7 +4806,7 @@ S2iTask
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.KameletSpec">KameletSpec</a>)
+<a href="#camel.apache.org/v1.KameletSpec">KameletSpec</a>)
 </p>
 <div>
 <p>Template is an unstructured object representing a Kamelet template in YAML/JSON DSL</p>
@@ -4966,11 +4966,11 @@ Kubernetes core/v1.SecretKeySelector
 </div>
 Resource Types:
 <ul><li>
-<a href="#camel.apache.org/v1alpha1.Kamelet">Kamelet</a>
+<a href="#camel.apache.org/v1.Kamelet">Kamelet</a>
 </li><li>
-<a href="#camel.apache.org/v1alpha1.Binding">Binding</a>
+<a href="#camel.apache.org/v1.Binding">Binding</a>
 </li></ul>
-<h3 id="camel.apache.org/v1alpha1.Kamelet">Kamelet
+<h3 id="camel.apache.org/v1.Kamelet">Kamelet
 </h3>
 <div>
 <p>Kamelet is the Schema for the kamelets API</p>
@@ -5018,7 +5018,7 @@ Refer to the Kubernetes API documentation for the fields of the
 <td>
 <code>spec</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.KameletSpec">
+<a href="#camel.apache.org/v1.KameletSpec">
 KameletSpec
 </a>
 </em>
@@ -5104,7 +5104,7 @@ map[github.com/apache/camel-k/pkg/apis/camel/v1alpha1.EventSlot]github.com/apach
 <td>
 <code>status</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.KameletStatus">
+<a href="#camel.apache.org/v1.KameletStatus">
 KameletStatus
 </a>
 </em>
@@ -5114,7 +5114,7 @@ KameletStatus
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.Binding">Binding
+<h3 id="camel.apache.org/v1.Binding">Binding
 </h3>
 <div>
 <p>Binding is the Schema for the kamelets binding API</p>
@@ -5162,7 +5162,7 @@ Refer to the Kubernetes API documentation for the fields of the
 <td>
 <code>spec</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.BindingSpec">
+<a href="#camel.apache.org/v1.BindingSpec">
 BindingSpec
 </a>
 </em>
@@ -5254,7 +5254,7 @@ int32
 <td>
 <code>status</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.BindingStatus">
+<a href="#camel.apache.org/v1.BindingStatus">
 BindingStatus
 </a>
 </em>
@@ -5268,7 +5268,7 @@ BindingStatus
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.KameletSpec">KameletSpec</a>)
+<a href="#camel.apache.org/v1.KameletSpec">KameletSpec</a>)
 </p>
 <div>
 <p>AuthorizationSpec is TODO (oauth information)</p>
@@ -5305,7 +5305,7 @@ RawMessage
 <p>
 (<em>Appears on:</em>
 <a href="#camel.apache.org/v1alpha1.ErrorHandlerSink">ErrorHandlerSink</a>,
-<a href="#camel.apache.org/v1alpha1.BindingSpec">BindingSpec</a>)
+<a href="#camel.apache.org/v1.BindingSpec">BindingSpec</a>)
 </p>
 <div>
 <p>Endpoint represents a source/sink external entity</p>
@@ -5549,7 +5549,7 @@ Endpoint
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.BindingSpec">BindingSpec</a>)
+<a href="#camel.apache.org/v1.BindingSpec">BindingSpec</a>)
 </p>
 <div>
 <p>ErrorHandlerSpec represents an unstructured object for an error handler</p>
@@ -5590,7 +5590,7 @@ RawMessage
 <p>
 (<em>Appears on:</em>
 <a href="#camel.apache.org/v1alpha1.Endpoint">Endpoint</a>,
-<a href="#camel.apache.org/v1alpha1.KameletSpec">KameletSpec</a>)
+<a href="#camel.apache.org/v1.KameletSpec">KameletSpec</a>)
 </p>
 <div>
 </div>
@@ -5989,7 +5989,7 @@ bool
 <p>
 (<em>Appears on:</em>
 <a href="#camel.apache.org/v1alpha1.EventTypeSpec">EventTypeSpec</a>,
-<a href="#camel.apache.org/v1alpha1.KameletSpec">KameletSpec</a>)
+<a href="#camel.apache.org/v1.KameletSpec">KameletSpec</a>)
 </p>
 <div>
 <p>JSONSchemaProps is a JSON-Schema following Specification Draft 4 (<a href="http://json-schema.org/">http://json-schema.org/</a>).</p>
@@ -6111,11 +6111,11 @@ string
 <div>
 <p>JSONSchemaURL represents a schema url.</p>
 </div>
-<h3 id="camel.apache.org/v1alpha1.BindingCondition">BindingCondition
+<h3 id="camel.apache.org/v1.BindingCondition">BindingCondition
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.BindingStatus">BindingStatus</a>)
+<a href="#camel.apache.org/v1.BindingStatus">BindingStatus</a>)
 </p>
 <div>
 <p>BindingCondition describes the state of a resource at a certain point.</p>
@@ -6132,7 +6132,7 @@ string
 <td>
 <code>type</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.BindingConditionType">
+<a href="#camel.apache.org/v1.BindingConditionType">
 BindingConditionType
 </a>
 </em>
@@ -6204,27 +6204,27 @@ string
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.BindingConditionType">BindingConditionType
+<h3 id="camel.apache.org/v1.BindingConditionType">BindingConditionType
 (<code>string</code> alias)</h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.BindingCondition">BindingCondition</a>)
+<a href="#camel.apache.org/v1.BindingCondition">BindingCondition</a>)
 </p>
 <div>
 </div>
-<h3 id="camel.apache.org/v1alpha1.BindingPhase">BindingPhase
+<h3 id="camel.apache.org/v1.BindingPhase">BindingPhase
 (<code>string</code> alias)</h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.BindingStatus">BindingStatus</a>)
+<a href="#camel.apache.org/v1.BindingStatus">BindingStatus</a>)
 </p>
 <div>
 </div>
-<h3 id="camel.apache.org/v1alpha1.BindingSpec">BindingSpec
+<h3 id="camel.apache.org/v1.BindingSpec">BindingSpec
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.Binding">Binding</a>)
+<a href="#camel.apache.org/v1.Binding">Binding</a>)
 </p>
 <div>
 <p>BindingSpec &ndash;</p>
@@ -6315,11 +6315,11 @@ int32
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.BindingStatus">BindingStatus
+<h3 id="camel.apache.org/v1.BindingStatus">BindingStatus
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.Binding">Binding</a>)
+<a href="#camel.apache.org/v1.Binding">Binding</a>)
 </p>
 <div>
 <p>BindingStatus &ndash;</p>
@@ -6336,7 +6336,7 @@ int32
 <td>
 <code>phase</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.BindingPhase">
+<a href="#camel.apache.org/v1.BindingPhase">
 BindingPhase
 </a>
 </em>
@@ -6349,7 +6349,7 @@ BindingPhase
 <td>
 <code>conditions</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.BindingCondition">
+<a href="#camel.apache.org/v1.BindingCondition">
 []BindingCondition
 </a>
 </em>
@@ -6382,11 +6382,11 @@ string
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.KameletCondition">KameletCondition
+<h3 id="camel.apache.org/v1.KameletCondition">KameletCondition
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.KameletStatus">KameletStatus</a>)
+<a href="#camel.apache.org/v1.KameletStatus">KameletStatus</a>)
 </p>
 <div>
 <p>KameletCondition describes the state of a resource at a certain point.</p>
@@ -6403,7 +6403,7 @@ string
 <td>
 <code>type</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.KameletConditionType">
+<a href="#camel.apache.org/v1.KameletConditionType">
 KameletConditionType
 </a>
 </em>
@@ -6475,27 +6475,27 @@ string
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.KameletConditionType">KameletConditionType
+<h3 id="camel.apache.org/v1.KameletConditionType">KameletConditionType
 (<code>string</code> alias)</h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.KameletCondition">KameletCondition</a>)
+<a href="#camel.apache.org/v1.KameletCondition">KameletCondition</a>)
 </p>
 <div>
 </div>
-<h3 id="camel.apache.org/v1alpha1.KameletPhase">KameletPhase
+<h3 id="camel.apache.org/v1.KameletPhase">KameletPhase
 (<code>string</code> alias)</h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.KameletStatus">KameletStatus</a>)
+<a href="#camel.apache.org/v1.KameletStatus">KameletStatus</a>)
 </p>
 <div>
 </div>
-<h3 id="camel.apache.org/v1alpha1.KameletProperty">KameletProperty
+<h3 id="camel.apache.org/v1.KameletProperty">KameletProperty
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.KameletStatus">KameletStatus</a>)
+<a href="#camel.apache.org/v1.KameletStatus">KameletStatus</a>)
 </p>
 <div>
 </div>
@@ -6529,11 +6529,11 @@ string
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.KameletSpec">KameletSpec
+<h3 id="camel.apache.org/v1.KameletSpec">KameletSpec
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.Kamelet">Kamelet</a>)
+<a href="#camel.apache.org/v1.Kamelet">Kamelet</a>)
 </p>
 <div>
 <p>KameletSpec defines the desired state of Kamelet</p>
@@ -6618,11 +6618,11 @@ map[github.com/apache/camel-k/pkg/apis/camel/v1alpha1.EventSlot]github.com/apach
 </tr>
 </tbody>
 </table>
-<h3 id="camel.apache.org/v1alpha1.KameletStatus">KameletStatus
+<h3 id="camel.apache.org/v1.KameletStatus">KameletStatus
 </h3>
 <p>
 (<em>Appears on:</em>
-<a href="#camel.apache.org/v1alpha1.Kamelet">Kamelet</a>)
+<a href="#camel.apache.org/v1.Kamelet">Kamelet</a>)
 </p>
 <div>
 <p>KameletStatus defines the observed state of Kamelet</p>
@@ -6639,7 +6639,7 @@ map[github.com/apache/camel-k/pkg/apis/camel/v1alpha1.EventSlot]github.com/apach
 <td>
 <code>phase</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.KameletPhase">
+<a href="#camel.apache.org/v1.KameletPhase">
 KameletPhase
 </a>
 </em>
@@ -6651,7 +6651,7 @@ KameletPhase
 <td>
 <code>conditions</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.KameletCondition">
+<a href="#camel.apache.org/v1.KameletCondition">
 []KameletCondition
 </a>
 </em>
@@ -6663,7 +6663,7 @@ KameletPhase
 <td>
 <code>properties</code><br/>
 <em>
-<a href="#camel.apache.org/v1alpha1.KameletProperty">
+<a href="#camel.apache.org/v1.KameletProperty">
 []KameletProperty
 </a>
 </em>
diff --git a/docs/modules/ROOT/partials/apis/kamelets-crds.adoc b/docs/modules/ROOT/partials/apis/kamelets-crds.adoc
index f0f444fab..36d7aea89 100644
--- a/docs/modules/ROOT/partials/apis/kamelets-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/kamelets-crds.adoc
@@ -5,10 +5,10 @@ Package v1alpha1 contains API Schema definitions for the camel v1alpha1 API grou
 
 ==  Resource Types
 
-[#_camel_apache_org_v1alpha1_Binding]
-=== Binding
+[#_camel_apache_org_v1alpha1_Kamelet]
+=== Kamelet
 
-Binding is the Schema for the kamelets binding API
+Kamelet is the Schema for the kamelets API
 
 [cols="2,2a",options="header"]
 |===
@@ -21,7 +21,7 @@ string
 
 |`kind` +
 string
-|`Binding`
+|`Kamelet`
 |`metadata` +
 *https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectmeta-v1-meta[Kubernetes meta/v1.ObjectMeta]*
 |
@@ -31,26 +31,26 @@ string
 
 Refer to the Kubernetes API documentation for the fields of the `metadata` field.
 |`spec` +
-*xref:#_camel_apache_org_v1alpha1_BindingSpec[BindingSpec]*
+*xref:#_camel_apache_org_v1alpha1_KameletSpec[KameletSpec]*
 |
 
 
-the specification of a Binding
+the desired specification
 
 |`status` +
-*xref:#_camel_apache_org_v1alpha1_BindingStatus[BindingStatus]*
+*xref:#_camel_apache_org_v1alpha1_KameletStatus[KameletStatus]*
 |
 
 
-the status of a Binding
+the actual status of the resource
 
 
 |===
 
-[#_camel_apache_org_v1alpha1_Kamelet]
-=== Kamelet
+[#_camel_apache_org_v1alpha1_KameletBinding]
+=== KameletBinding
 
-Kamelet is the Schema for the kamelets API
+KameletBinding is the Schema for the kamelets binding API
 
 [cols="2,2a",options="header"]
 |===
@@ -63,7 +63,7 @@ string
 
 |`kind` +
 string
-|`Kamelet`
+|`KameletBinding`
 |`metadata` +
 *https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectmeta-v1-meta[Kubernetes meta/v1.ObjectMeta]*
 |
@@ -73,18 +73,18 @@ string
 
 Refer to the Kubernetes API documentation for the fields of the `metadata` field.
 |`spec` +
-*xref:#_camel_apache_org_v1alpha1_KameletSpec[KameletSpec]*
+*xref:#_camel_apache_org_v1alpha1_KameletBindingSpec[KameletBindingSpec]*
 |
 
 
-the desired specification
+the specification of a KameletBinding
 
 |`status` +
-*xref:#_camel_apache_org_v1alpha1_KameletStatus[KameletStatus]*
+*xref:#_camel_apache_org_v1alpha1_KameletBindingStatus[KameletBindingStatus]*
 |
 
 
-the actual status of the resource
+the status of a KameletBinding
 
 
 |===
@@ -109,210 +109,6 @@ BeanProperties represent an unstructured object properties to be set on a bean
 
 
 
-|===
-
-[#_camel_apache_org_v1alpha1_BindingCondition]
-=== BindingCondition
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1alpha1_BindingStatus, BindingStatus>>
-
-BindingCondition describes the state of a resource at a certain point.
-
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
-
-|`type` +
-*xref:#_camel_apache_org_v1alpha1_BindingConditionType[BindingConditionType]*
-|
-
-
-Type of binding condition.
-
-|`status` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
-|
-
-
-Status of the condition, one of True, False, Unknown.
-
-|`lastUpdateTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
-|
-
-
-The last time this condition was updated.
-
-|`lastTransitionTime` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
-|
-
-
-Last time the condition transitioned from one status to another.
-
-|`reason` +
-string
-|
-
-
-The reason for the condition's last transition.
-
-|`message` +
-string
-|
-
-
-A human readable message indicating details about the transition.
-
-|`pods` +
-[]github.com/apache/camel-k/v2/pkg/apis/camel/v1.PodCondition
-|
-
-
-Pods collect health and conditions information from the owned PODs
-
-
-|===
-
-[#_camel_apache_org_v1alpha1_BindingConditionType]
-=== BindingConditionType(`string` alias)
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1alpha1_BindingCondition, BindingCondition>>
-
-BindingConditionType --
-
-
-[#_camel_apache_org_v1alpha1_BindingPhase]
-=== BindingPhase(`string` alias)
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1alpha1_BindingStatus, BindingStatus>>
-
-BindingPhase --
-
-
-[#_camel_apache_org_v1alpha1_BindingSpec]
-=== BindingSpec
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1alpha1_Binding, Binding>>
-
-BindingSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
-
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
-
-|`integration` +
-github.com/apache/camel-k/v2/pkg/apis/camel/v1.IntegrationSpec
-|
-
-
-Integration is an optional integration used to specify custom parameters
-
-|`source` +
-*xref:#_camel_apache_org_v1alpha1_Endpoint[Endpoint]*
-|
-
-
-Source is the starting point of the integration defined by this binding
-
-|`sink` +
-*xref:#_camel_apache_org_v1alpha1_Endpoint[Endpoint]*
-|
-
-
-Sink is the destination of the integration defined by this binding
-
-|`errorHandler` +
-*xref:#_camel_apache_org_v1alpha1_ErrorHandlerSpec[ErrorHandlerSpec]*
-|
-
-
-ErrorHandler is an optional handler called upon an error occuring in the integration
-
-|`steps` +
-*xref:#_camel_apache_org_v1alpha1_Endpoint[[\]Endpoint]*
-|
-
-
-Steps contains an optional list of intermediate steps that are executed between the Source and the Sink
-
-|`replicas` +
-int32
-|
-
-
-Replicas is the number of desired replicas for the binding
-
-|`serviceAccountName` +
-string
-|
-
-
-Custom SA to use for the binding
-
-
-|===
-
-[#_camel_apache_org_v1alpha1_BindingStatus]
-=== BindingStatus
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1alpha1_Binding, Binding>>
-
-BindingStatus specify the status of a binding
-
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
-
-|`observedGeneration` +
-int64
-|
-
-
-ObservedGeneration is the most recent generation observed for this Binding.
-
-|`phase` +
-*xref:#_camel_apache_org_v1alpha1_BindingPhase[BindingPhase]*
-|
-
-
-Phase --
-
-|`conditions` +
-*xref:#_camel_apache_org_v1alpha1_BindingCondition[[\]BindingCondition]*
-|
-
-
-Conditions --
-
-|`replicas` +
-int32
-|
-
-
-Replicas is the number of actual replicas of the binding
-
-|`selector` +
-string
-|
-
-
-Selector allows to identify pods belonging to the binding
-
-
 |===
 
 [#_camel_apache_org_v1alpha1_DataTypeReference]
@@ -455,8 +251,8 @@ one to many header specifications
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1alpha1_BindingSpec, BindingSpec>>
 * <<#_camel_apache_org_v1alpha1_ErrorHandlerSink, ErrorHandlerSink>>
+* <<#_camel_apache_org_v1alpha1_KameletBindingSpec, KameletBindingSpec>>
 
 Endpoint represents a source/sink external entity (could be any Kubernetes resource or Camel URI)
 
@@ -644,7 +440,7 @@ ErrorHandlerSink represents a sink error handler type which behave like a dead l
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1alpha1_BindingSpec, BindingSpec>>
+* <<#_camel_apache_org_v1alpha1_KameletBindingSpec, KameletBindingSpec>>
 
 ErrorHandlerSpec represents an unstructured object for an error handler
 
@@ -1114,6 +910,210 @@ string
 JSONSchemaURL represents a schema url.
 
 
+[#_camel_apache_org_v1alpha1_KameletBindingCondition]
+=== KameletBindingCondition
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1alpha1_KameletBindingStatus, KameletBindingStatus>>
+
+KameletBindingCondition describes the state of a resource at a certain point.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`type` +
+*xref:#_camel_apache_org_v1alpha1_KameletBindingConditionType[KameletBindingConditionType]*
+|
+
+
+Type of kameletBinding condition.
+
+|`status` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#conditionstatus-v1-core[Kubernetes core/v1.ConditionStatus]*
+|
+
+
+Status of the condition, one of True, False, Unknown.
+
+|`lastUpdateTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+The last time this condition was updated.
+
+|`lastTransitionTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#time-v1-meta[Kubernetes meta/v1.Time]*
+|
+
+
+Last time the condition transitioned from one status to another.
+
+|`reason` +
+string
+|
+
+
+The reason for the condition's last transition.
+
+|`message` +
+string
+|
+
+
+A human readable message indicating details about the transition.
+
+|`pods` +
+[]github.com/apache/camel-k/v2/pkg/apis/camel/v1.PodCondition
+|
+
+
+Pods collect health and conditions information from the owned PODs
+
+
+|===
+
+[#_camel_apache_org_v1alpha1_KameletBindingConditionType]
+=== KameletBindingConditionType(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1alpha1_KameletBindingCondition, KameletBindingCondition>>
+
+KameletBindingConditionType --
+
+
+[#_camel_apache_org_v1alpha1_KameletBindingPhase]
+=== KameletBindingPhase(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1alpha1_KameletBindingStatus, KameletBindingStatus>>
+
+KameletBindingPhase --
+
+
+[#_camel_apache_org_v1alpha1_KameletBindingSpec]
+=== KameletBindingSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1alpha1_KameletBinding, KameletBinding>>
+
+KameletBindingSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`integration` +
+github.com/apache/camel-k/v2/pkg/apis/camel/v1.IntegrationSpec
+|
+
+
+Integration is an optional integration used to specify custom parameters
+
+|`source` +
+*xref:#_camel_apache_org_v1alpha1_Endpoint[Endpoint]*
+|
+
+
+Source is the starting point of the integration defined by this binding
+
+|`sink` +
+*xref:#_camel_apache_org_v1alpha1_Endpoint[Endpoint]*
+|
+
+
+Sink is the destination of the integration defined by this binding
+
+|`errorHandler` +
+*xref:#_camel_apache_org_v1alpha1_ErrorHandlerSpec[ErrorHandlerSpec]*
+|
+
+
+ErrorHandler is an optional handler called upon an error occuring in the integration
+
+|`steps` +
+*xref:#_camel_apache_org_v1alpha1_Endpoint[[\]Endpoint]*
+|
+
+
+Steps contains an optional list of intermediate steps that are executed between the Source and the Sink
+
+|`replicas` +
+int32
+|
+
+
+Replicas is the number of desired replicas for the binding
+
+|`serviceAccountName` +
+string
+|
+
+
+Custom SA to use for the binding
+
+
+|===
+
+[#_camel_apache_org_v1alpha1_KameletBindingStatus]
+=== KameletBindingStatus
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1alpha1_KameletBinding, KameletBinding>>
+
+KameletBindingStatus specify the status of a binding
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`observedGeneration` +
+int64
+|
+
+
+ObservedGeneration is the most recent generation observed for this KameletBinding.
+
+|`phase` +
+*xref:#_camel_apache_org_v1alpha1_KameletBindingPhase[KameletBindingPhase]*
+|
+
+
+Phase --
+
+|`conditions` +
+*xref:#_camel_apache_org_v1alpha1_KameletBindingCondition[[\]KameletBindingCondition]*
+|
+
+
+Conditions --
+
+|`replicas` +
+int32
+|
+
+
+Replicas is the number of actual replicas of the binding
+
+|`selector` +
+string
+|
+
+
+Selector allows to identify pods belonging to the binding
+
+
+|===
+
 [#_camel_apache_org_v1alpha1_KameletCondition]
 === KameletCondition
 
diff --git a/e2e/common/misc/files/kamelets/timer-custom-source.kamelet.yaml b/e2e/common/misc/files/kamelets/timer-custom-source.kamelet.yaml
index a47e62e0d..f406c5aca 100644
--- a/e2e/common/misc/files/kamelets/timer-custom-source.kamelet.yaml
+++ b/e2e/common/misc/files/kamelets/timer-custom-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-custom-source
diff --git a/e2e/common/misc/files/my-timer-source.kamelet.yaml b/e2e/common/misc/files/my-timer-source.kamelet.yaml
index 7a91a2e20..cf2536500 100644
--- a/e2e/common/misc/files/my-timer-source.kamelet.yaml
+++ b/e2e/common/misc/files/my-timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: my-timer-source
diff --git a/e2e/common/misc/kamelet_binding_test.go b/e2e/common/misc/kamelet_binding_test.go
index dfe3fb502..a6dad0373 100644
--- a/e2e/common/misc/kamelet_binding_test.go
+++ b/e2e/common/misc/kamelet_binding_test.go
@@ -30,7 +30,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 
 	. "github.com/apache/camel-k/v2/e2e/support"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	"github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/v2/pkg/util/kubernetes"
 )
 
@@ -44,13 +44,13 @@ func TestBinding(t *testing.T) {
 		from := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "my-own-error-producer-source",
-			APIVersion: v1alpha1.SchemeGroupVersion.String(),
+			APIVersion: v1.SchemeGroupVersion.String(),
 		}
 
 		to := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "my-own-log-sink",
-			APIVersion: v1alpha1.SchemeGroupVersion.String(),
+			APIVersion: v1.SchemeGroupVersion.String(),
 		}
 
 		errorHandler := map[string]interface{}{
@@ -58,7 +58,7 @@ func TestBinding(t *testing.T) {
 				"endpoint": map[string]interface{}{
 					"ref": map[string]string{
 						"kind":       "Kamelet",
-						"apiVersion": v1alpha1.SchemeGroupVersion.String(),
+						"apiVersion": v1.SchemeGroupVersion.String(),
 						"name":       "my-own-log-sink",
 					},
 					"properties": map[string]string{
@@ -99,13 +99,13 @@ func TestBinding(t *testing.T) {
 		from := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "my-own-timer-source",
-			APIVersion: v1alpha1.SchemeGroupVersion.String(),
+			APIVersion: v1.SchemeGroupVersion.String(),
 		}
 
 		to := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "my-own-log-sink",
-			APIVersion: v1alpha1.SchemeGroupVersion.String(),
+			APIVersion: v1.SchemeGroupVersion.String(),
 		}
 
 		Expect(BindKameletTo(ns, "kb-with-traits",
@@ -122,13 +122,13 @@ func TestBinding(t *testing.T) {
 	// Binding with wrong spec
 	t.Run("test Binding with wrong spec", func(t *testing.T) {
 		name := "bad-klb"
-		kb := v1alpha1.NewBinding(ns, name)
-		kb.Spec = v1alpha1.BindingSpec{}
+		kb := v1.NewBinding(ns, name)
+		kb.Spec = v1.BindingSpec{}
 		_, err := kubernetes.ReplaceResource(TestContext, TestClient(), &kb)
 		Eventually(err).Should(BeNil())
-		Eventually(BindingPhase(ns, name), TestTimeoutShort).Should(Equal(v1alpha1.BindingPhaseError))
-		Eventually(BindingConditionStatus(ns, name, v1alpha1.BindingConditionReady), TestTimeoutShort).ShouldNot(Equal(corev1.ConditionTrue))
-		Eventually(BindingCondition(ns, name, v1alpha1.BindingIntegrationConditionError), TestTimeoutShort).Should(
+		Eventually(BindingPhase(ns, name), TestTimeoutShort).Should(Equal(v1.BindingPhaseError))
+		Eventually(BindingConditionStatus(ns, name, v1.BindingConditionReady), TestTimeoutShort).ShouldNot(Equal(corev1.ConditionTrue))
+		Eventually(BindingCondition(ns, name, v1.BindingIntegrationConditionError), TestTimeoutShort).Should(
 			WithTransform(BindingConditionMessage, And(
 				ContainSubstring("could not determine source URI"),
 				ContainSubstring("no ref or URI specified in endpoint"),
@@ -139,7 +139,7 @@ func TestBinding(t *testing.T) {
 }
 
 func createErrorProducerKamelet(ns string, name string) func() error {
-	props := map[string]v1alpha1.JSONSchemaProp{
+	props := map[string]v1.JSONSchemaProp{
 		"message": {
 			Type: "string",
 		},
diff --git a/e2e/common/misc/kamelet_binding_with_image_test.go b/e2e/common/misc/kamelet_binding_with_image_test.go
index 133cc577b..beea78c97 100644
--- a/e2e/common/misc/kamelet_binding_with_image_test.go
+++ b/e2e/common/misc/kamelet_binding_with_image_test.go
@@ -31,7 +31,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 
 	. "github.com/apache/camel-k/v2/e2e/support"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	"github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 )
 
 func TestBindingWithImage(t *testing.T) {
@@ -40,13 +40,13 @@ func TestBindingWithImage(t *testing.T) {
 	from := corev1.ObjectReference{
 		Kind:       "Kamelet",
 		Name:       "my-own-timer-source",
-		APIVersion: v1alpha1.SchemeGroupVersion.String(),
+		APIVersion: v1.SchemeGroupVersion.String(),
 	}
 
 	to := corev1.ObjectReference{
 		Kind:       "Kamelet",
 		Name:       "my-own-log-sink",
-		APIVersion: v1alpha1.SchemeGroupVersion.String(),
+		APIVersion: v1.SchemeGroupVersion.String(),
 	}
 
 	emptyMap := map[string]string{}
diff --git a/e2e/common/misc/kamelet_update_test.go b/e2e/common/misc/kamelet_update_test.go
index 665a20d05..055863424 100644
--- a/e2e/common/misc/kamelet_update_test.go
+++ b/e2e/common/misc/kamelet_update_test.go
@@ -29,7 +29,7 @@ import (
 	. "github.com/onsi/gomega"
 
 	. "github.com/apache/camel-k/v2/e2e/support"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	"github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 )
 
 const customLabel = "custom-label"
@@ -56,8 +56,8 @@ func createBundleKamelet(ns string, name string) func() error {
 	}
 
 	labels := map[string]string{
-		customLabel:                  "true",
-		v1alpha1.KameletBundledLabel: "true",
+		customLabel:            "true",
+		v1.KameletBundledLabel: "true",
 	}
 	return CreateKamelet(ns, name, flow, nil, labels)
 }
diff --git a/e2e/common/misc/scale_binding_test.go b/e2e/common/misc/scale_binding_test.go
index bb5b62db7..55f552701 100644
--- a/e2e/common/misc/scale_binding_test.go
+++ b/e2e/common/misc/scale_binding_test.go
@@ -35,7 +35,6 @@ import (
 
 	. "github.com/apache/camel-k/v2/e2e/support"
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
 	"github.com/apache/camel-k/v2/pkg/client/camel/clientset/versioned"
 	"github.com/apache/camel-k/v2/pkg/util/openshift"
 )
@@ -54,7 +53,7 @@ func TestBindingScale(t *testing.T) {
 	Expect(KamelBindWithID(operatorID, ns, "timer-source?message=HelloBinding", "log-sink", "--name", name).Execute()).To(Succeed())
 	Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
 	Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
-	Eventually(BindingConditionStatus(ns, name, v1alpha1.BindingConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
+	Eventually(BindingConditionStatus(ns, name, v1.BindingConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
 	Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("HelloBinding"))
 
 	t.Run("Update binding scale spec", func(t *testing.T) {
@@ -70,7 +69,7 @@ func TestBindingScale(t *testing.T) {
 		// Check the readiness condition becomes truthy back
 		Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutMedium).Should(Equal(corev1.ConditionTrue))
 		// Finally check the readiness condition becomes truthy back onBinding
-		Eventually(BindingConditionStatus(ns, name, v1alpha1.BindingConditionReady), TestTimeoutMedium).Should(Equal(corev1.ConditionTrue))
+		Eventually(BindingConditionStatus(ns, name, v1.BindingConditionReady), TestTimeoutMedium).Should(Equal(corev1.ConditionTrue))
 	})
 
 	t.Run("ScaleBinding with polymorphic client", func(t *testing.T) {
@@ -79,11 +78,11 @@ func TestBindingScale(t *testing.T) {
 
 		// Patch the integration scale subresource
 		patch := "{\"spec\":{\"replicas\":2}}"
-		_, err = scaleClient.Scales(ns).Patch(TestContext, v1alpha1.SchemeGroupVersion.WithResource("bindings"), name, types.MergePatchType, []byte(patch), metav1.PatchOptions{})
+		_, err = scaleClient.Scales(ns).Patch(TestContext, v1.SchemeGroupVersion.WithResource("bindings"), name, types.MergePatchType, []byte(patch), metav1.PatchOptions{})
 		Expect(err).To(BeNil())
 
 		// Check the readiness condition is still truthy as down-scaling
-		Expect(BindingConditionStatus(ns, name, v1alpha1.BindingConditionReady)()).To(Equal(corev1.ConditionTrue))
+		Expect(BindingConditionStatus(ns, name, v1.BindingConditionReady)()).To(Equal(corev1.ConditionTrue))
 		// Check the Integration scale subresource Spec field
 		Eventually(IntegrationSpecReplicas(ns, name), TestTimeoutShort).
 			Should(gstruct.PointTo(BeNumerically("==", 2)))
@@ -102,18 +101,18 @@ func TestBindingScale(t *testing.T) {
 		Expect(err).To(BeNil())
 
 		// Getter
-		bindingScale, err := camel.CamelV1alpha1().Bindings(ns).GetScale(TestContext, name, metav1.GetOptions{})
+		bindingScale, err := camel.CamelV1().Bindings(ns).GetScale(TestContext, name, metav1.GetOptions{})
 		Expect(err).To(BeNil())
 		Expect(bindingScale.Spec.Replicas).To(BeNumerically("==", 2))
 		Expect(bindingScale.Status.Replicas).To(BeNumerically("==", 2))
 
 		// Setter
 		bindingScale.Spec.Replicas = 1
-		_, err = camel.CamelV1alpha1().Bindings(ns).UpdateScale(TestContext, name, bindingScale, metav1.UpdateOptions{})
+		_, err = camel.CamelV1().Bindings(ns).UpdateScale(TestContext, name, bindingScale, metav1.UpdateOptions{})
 		Expect(err).To(BeNil())
 
 		// Check the readiness condition is still truthy as down-scaling inBinding
-		Expect(BindingConditionStatus(ns, name, v1alpha1.BindingConditionReady)()).To(Equal(corev1.ConditionTrue))
+		Expect(BindingConditionStatus(ns, name, v1.BindingConditionReady)()).To(Equal(corev1.ConditionTrue))
 		// Check the Binding scale subresource Spec field
 		Eventually(BindingSpecReplicas(ns, name), TestTimeoutShort).
 			Should(gstruct.PointTo(BeNumerically("==", 1)))
diff --git a/e2e/common/traits/errored_trait_test.go b/e2e/common/traits/errored_trait_test.go
index 4ddf3c108..cf4b5f324 100644
--- a/e2e/common/traits/errored_trait_test.go
+++ b/e2e/common/traits/errored_trait_test.go
@@ -30,8 +30,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 
 	. "github.com/apache/camel-k/v2/e2e/support"
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	"github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 )
 
 func TestErroredTrait(t *testing.T) {
@@ -58,9 +57,9 @@ func TestErroredTrait(t *testing.T) {
 			"-t", "kamelets.list=missing",
 		).Execute()).To(Succeed())
 		// Binding
-		Eventually(BindingPhase(ns, name), TestTimeoutShort).Should(Equal(v1alpha1.BindingPhaseError))
-		Eventually(BindingConditionStatus(ns, name, v1alpha1.BindingConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionFalse))
-		Eventually(BindingCondition(ns, name, v1alpha1.BindingConditionReady), TestTimeoutShort).Should(
+		Eventually(BindingPhase(ns, name), TestTimeoutShort).Should(Equal(v1.BindingPhaseError))
+		Eventually(BindingConditionStatus(ns, name, v1.BindingConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionFalse))
+		Eventually(BindingCondition(ns, name, v1.BindingConditionReady), TestTimeoutShort).Should(
 			WithTransform(BindingConditionMessage, And(
 				ContainSubstring("error during trait customization"),
 				ContainSubstring("[missing] not found"),
diff --git a/e2e/common/traits/health_test.go b/e2e/common/traits/health_test.go
index 918dc49ae..09d62548f 100644
--- a/e2e/common/traits/health_test.go
+++ b/e2e/common/traits/health_test.go
@@ -25,7 +25,7 @@ package traits
 import (
 	"encoding/json"
 	"fmt"
-	camelv1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	camelv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	"testing"
 	"time"
 
@@ -146,7 +146,7 @@ func TestHealthTrait(t *testing.T) {
 		from := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "my-own-timer-source",
-			APIVersion: camelv1alpha1.SchemeGroupVersion.String(),
+			APIVersion: camelv1.SchemeGroupVersion.String(),
 		}
 
 		fromParams := map[string]string{
@@ -156,7 +156,7 @@ func TestHealthTrait(t *testing.T) {
 		to := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "my-own-log-sink",
-			APIVersion: camelv1alpha1.SchemeGroupVersion.String(),
+			APIVersion: camelv1.SchemeGroupVersion.String(),
 		}
 
 		toParams := map[string]string{
@@ -239,8 +239,8 @@ func TestHealthTrait(t *testing.T) {
 				return data["check.kind"].(string) == "READINESS" && data["route.status"].(string) == "Stopped" && data["route.id"].(string) == "binding"
 			}))
 
-		Eventually(BindingCondition(ns, name, camelv1alpha1.BindingConditionReady), TestTimeoutLong).Should(
-			Satisfy(func(c *camelv1alpha1.BindingCondition) bool {
+		Eventually(BindingCondition(ns, name, camelv1.BindingConditionReady), TestTimeoutLong).Should(
+			Satisfy(func(c *camelv1.BindingCondition) bool {
 				if c.Status != corev1.ConditionFalse {
 					return false
 				}
diff --git a/e2e/install/kustomize/common.go b/e2e/install/kustomize/common.go
index c58655b1d..12b542b04 100644
--- a/e2e/install/kustomize/common.go
+++ b/e2e/install/kustomize/common.go
@@ -36,7 +36,7 @@ import (
 const (
 	// v1.Build,          v1.Integration
 	// v1.IntegrationKit, v1.IntegrationPlatform
-	// v1alpha1.Kamelet,  v1alpha1.Binding
+	// v1.Kamelet,  v1.Binding
 	ExpectedCRDs = 6
 
 	// camel-k-operator,             camel-k-operator-events,
diff --git a/e2e/knative/kamelet_test.go b/e2e/knative/kamelet_test.go
index 541d3614f..4cf765052 100644
--- a/e2e/knative/kamelet_test.go
+++ b/e2e/knative/kamelet_test.go
@@ -34,7 +34,6 @@ import (
 
 	. "github.com/apache/camel-k/v2/e2e/support"
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
 )
 
 // Test that a Binding can be changed and the changes are propagated to the Integration
@@ -49,7 +48,7 @@ func TestKameletChange(t *testing.T) {
 
 	from := corev1.ObjectReference{
 		Kind:       "Kamelet",
-		APIVersion: v1alpha1.SchemeGroupVersion.String(),
+		APIVersion: v1.SchemeGroupVersion.String(),
 		Name:       timerSource,
 	}
 
@@ -72,7 +71,7 @@ func TestKameletChange(t *testing.T) {
 	Eventually(IntegrationConditionStatus(ns, "timer-binding", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
 	Eventually(IntegrationLogs(ns, "test-kamelet-display"), TestTimeoutShort).Should(ContainSubstring("message is Hello"))
 
-	Eventually(BindingCondition(ns, timerBinding, v1alpha1.BindingConditionReady), TestTimeoutMedium).Should(And(
+	Eventually(BindingCondition(ns, timerBinding, v1.BindingConditionReady), TestTimeoutMedium).Should(And(
 		WithTransform(BindingConditionStatusExtract, Equal(corev1.ConditionTrue)),
 		WithTransform(BindingConditionReason, Equal(v1.IntegrationConditionDeploymentReadyReason)),
 		WithTransform(BindingConditionMessage, Equal(fmt.Sprintf("1/1 ready replicas"))),
@@ -85,7 +84,7 @@ func TestKameletChange(t *testing.T) {
 	Eventually(IntegrationConditionStatus(ns, "timer-binding", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
 	Eventually(IntegrationLogs(ns, "test-kamelet-display"), TestTimeoutShort).Should(ContainSubstring("message is Hi"))
 
-	Eventually(BindingCondition(ns, timerBinding, v1alpha1.BindingConditionReady), TestTimeoutMedium).
+	Eventually(BindingCondition(ns, timerBinding, v1.BindingConditionReady), TestTimeoutMedium).
 		Should(And(
 			WithTransform(BindingConditionStatusExtract, Equal(corev1.ConditionTrue)),
 			WithTransform(BindingConditionReason, Equal(v1.IntegrationConditionDeploymentReadyReason)),
diff --git a/e2e/native/native_binding_test.go b/e2e/native/native_binding_test.go
index cd4a08ab3..1ac2f950f 100644
--- a/e2e/native/native_binding_test.go
+++ b/e2e/native/native_binding_test.go
@@ -25,14 +25,10 @@ package native
 import (
 	"testing"
 
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
-
-	. "github.com/onsi/gomega"
-
-	corev1 "k8s.io/api/core/v1"
-
 	. "github.com/apache/camel-k/v2/e2e/support"
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
+	. "github.com/onsi/gomega"
+	corev1 "k8s.io/api/core/v1"
 )
 
 func TestNativeBinding(t *testing.T) {
@@ -48,12 +44,12 @@ func TestNativeBinding(t *testing.T) {
 		from := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "timer-source",
-			APIVersion: v1alpha1.SchemeGroupVersion.String(),
+			APIVersion: v1.SchemeGroupVersion.String(),
 		}
 		to := corev1.ObjectReference{
 			Kind:       "Kamelet",
 			Name:       "log-sink",
-			APIVersion: v1alpha1.SchemeGroupVersion.String(),
+			APIVersion: v1.SchemeGroupVersion.String(),
 		}
 		message := "Magicstring!"
 
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index cf19f771e..a10a89cd5 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -73,7 +73,6 @@ import (
 	"github.com/apache/camel-k/v2/e2e/support/util"
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
 	"github.com/apache/camel-k/v2/pkg/client"
 	"github.com/apache/camel-k/v2/pkg/cmd"
 	"github.com/apache/camel-k/v2/pkg/install"
@@ -1068,9 +1067,9 @@ func ScaleIntegration(ns string, name string, replicas int32) error {
 	})
 }
 
-func Binding(ns string, name string) func() *v1alpha1.Binding {
-	return func() *v1alpha1.Binding {
-		klb := v1alpha1.NewBinding(ns, name)
+func Binding(ns string, name string) func() *v1.Binding {
+	return func() *v1.Binding {
+		klb := v1.NewBinding(ns, name)
 		key := ctrl.ObjectKey{
 			Namespace: ns,
 			Name:      name,
@@ -1084,8 +1083,8 @@ func Binding(ns string, name string) func() *v1alpha1.Binding {
 	}
 }
 
-func BindingPhase(ns string, name string) func() v1alpha1.BindingPhase {
-	return func() v1alpha1.BindingPhase {
+func BindingPhase(ns string, name string) func() v1.BindingPhase {
+	return func() v1.BindingPhase {
 		klb := Binding(ns, name)()
 		if klb == nil {
 			return ""
@@ -1114,8 +1113,8 @@ func BindingStatusReplicas(ns string, name string) func() *int32 {
 	}
 }
 
-func BindingCondition(ns string, name string, conditionType v1alpha1.BindingConditionType) func() *v1alpha1.BindingCondition {
-	return func() *v1alpha1.BindingCondition {
+func BindingCondition(ns string, name string, conditionType v1.BindingConditionType) func() *v1.BindingCondition {
+	return func() *v1.BindingCondition {
 		kb := Binding(ns, name)()
 		if kb == nil {
 			return nil
@@ -1128,28 +1127,28 @@ func BindingCondition(ns string, name string, conditionType v1alpha1.BindingCond
 	}
 }
 
-func BindingConditionStatusExtract(c *v1alpha1.BindingCondition) corev1.ConditionStatus {
+func BindingConditionStatusExtract(c *v1.BindingCondition) corev1.ConditionStatus {
 	if c == nil {
 		return ""
 	}
 	return c.Status
 }
 
-func BindingConditionReason(c *v1alpha1.BindingCondition) string {
+func BindingConditionReason(c *v1.BindingCondition) string {
 	if c == nil {
 		return ""
 	}
 	return c.Reason
 }
 
-func BindingConditionMessage(c *v1alpha1.BindingCondition) string {
+func BindingConditionMessage(c *v1.BindingCondition) string {
 	if c == nil {
 		return ""
 	}
 	return c.Message
 }
 
-func BindingConditionStatus(ns string, name string, conditionType v1alpha1.BindingConditionType) func() corev1.ConditionStatus {
+func BindingConditionStatus(ns string, name string, conditionType v1.BindingConditionType) func() corev1.ConditionStatus {
 	return func() corev1.ConditionStatus {
 		klb := Binding(ns, name)()
 		if klb == nil {
@@ -1163,7 +1162,7 @@ func BindingConditionStatus(ns string, name string, conditionType v1alpha1.Bindi
 	}
 }
 
-func UpdateBinding(ns string, name string, upd func(it *v1alpha1.Binding)) error {
+func UpdateBinding(ns string, name string, upd func(it *v1.Binding)) error {
 	klb := Binding(ns, name)()
 	if klb == nil {
 		return fmt.Errorf("noBinding named %s found", name)
@@ -1181,7 +1180,7 @@ func UpdateBinding(ns string, name string, upd func(it *v1alpha1.Binding)) error
 }
 
 func ScaleBinding(ns string, name string, replicas int32) error {
-	return UpdateBinding(ns, name, func(klb *v1alpha1.Binding) {
+	return UpdateBinding(ns, name, func(klb *v1.Binding) {
 		klb.Spec.Replicas = &replicas
 	})
 }
@@ -1862,11 +1861,11 @@ func CRDs() func() []metav1.APIResource {
 			reflect.TypeOf(v1.Integration{}).Name(),
 			reflect.TypeOf(v1.IntegrationKit{}).Name(),
 			reflect.TypeOf(v1.IntegrationPlatform{}).Name(),
-			reflect.TypeOf(v1alpha1.Kamelet{}).Name(),
-			reflect.TypeOf(v1alpha1.Binding{}).Name(),
+			reflect.TypeOf(v1.Kamelet{}).Name(),
+			reflect.TypeOf(v1.Binding{}).Name(),
 		}
 
-		versions := []string{"v1", "v1alpha1"}
+		versions := []string{"v1", "v1"}
 		present := []metav1.APIResource{}
 
 		for _, version := range versions {
@@ -2093,9 +2092,9 @@ func ServiceAccount(ns, name string) func() *corev1.ServiceAccount {
 	}
 }
 
-func KameletList(ns string) func() []v1alpha1.Kamelet {
-	return func() []v1alpha1.Kamelet {
-		lst := v1alpha1.NewKameletList()
+func KameletList(ns string) func() []v1.Kamelet {
+	return func() []v1.Kamelet {
+		lst := v1.NewKameletList()
 		if err := TestClient().List(TestContext, &lst, ctrl.InNamespace(ns)); err != nil {
 			failTest(err)
 		}
@@ -2103,9 +2102,9 @@ func KameletList(ns string) func() []v1alpha1.Kamelet {
 	}
 }
 
-func Kamelet(name string, ns string) func() *v1alpha1.Kamelet {
-	return func() *v1alpha1.Kamelet {
-		it := v1alpha1.NewKamelet(ns, name)
+func Kamelet(name string, ns string) func() *v1.Kamelet {
+	return func() *v1.Kamelet {
+		it := v1.NewKamelet(ns, name)
 		key := ctrl.ObjectKey{
 			Namespace: ns,
 			Name:      name,
@@ -2119,7 +2118,7 @@ func Kamelet(name string, ns string) func() *v1alpha1.Kamelet {
 	}
 }
 
-func KameletLabels(kamelet *v1alpha1.Kamelet) map[string]string {
+func KameletLabels(kamelet *v1.Kamelet) map[string]string {
 	if kamelet == nil {
 		return map[string]string{}
 	}
@@ -2251,16 +2250,16 @@ func CreateKnativeBroker(ns string, name string) func() error {
 	Kamelets
 */
 
-func CreateKamelet(ns string, name string, template map[string]interface{}, properties map[string]v1alpha1.JSONSchemaProp, labels map[string]string) func() error {
+func CreateKamelet(ns string, name string, template map[string]interface{}, properties map[string]v1.JSONSchemaProp, labels map[string]string) func() error {
 	return func() error {
-		kamelet := v1alpha1.Kamelet{
+		kamelet := v1.Kamelet{
 			ObjectMeta: metav1.ObjectMeta{
 				Namespace: ns,
 				Name:      name,
 				Labels:    labels,
 			},
-			Spec: v1alpha1.KameletSpec{
-				Definition: &v1alpha1.JSONSchemaProps{
+			Spec: v1.KameletSpec{
+				Definition: &v1.JSONSchemaProps{
 					Properties: properties,
 				},
 				Template: asTemplate(template),
@@ -2271,7 +2270,7 @@ func CreateKamelet(ns string, name string, template map[string]interface{}, prop
 }
 
 func CreateTimerKamelet(ns string, name string) func() error {
-	props := map[string]v1alpha1.JSONSchemaProp{
+	props := map[string]v1.JSONSchemaProp{
 		"message": {
 			Type: "string",
 		},
@@ -2308,14 +2307,14 @@ func BindKameletTo(ns, name string, annotations map[string]string, from, to core
 func BindKameletToWithErrorHandler(ns, name string, annotations map[string]string, from, to corev1.ObjectReference,
 	sourceProperties, sinkProperties map[string]string, errorHandler map[string]interface{}) func() error {
 	return func() error {
-		kb := v1alpha1.NewBinding(ns, name)
+		kb := v1.NewBinding(ns, name)
 		kb.Annotations = annotations
-		kb.Spec = v1alpha1.BindingSpec{
-			Source: v1alpha1.Endpoint{
+		kb.Spec = v1.BindingSpec{
+			Source: v1.Endpoint{
 				Ref:        &from,
 				Properties: asEndpointProperties(sourceProperties),
 			},
-			Sink: v1alpha1.Endpoint{
+			Sink: v1.Endpoint{
 				Ref:        &to,
 				Properties: asEndpointProperties(sinkProperties),
 			},
@@ -2330,40 +2329,40 @@ func BindKameletToWithErrorHandler(ns, name string, annotations map[string]strin
 
 // Deprecated:
 // Use KamelBind func instead
-func asTemplate(source map[string]interface{}) *v1alpha1.Template {
+func asTemplate(source map[string]interface{}) *v1.Template {
 	bytes, err := json.Marshal(source)
 	if err != nil {
 		failTest(err)
 	}
-	return &v1alpha1.Template{
+	return &v1.Template{
 		RawMessage: bytes,
 	}
 }
 
 // Deprecated:
 // Use KamelBind func instead
-func asErrorHandlerSpec(source map[string]interface{}) *v1alpha1.ErrorHandlerSpec {
+func asErrorHandlerSpec(source map[string]interface{}) *v1.ErrorHandlerSpec {
 	bytes, err := json.Marshal(source)
 	if err != nil {
 		failTest(err)
 	}
-	return &v1alpha1.ErrorHandlerSpec{
+	return &v1.ErrorHandlerSpec{
 		RawMessage: bytes,
 	}
 }
 
 // Deprecated:
 // Use KamelBind func instead
-func asEndpointProperties(props map[string]string) *v1alpha1.EndpointProperties {
+func asEndpointProperties(props map[string]string) *v1.EndpointProperties {
 	if props == nil {
-		return &v1alpha1.EndpointProperties{}
+		return &v1.EndpointProperties{}
 	}
 
 	bytes, err := json.Marshal(props)
 	if err != nil {
 		failTest(err)
 	}
-	return &v1alpha1.EndpointProperties{
+	return &v1.EndpointProperties{
 		RawMessage: bytes,
 	}
 }
@@ -2704,7 +2703,7 @@ func CreateLogKamelet(ns string, name string) func() error {
 		},
 	}
 
-	props := map[string]v1alpha1.JSONSchemaProp{
+	props := map[string]v1.JSONSchemaProp{
 		"loggerName": {
 			Type: "string",
 		},
diff --git a/e2e/yaks/common/kamelet-beans/beans-source.kamelet.yaml b/e2e/yaks/common/kamelet-beans/beans-source.kamelet.yaml
index 6a27d9b2b..2847d908d 100644
--- a/e2e/yaks/common/kamelet-beans/beans-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-beans/beans-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: beans-source
diff --git a/e2e/yaks/common/kamelet-binding-autoload/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-binding-autoload/timer-source.kamelet.yaml
index a89ecb177..52bf905a8 100644
--- a/e2e/yaks/common/kamelet-binding-autoload/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding-autoload/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml b/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml
index a3393a426..d34af676b 100644
--- a/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml
+++ b/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: logger-sink-binding
@@ -30,5 +30,5 @@ spec:
   sink:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: logger-sink
diff --git a/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml b/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml
index f9b58fedd..4107525fd 100644
--- a/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: logger-sink
diff --git a/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml b/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml
index 45cc64084..00cbbfef4 100644
--- a/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml
+++ b/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: timer-source-binding
@@ -23,7 +23,7 @@ spec:
   source:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: timer-source
     properties:
       message: Hello Custom Event from sample-broker
diff --git a/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml
index df684a140..0b1adc007 100644
--- a/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/e2e/yaks/common/kamelet-binding-http/timer-source-binding-display.yaml b/e2e/yaks/common/kamelet-binding-http/timer-source-binding-display.yaml
index b4efc7684..68d5ce441 100644
--- a/e2e/yaks/common/kamelet-binding-http/timer-source-binding-display.yaml
+++ b/e2e/yaks/common/kamelet-binding-http/timer-source-binding-display.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: timer-source-binding-display
@@ -23,7 +23,7 @@ spec:
   source:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: timer-source
     properties:
       message: Hello
diff --git a/e2e/yaks/common/kamelet-binding-http/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-binding-http/timer-source.kamelet.yaml
index df684a140..0b1adc007 100644
--- a/e2e/yaks/common/kamelet-binding-http/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding-http/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/e2e/yaks/common/kamelet-binding-property-encoding/properties-binding.yaml b/e2e/yaks/common/kamelet-binding-property-encoding/properties-binding.yaml
index 8a67c48df..cbdbaea61 100644
--- a/e2e/yaks/common/kamelet-binding-property-encoding/properties-binding.yaml
+++ b/e2e/yaks/common/kamelet-binding-property-encoding/properties-binding.yaml
@@ -16,13 +16,13 @@
 # ---------------------------------------------------------------------------
 
 kind: Binding
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 metadata:
   name: properties-binding
 spec:
   source:
     ref:
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       kind: Kamelet
       name: timer-source
     properties:
diff --git a/e2e/yaks/common/kamelet-binding-property-encoding/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-binding-property-encoding/timer-source.kamelet.yaml
index 987a5b83a..1f2af14af 100644
--- a/e2e/yaks/common/kamelet-binding-property-encoding/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding-property-encoding/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/e2e/yaks/common/kamelet-binding/logger-sink-binding.yaml b/e2e/yaks/common/kamelet-binding/logger-sink-binding.yaml
index 34c9f8bf5..c29fe5051 100644
--- a/e2e/yaks/common/kamelet-binding/logger-sink-binding.yaml
+++ b/e2e/yaks/common/kamelet-binding/logger-sink-binding.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: logger-sink-binding
@@ -28,5 +28,5 @@ spec:
   sink:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: logger-sink
diff --git a/e2e/yaks/common/kamelet-binding/logger-sink.kamelet.yaml b/e2e/yaks/common/kamelet-binding/logger-sink.kamelet.yaml
index f9b58fedd..4107525fd 100644
--- a/e2e/yaks/common/kamelet-binding/logger-sink.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding/logger-sink.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: logger-sink
diff --git a/e2e/yaks/common/kamelet-binding/timer-source-binding.yaml b/e2e/yaks/common/kamelet-binding/timer-source-binding.yaml
index eb7b7048b..eea5967c1 100644
--- a/e2e/yaks/common/kamelet-binding/timer-source-binding.yaml
+++ b/e2e/yaks/common/kamelet-binding/timer-source-binding.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: timer-source-binding
@@ -23,7 +23,7 @@ spec:
   source:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: timer-source
     properties:
       message: Hello Kamelets
diff --git a/e2e/yaks/common/kamelet-binding/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-binding/timer-source.kamelet.yaml
index df684a140..0b1adc007 100644
--- a/e2e/yaks/common/kamelet-binding/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-binding/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/e2e/yaks/common/kamelet-data-types/data-type-action.kamelet.yaml b/e2e/yaks/common/kamelet-data-types/data-type-action.kamelet.yaml
index 6aba41e8b..230a5e931 100644
--- a/e2e/yaks/common/kamelet-data-types/data-type-action.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-data-types/data-type-action.kamelet.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: data-type-action
diff --git a/e2e/yaks/common/kamelet-data-types/event-binding.yaml b/e2e/yaks/common/kamelet-data-types/event-binding.yaml
index c08362f3c..880ffe8ed 100644
--- a/e2e/yaks/common/kamelet-data-types/event-binding.yaml
+++ b/e2e/yaks/common/kamelet-data-types/event-binding.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: event-binding
@@ -23,7 +23,7 @@ spec:
   source:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: event-source
     dataTypes:
       out:
@@ -31,12 +31,12 @@ spec:
   steps:
     - ref:
         kind: Kamelet
-        apiVersion: camel.apache.org/v1alpha1
+        apiVersion: camel.apache.org/v1
         name: log-action
   sink:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: event-sink
     dataTypes:
       in:
diff --git a/e2e/yaks/common/kamelet-data-types/event-sink.kamelet.yaml b/e2e/yaks/common/kamelet-data-types/event-sink.kamelet.yaml
index 60fd8028f..c6967ce51 100644
--- a/e2e/yaks/common/kamelet-data-types/event-sink.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-data-types/event-sink.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: event-sink
diff --git a/e2e/yaks/common/kamelet-data-types/event-source.kamelet.yaml b/e2e/yaks/common/kamelet-data-types/event-source.kamelet.yaml
index eb4b5113a..547d2272d 100644
--- a/e2e/yaks/common/kamelet-data-types/event-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-data-types/event-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: event-source
diff --git a/e2e/yaks/common/kamelet-data-types/timer-to-log.yaml b/e2e/yaks/common/kamelet-data-types/timer-to-log.yaml
index cbff3417b..c145bb894 100644
--- a/e2e/yaks/common/kamelet-data-types/timer-to-log.yaml
+++ b/e2e/yaks/common/kamelet-data-types/timer-to-log.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: timer-to-log
@@ -23,14 +23,14 @@ spec:
   source:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: timer-source
     properties:
       message: "Hello from Camel K!"
   steps:
     - ref:
         kind: Kamelet
-        apiVersion: camel.apache.org/v1alpha1
+        apiVersion: camel.apache.org/v1
         name: log-action
       dataTypes:
         in:
@@ -40,5 +40,5 @@ spec:
   sink:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: log-sink
diff --git a/e2e/yaks/common/kamelet-steps/prefix-action.kamelet.yaml b/e2e/yaks/common/kamelet-steps/prefix-action.kamelet.yaml
index f1dc779af..cb0e17959 100644
--- a/e2e/yaks/common/kamelet-steps/prefix-action.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-steps/prefix-action.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: prefix-action
diff --git a/e2e/yaks/common/kamelet-steps/steps-binding.yaml b/e2e/yaks/common/kamelet-steps/steps-binding.yaml
index 17d6d3903..ceb4e6b2b 100644
--- a/e2e/yaks/common/kamelet-steps/steps-binding.yaml
+++ b/e2e/yaks/common/kamelet-steps/steps-binding.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Binding
 metadata:
   name: steps-binding
@@ -23,20 +23,20 @@ spec:
   source:
     ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: timer-source
     properties:
       message: "Camel"
   steps:
   - ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: prefix-action
     properties:
       prefix: "Apache"
   - ref:
       kind: Kamelet
-      apiVersion: camel.apache.org/v1alpha1
+      apiVersion: camel.apache.org/v1
       name: prefix-action
     properties:
       prefix: "Hello"
diff --git a/e2e/yaks/common/kamelet-steps/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-steps/timer-source.kamelet.yaml
index df684a140..0b1adc007 100644
--- a/e2e/yaks/common/kamelet-steps/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet-steps/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/e2e/yaks/common/kamelet/echo-sink.kamelet.yaml b/e2e/yaks/common/kamelet/echo-sink.kamelet.yaml
index ad49170b7..e92ea2dcc 100644
--- a/e2e/yaks/common/kamelet/echo-sink.kamelet.yaml
+++ b/e2e/yaks/common/kamelet/echo-sink.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: echo-sink
diff --git a/e2e/yaks/common/kamelet/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet/timer-source.kamelet.yaml
index df684a140..0b1adc007 100644
--- a/e2e/yaks/common/kamelet/timer-source.kamelet.yaml
+++ b/e2e/yaks/common/kamelet/timer-source.kamelet.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: camel.apache.org/v1alpha1
+apiVersion: camel.apache.org/v1
 kind: Kamelet
 metadata:
   name: timer-source
diff --git a/helm/camel-k/crds/crd-binding.yaml b/helm/camel-k/crds/crd-binding.yaml
index b1b019aa4..eecb595e9 100644
--- a/helm/camel-k/crds/crd-binding.yaml
+++ b/helm/camel-k/crds/crd-binding.yaml
@@ -47,7 +47,7 @@ spec:
       jsonPath: .status.replicas
       name: Replicas
       type: integer
-    name: v1alpha1
+    name: v1
     schema:
       openAPIV3Schema:
         description: Binding is the Schema for the kamelets binding API
@@ -7777,6 +7777,7 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
+                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -7795,6 +7796,7 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -7806,6 +7808,7 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -7813,6 +7816,7 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8012,6 +8016,7 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
+                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -8030,6 +8035,7 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -8041,6 +8047,7 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -8048,6 +8055,7 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
+                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8252,6 +8260,7 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
+                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               externalDocs:
                                 description: ExternalDocumentation allows referencing
@@ -8270,6 +8279,7 @@ spec:
                                     default:
                                       description: default is a default value for
                                         undefined object fields.
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     deprecated:
                                       type: boolean
@@ -8281,6 +8291,7 @@ spec:
                                           value. These types are supported: bool,
                                           int64, float64, string, []interface{}, map[string]interface{}
                                           and nil.'
+                                        type: object
                                         x-kubernetes-preserve-unknown-fields: true
                                       type: array
                                     example:
@@ -8288,6 +8299,7 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
+                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     exclusiveMaximum:
                                       type: boolean
diff --git a/helm/camel-k/crds/crd-kamelet.yaml b/helm/camel-k/crds/crd-kamelet.yaml
index 41dcba0e4..9eae88378 100644
--- a/helm/camel-k/crds/crd-kamelet.yaml
+++ b/helm/camel-k/crds/crd-kamelet.yaml
@@ -38,6 +38,713 @@ spec:
     singular: kamelet
   scope: Namespaced
   versions:
+  - additionalPrinterColumns:
+    - description: The Kamelet phase
+      jsonPath: .status.phase
+      name: Phase
+      type: string
+    name: v1
+    schema:
+      openAPIV3Schema:
+        description: Kamelet is the Schema for the kamelets API
+        properties:
+          apiVersion:
+            description: 'APIVersion defines the versioned schema of this representation
+              of an object. Servers should convert recognized schemas to the latest
+              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+            type: string
+          kind:
+            description: 'Kind is a string value representing the REST resource this
+              object represents. Servers may infer this from the endpoint the client
+              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+            type: string
+          metadata:
+            type: object
+          spec:
+            description: the desired specification
+            properties:
+              dataTypes:
+                additionalProperties:
+                  description: DataTypesSpec represents the specification for a set
+                    of data types
+                  properties:
+                    default:
+                      description: the default data type for this Kamelet
+                      type: string
+                    headers:
+                      additionalProperties:
+                        description: HeaderSpec represents the specification for a
+                          header used in the Kamelet
+                        properties:
+                          default:
+                            type: string
+                          description:
+                            type: string
+                          required:
+                            type: boolean
+                          title:
+                            type: string
+                          type:
+                            type: string
+                        type: object
+                      description: one to many header specifications
+                      type: object
+                    types:
+                      additionalProperties:
+                        description: DataTypeSpec represents the specification for
+                          a data type
+                        properties:
+                          dependencies:
+                            description: the list of Camel or Maven dependencies required
+                              by the data type
+                            items:
+                              type: string
+                            type: array
+                          description:
+                            description: optional description
+                            type: string
+                          format:
+                            description: the data type format name
+                            type: string
+                          headers:
+                            additionalProperties:
+                              description: HeaderSpec represents the specification
+                                for a header used in the Kamelet
+                              properties:
+                                default:
+                                  type: string
+                                description:
+                                  type: string
+                                required:
+                                  type: boolean
+                                title:
+                                  type: string
+                                type:
+                                  type: string
+                              type: object
+                            description: one to many header specifications
+                            type: object
+                          mediaType:
+                            description: media type as expected for HTTP media types
+                              (ie, application/json)
+                            type: string
+                          schema:
+                            description: the expected schema for the data type
+                            properties:
+                              $schema:
+                                description: JSONSchemaURL represents a schema url.
+                                type: string
+                              description:
+                                type: string
+                              example:
+                                description: 'JSON represents any valid JSON value.
+                                  These types are supported: bool, int64, float64,
+                                  string, []interface{}, map[string]interface{} and
+                                  nil.'
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              externalDocs:
+                                description: ExternalDocumentation allows referencing
+                                  an external resource for extended documentation.
+                                properties:
+                                  description:
+                                    type: string
+                                  url:
+                                    type: string
+                                type: object
+                              id:
+                                type: string
+                              properties:
+                                additionalProperties:
+                                  properties:
+                                    default:
+                                      description: default is a default value for
+                                        undefined object fields.
+                                      type: object
+                                      x-kubernetes-preserve-unknown-fields: true
+                                    deprecated:
+                                      type: boolean
+                                    description:
+                                      type: string
+                                    enum:
+                                      items:
+                                        description: 'JSON represents any valid JSON
+                                          value. These types are supported: bool,
+                                          int64, float64, string, []interface{}, map[string]interface{}
+                                          and nil.'
+                                        type: object
+                                        x-kubernetes-preserve-unknown-fields: true
+                                      type: array
+                                    example:
+                                      description: 'JSON represents any valid JSON
+                                        value. These types are supported: bool, int64,
+                                        float64, string, []interface{}, map[string]interface{}
+                                        and nil.'
+                                      type: object
+                                      x-kubernetes-preserve-unknown-fields: true
+                                    exclusiveMaximum:
+                                      type: boolean
+                                    exclusiveMinimum:
+                                      type: boolean
+                                    format:
+                                      description: "format is an OpenAPI v3 format
+                                        string. Unknown formats are ignored. The following
+                                        formats are validated: \n - bsonobjectid:
+                                        a bson object ID, i.e. a 24 characters hex
+                                        string - uri: an URI as parsed by Golang net/url.ParseRequestURI
+                                        - email: an email address as parsed by Golang
+                                        net/mail.ParseAddress - hostname: a valid
+                                        representation for an Internet host name,
+                                        as defined by RFC 1034, section 3.1 [RFC1034].
+                                        - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
+                                        - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
+                                        - cidr: a CIDR as parsed by Golang net.ParseCIDR
+                                        - mac: a MAC address as parsed by Golang net.ParseMAC
+                                        - uuid: an UUID that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                        - uuid3: an UUID3 that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                        - uuid4: an UUID4 that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                        - uuid5: an UUID5 that allows uppercase defined
+                                        by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                        - isbn: an ISBN10 or ISBN13 number string
+                                        like \"0321751043\" or \"978-0321751041\"
+                                        - isbn10: an ISBN10 number string like \"0321751043\"
+                                        - isbn13: an ISBN13 number string like \"978-0321751041\"
+                                        - creditcard: a credit card number defined
+                                        by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
+                                        with any non digit characters mixed in - ssn:
+                                        a U.S. social security number following the
+                                        regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$
+                                        - hexcolor: an hexadecimal color code like
+                                        \"#FFFFFF\" following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
+                                        - rgbcolor: an RGB color code like rgb like
+                                        \"rgb(255,255,255)\" - byte: base64 encoded
+                                        binary data - password: any kind of string
+                                        - date: a date string like \"2006-01-02\"
+                                        as defined by full-date in RFC3339 - duration:
+                                        a duration string like \"22 ns\" as parsed
+                                        by Golang time.ParseDuration or compatible
+                                        with Scala duration format - datetime: a date
+                                        time string like \"2014-12-15T19:30:20.000Z\"
+                                        as defined by date-time in RFC3339."
+                                      type: string
+                                    id:
+                                      type: string
+                                    maxItems:
+                                      format: int64
+                                      type: integer
+                                    maxLength:
+                                      format: int64
+                                      type: integer
+                                    maxProperties:
+                                      format: int64
+                                      type: integer
+                                    maximum:
+                                      description: A Number represents a JSON number
+                                        literal.
+                                      type: string
+                                    minItems:
+                                      format: int64
+                                      type: integer
+                                    minLength:
+                                      format: int64
+                                      type: integer
+                                    minProperties:
+                                      format: int64
+                                      type: integer
+                                    minimum:
+                                      description: A Number represents a JSON number
+                                        literal.
+                                      type: string
+                                    multipleOf:
+                                      description: A Number represents a JSON number
+                                        literal.
+                                      type: string
+                                    nullable:
+                                      type: boolean
+                                    pattern:
+                                      type: string
+                                    title:
+                                      type: string
+                                    type:
+                                      type: string
+                                    uniqueItems:
+                                      type: boolean
+                                    x-descriptors:
+                                      description: XDescriptors is a list of extended
+                                        properties that trigger a custom behavior
+                                        in external systems
+                                      items:
+                                        type: string
+                                      type: array
+                                  type: object
+                                type: object
+                              required:
+                                items:
+                                  type: string
+                                type: array
+                              title:
+                                type: string
+                              type:
+                                type: string
+                            type: object
+                          scheme:
+                            description: the data type component scheme
+                            type: string
+                        type: object
+                      description: one to many data type specifications
+                      type: object
+                  type: object
+                description: data specification types for the events consumed/produced
+                  by the Kamelet
+                type: object
+              definition:
+                description: defines the formal configuration of the Kamelet
+                properties:
+                  $schema:
+                    description: JSONSchemaURL represents a schema url.
+                    type: string
+                  description:
+                    type: string
+                  example:
+                    description: 'JSON represents any valid JSON value. These types
+                      are supported: bool, int64, float64, string, []interface{},
+                      map[string]interface{} and nil.'
+                    type: object
+                    x-kubernetes-preserve-unknown-fields: true
+                  externalDocs:
+                    description: ExternalDocumentation allows referencing an external
+                      resource for extended documentation.
+                    properties:
+                      description:
+                        type: string
+                      url:
+                        type: string
+                    type: object
+                  id:
+                    type: string
+                  properties:
+                    additionalProperties:
+                      properties:
+                        default:
+                          description: default is a default value for undefined object
+                            fields.
+                          type: object
+                          x-kubernetes-preserve-unknown-fields: true
+                        deprecated:
+                          type: boolean
+                        description:
+                          type: string
+                        enum:
+                          items:
+                            description: 'JSON represents any valid JSON value. These
+                              types are supported: bool, int64, float64, string, []interface{},
+                              map[string]interface{} and nil.'
+                            type: object
+                            x-kubernetes-preserve-unknown-fields: true
+                          type: array
+                        example:
+                          description: 'JSON represents any valid JSON value. These
+                            types are supported: bool, int64, float64, string, []interface{},
+                            map[string]interface{} and nil.'
+                          type: object
+                          x-kubernetes-preserve-unknown-fields: true
+                        exclusiveMaximum:
+                          type: boolean
+                        exclusiveMinimum:
+                          type: boolean
+                        format:
+                          description: "format is an OpenAPI v3 format string. Unknown
+                            formats are ignored. The following formats are validated:
+                            \n - bsonobjectid: a bson object ID, i.e. a 24 characters
+                            hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI
+                            - email: an email address as parsed by Golang net/mail.ParseAddress
+                            - hostname: a valid representation for an Internet host
+                            name, as defined by RFC 1034, section 3.1 [RFC1034]. -
+                            ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6:
+                            an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR
+                            as parsed by Golang net.ParseCIDR - mac: a MAC address
+                            as parsed by Golang net.ParseMAC - uuid: an UUID that
+                            allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                            - uuid3: an UUID3 that allows uppercase defined by the
+                            regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                            - uuid4: an UUID4 that allows uppercase defined by the
+                            regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                            - uuid5: an UUID5 that allows uppercase defined by the
+                            regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                            - isbn: an ISBN10 or ISBN13 number string like \"0321751043\"
+                            or \"978-0321751041\" - isbn10: an ISBN10 number string
+                            like \"0321751043\" - isbn13: an ISBN13 number string
+                            like \"978-0321751041\" - creditcard: a credit card number
+                            defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
+                            with any non digit characters mixed in - ssn: a U.S. social
+                            security number following the regex ^\\\\d{3}[- ]?\\\\d{2}[-
+                            ]?\\\\d{4}$ - hexcolor: an hexadecimal color code like
+                            \"#FFFFFF\" following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
+                            - rgbcolor: an RGB color code like rgb like \"rgb(255,255,255)\"
+                            - byte: base64 encoded binary data - password: any kind
+                            of string - date: a date string like \"2006-01-02\" as
+                            defined by full-date in RFC3339 - duration: a duration
+                            string like \"22 ns\" as parsed by Golang time.ParseDuration
+                            or compatible with Scala duration format - datetime: a
+                            date time string like \"2014-12-15T19:30:20.000Z\" as
+                            defined by date-time in RFC3339."
+                          type: string
+                        id:
+                          type: string
+                        maxItems:
+                          format: int64
+                          type: integer
+                        maxLength:
+                          format: int64
+                          type: integer
+                        maxProperties:
+                          format: int64
+                          type: integer
+                        maximum:
+                          description: A Number represents a JSON number literal.
+                          type: string
+                        minItems:
+                          format: int64
+                          type: integer
+                        minLength:
+                          format: int64
+                          type: integer
+                        minProperties:
+                          format: int64
+                          type: integer
+                        minimum:
+                          description: A Number represents a JSON number literal.
+                          type: string
+                        multipleOf:
+                          description: A Number represents a JSON number literal.
+                          type: string
+                        nullable:
+                          type: boolean
+                        pattern:
+                          type: string
+                        title:
+                          type: string
+                        type:
+                          type: string
+                        uniqueItems:
+                          type: boolean
+                        x-descriptors:
+                          description: XDescriptors is a list of extended properties
+                            that trigger a custom behavior in external systems
+                          items:
+                            type: string
+                          type: array
+                      type: object
+                    type: object
+                  required:
+                    items:
+                      type: string
+                    type: array
+                  title:
+                    type: string
+                  type:
+                    type: string
+                type: object
+              dependencies:
+                description: Camel dependencies needed by the Kamelet
+                items:
+                  type: string
+                type: array
+              sources:
+                description: sources in any Camel DSL supported
+                items:
+                  description: SourceSpec defines the configuration for one or more
+                    routes to be executed in a certain Camel DSL language
+                  properties:
+                    compression:
+                      description: if the content is compressed (base64 encrypted)
+                      type: boolean
+                    content:
+                      description: the source code (plain text)
+                      type: string
+                    contentKey:
+                      description: the confimap key holding the source content
+                      type: string
+                    contentRef:
+                      description: the confimap reference holding the source content
+                      type: string
+                    contentType:
+                      description: the content type (tipically text or binary)
+                      type: string
+                    interceptors:
+                      description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
+                        uses to pre/post process sources
+                      items:
+                        type: string
+                      type: array
+                    language:
+                      description: specify which is the language (Camel DSL) used
+                        to interpret this source code
+                      type: string
+                    loader:
+                      description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
+                        that will interpret this source at runtime
+                      type: string
+                    name:
+                      description: the name of the specification
+                      type: string
+                    path:
+                      description: the path where the file is stored
+                      type: string
+                    property-names:
+                      description: List of property names defined in the source (e.g.
+                        if type is "template")
+                      items:
+                        type: string
+                      type: array
+                    rawContent:
+                      description: the source code (binary)
+                      format: byte
+                      type: string
+                    type:
+                      description: Type defines the kind of source described by this
+                        object
+                      type: string
+                  type: object
+                type: array
+              template:
+                description: the main source in YAML DSL
+                type: object
+                x-kubernetes-preserve-unknown-fields: true
+              types:
+                additionalProperties:
+                  description: 'EventTypeSpec represents a specification for an event
+                    type Deprecated: In favor of using DataTypeSpec'
+                  properties:
+                    mediaType:
+                      description: media type as expected for HTTP media types (ie,
+                        application/json)
+                      type: string
+                    schema:
+                      description: the expected schema for the event
+                      properties:
+                        $schema:
+                          description: JSONSchemaURL represents a schema url.
+                          type: string
+                        description:
+                          type: string
+                        example:
+                          description: 'JSON represents any valid JSON value. These
+                            types are supported: bool, int64, float64, string, []interface{},
+                            map[string]interface{} and nil.'
+                          type: object
+                          x-kubernetes-preserve-unknown-fields: true
+                        externalDocs:
+                          description: ExternalDocumentation allows referencing an
+                            external resource for extended documentation.
+                          properties:
+                            description:
+                              type: string
+                            url:
+                              type: string
+                          type: object
+                        id:
+                          type: string
+                        properties:
+                          additionalProperties:
+                            properties:
+                              default:
+                                description: default is a default value for undefined
+                                  object fields.
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              deprecated:
+                                type: boolean
+                              description:
+                                type: string
+                              enum:
+                                items:
+                                  description: 'JSON represents any valid JSON value.
+                                    These types are supported: bool, int64, float64,
+                                    string, []interface{}, map[string]interface{}
+                                    and nil.'
+                                  type: object
+                                  x-kubernetes-preserve-unknown-fields: true
+                                type: array
+                              example:
+                                description: 'JSON represents any valid JSON value.
+                                  These types are supported: bool, int64, float64,
+                                  string, []interface{}, map[string]interface{} and
+                                  nil.'
+                                type: object
+                                x-kubernetes-preserve-unknown-fields: true
+                              exclusiveMaximum:
+                                type: boolean
+                              exclusiveMinimum:
+                                type: boolean
+                              format:
+                                description: "format is an OpenAPI v3 format string.
+                                  Unknown formats are ignored. The following formats
+                                  are validated: \n - bsonobjectid: a bson object
+                                  ID, i.e. a 24 characters hex string - uri: an URI
+                                  as parsed by Golang net/url.ParseRequestURI - email:
+                                  an email address as parsed by Golang net/mail.ParseAddress
+                                  - hostname: a valid representation for an Internet
+                                  host name, as defined by RFC 1034, section 3.1 [RFC1034].
+                                  - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
+                                  - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
+                                  - cidr: a CIDR as parsed by Golang net.ParseCIDR
+                                  - mac: a MAC address as parsed by Golang net.ParseMAC
+                                  - uuid: an UUID that allows uppercase defined by
+                                  the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                  - uuid3: an UUID3 that allows uppercase defined
+                                  by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+                                  - uuid4: an UUID4 that allows uppercase defined
+                                  by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                  - uuid5: an UUID5 that allows uppercase defined
+                                  by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+                                  - isbn: an ISBN10 or ISBN13 number string like \"0321751043\"
+                                  or \"978-0321751041\" - isbn10: an ISBN10 number
+                                  string like \"0321751043\" - isbn13: an ISBN13 number
+                                  string like \"978-0321751041\" - creditcard: a credit
+                                  card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
+                                  with any non digit characters mixed in - ssn: a
+                                  U.S. social security number following the regex
+                                  ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$ - hexcolor:
+                                  an hexadecimal color code like \"#FFFFFF\" following
+                                  the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ -
+                                  rgbcolor: an RGB color code like rgb like \"rgb(255,255,255)\"
+                                  - byte: base64 encoded binary data - password: any
+                                  kind of string - date: a date string like \"2006-01-02\"
+                                  as defined by full-date in RFC3339 - duration: a
+                                  duration string like \"22 ns\" as parsed by Golang
+                                  time.ParseDuration or compatible with Scala duration
+                                  format - datetime: a date time string like \"2014-12-15T19:30:20.000Z\"
+                                  as defined by date-time in RFC3339."
+                                type: string
+                              id:
+                                type: string
+                              maxItems:
+                                format: int64
+                                type: integer
+                              maxLength:
+                                format: int64
+                                type: integer
+                              maxProperties:
+                                format: int64
+                                type: integer
+                              maximum:
+                                description: A Number represents a JSON number literal.
+                                type: string
+                              minItems:
+                                format: int64
+                                type: integer
+                              minLength:
+                                format: int64
+                                type: integer
+                              minProperties:
+                                format: int64
+                                type: integer
+                              minimum:
+                                description: A Number represents a JSON number literal.
+                                type: string
+                              multipleOf:
+                                description: A Number represents a JSON number literal.
+                                type: string
+                              nullable:
+                                type: boolean
+                              pattern:
+                                type: string
+                              title:
+                                type: string
+                              type:
+                                type: string
+                              uniqueItems:
+                                type: boolean
+                              x-descriptors:
+                                description: XDescriptors is a list of extended properties
+                                  that trigger a custom behavior in external systems
+                                items:
+                                  type: string
+                                type: array
+                            type: object
+                          type: object
+                        required:
+                          items:
+                            type: string
+                          type: array
+                        title:
+                          type: string
+                        type:
+                          type: string
+                      type: object
+                  type: object
+                description: 'data specification types for the events consumed/produced
+                  by the Kamelet Deprecated: In favor of using DataTypes'
+                type: object
+            type: object
+          status:
+            description: the actual status of the resource
+            properties:
+              conditions:
+                description: Conditions --
+                items:
+                  description: KameletCondition describes the state of a resource
+                    at a certain point.
+                  properties:
+                    lastTransitionTime:
+                      description: Last time the condition transitioned from one status
+                        to another.
+                      format: date-time
+                      type: string
+                    lastUpdateTime:
+                      description: The last time this condition was updated.
+                      format: date-time
+                      type: string
+                    message:
+                      description: A human-readable message indicating details about
+                        the transition.
+                      type: string
+                    reason:
+                      description: The reason for the condition's last transition.
+                      type: string
+                    status:
+                      description: Status of the condition, one of True, False, Unknown.
+                      type: string
+                    type:
+                      description: Type of kamelet condition.
+                      type: string
+                  required:
+                  - status
+                  - type
+                  type: object
+                type: array
+              observedGeneration:
+                description: ObservedGeneration is the most recent generation observed
+                  for this Kamelet.
+                format: int64
+                type: integer
+              phase:
+                description: Phase --
+                type: string
+              properties:
+                description: Properties --
+                items:
+                  description: KameletProperty specify the behavior of a property
+                    in a Kamelet
+                  properties:
+                    default:
+                      description: the default value of the property (if any)
+                      type: string
+                    name:
+                      description: the name of the property
+                      type: string
+                  type: object
+                type: array
+            type: object
+        type: object
+    served: true
+    storage: true
+    subresources:
+      status: {}
   - additionalPrinterColumns:
     - description: The Kamelet phase
       jsonPath: .status.phase
@@ -730,6 +1437,6 @@ spec:
             type: object
         type: object
     served: true
-    storage: true
+    storage: false
     subresources:
       status: {}
diff --git a/pkg/apis/addtoscheme_camel_v1alpha1.go b/pkg/apis/addtoscheme_camel_v1alpha1.go
index 448bf2aec..8d2b7ae5f 100644
--- a/pkg/apis/addtoscheme_camel_v1alpha1.go
+++ b/pkg/apis/addtoscheme_camel_v1alpha1.go
@@ -17,9 +17,7 @@ limitations under the License.
 
 package apis
 
-import (
-	"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
-)
+import v1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
 
 func init() {
 	// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
diff --git a/pkg/apis/camel/v1alpha1/binding_types.go b/pkg/apis/camel/v1/binding_types.go
similarity index 97%
copy from pkg/apis/camel/v1alpha1/binding_types.go
copy to pkg/apis/camel/v1/binding_types.go
index 8e2857df5..a72b62160 100644
--- a/pkg/apis/camel/v1alpha1/binding_types.go
+++ b/pkg/apis/camel/v1/binding_types.go
@@ -15,13 +15,11 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package v1alpha1
+package v1
 
 import (
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 )
 
 // +genclient
@@ -48,7 +46,7 @@ type Binding struct {
 // BindingSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
 type BindingSpec struct {
 	// Integration is an optional integration used to specify custom parameters
-	Integration *v1.IntegrationSpec `json:"integration,omitempty"`
+	Integration *IntegrationSpec `json:"integration,omitempty"`
 	// Source is the starting point of the integration defined by this binding
 	Source Endpoint `json:"source,omitempty"`
 	// Sink is the destination of the integration defined by this binding
@@ -126,7 +124,7 @@ type BindingCondition struct {
 	// A human readable message indicating details about the transition.
 	Message string `json:"message,omitempty"`
 	// Pods collect health and conditions information from the owned PODs
-	Pods []v1.PodCondition `json:"pods,omitempty"`
+	Pods []PodCondition `json:"pods,omitempty"`
 }
 
 // BindingConditionType --
diff --git a/pkg/apis/camel/v1alpha1/binding_types_support.go b/pkg/apis/camel/v1/binding_types_support.go
similarity index 95%
copy from pkg/apis/camel/v1alpha1/binding_types_support.go
copy to pkg/apis/camel/v1/binding_types_support.go
index c44b8a2d3..8bd6347e6 100644
--- a/pkg/apis/camel/v1alpha1/binding_types_support.go
+++ b/pkg/apis/camel/v1/binding_types_support.go
@@ -15,21 +15,20 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package v1alpha1
+package v1
 
 import (
 	"bytes"
 	"encoding/json"
 	"fmt"
 
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 // GetConditions --
-func (in *BindingStatus) GetConditions() []v1.ResourceCondition {
-	res := make([]v1.ResourceCondition, 0, len(in.Conditions))
+func (in *BindingStatus) GetConditions() []ResourceCondition {
+	res := make([]ResourceCondition, 0, len(in.Conditions))
 	for _, c := range in.Conditions {
 		res = append(res, c)
 	}
@@ -68,7 +67,7 @@ func (c BindingCondition) GetMessage() string {
 
 // SetOperatorID sets the given operator id as an annotation
 func (in *Binding) SetOperatorID(operatorID string) {
-	v1.SetAnnotation(&in.ObjectMeta, v1.OperatorIDAnnotation, operatorID)
+	SetAnnotation(&in.ObjectMeta, OperatorIDAnnotation, operatorID)
 }
 
 // GetCondition returns the condition with the provided type.
diff --git a/pkg/apis/camel/v1alpha1/binding_types_support_test.go b/pkg/apis/camel/v1/binding_types_support_test.go
similarity index 98%
copy from pkg/apis/camel/v1alpha1/binding_types_support_test.go
copy to pkg/apis/camel/v1/binding_types_support_test.go
index ac77de187..334bd2d2a 100644
--- a/pkg/apis/camel/v1alpha1/binding_types_support_test.go
+++ b/pkg/apis/camel/v1/binding_types_support_test.go
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package v1alpha1
+package v1
 
 import (
 	"encoding/json"
diff --git a/pkg/apis/camel/v1/common_types_support.go b/pkg/apis/camel/v1/common_types_support.go
index 1726b5c4b..d16aeaee1 100644
--- a/pkg/apis/camel/v1/common_types_support.go
+++ b/pkg/apis/camel/v1/common_types_support.go
@@ -116,6 +116,21 @@ func (m *RawMessage) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
+// String returns a string representation of RawMessage
+func (m *RawMessage) String() string {
+	if m == nil {
+		return ""
+	}
+	b, err := m.MarshalJSON()
+	if err != nil {
+		return ""
+	}
+	return string(b)
+}
+
+var _ json.Marshaler = (*RawMessage)(nil)
+var _ json.Unmarshaler = (*RawMessage)(nil)
+
 // GetOperatorIDAnnotation to safely get the operator id annotation value.
 func GetOperatorIDAnnotation(obj metav1.Object) string {
 	if obj == nil || obj.GetAnnotations() == nil {
diff --git a/pkg/apis/camel/v1/error_handler_types.go b/pkg/apis/camel/v1/error_handler_types.go
new file mode 100644
index 000000000..14a3721cd
--- /dev/null
+++ b/pkg/apis/camel/v1/error_handler_types.go
@@ -0,0 +1,55 @@
+/*
+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 v1
+
+const (
+	// ErrorHandlerRefName the reference name to use when looking for an error handler
+	ErrorHandlerRefName = "camel.k.errorHandler.ref"
+	// ErrorHandlerRefDefaultName the default name of the error handler
+	ErrorHandlerRefDefaultName = "defaultErrorHandler"
+	// ErrorHandlerAppPropertiesPrefix the prefix used for the error handler bean
+	ErrorHandlerAppPropertiesPrefix = "camel.beans.defaultErrorHandler"
+)
+
+// ErrorHandlerSpec represents an unstructured object for an error handler
+type ErrorHandlerSpec struct {
+	RawMessage `json:",inline,omitempty"`
+}
+
+// ErrorHandlerParameters represent an unstructured object for error handler parameters
+type ErrorHandlerParameters struct {
+	RawMessage `json:",inline,omitempty"`
+}
+
+// BeanProperties represent an unstructured object properties to be set on a bean
+type BeanProperties struct {
+	RawMessage `json:",inline,omitempty"`
+}
+
+// ErrorHandlerType a type of error handler (ie, sink)
+type ErrorHandlerType string
+
+const (
+	errorHandlerTypeBase ErrorHandlerType = ""
+	// ErrorHandlerTypeNone used to ignore any error event
+	ErrorHandlerTypeNone ErrorHandlerType = "none"
+	// ErrorHandlerTypeLog used to log the event producing the error
+	ErrorHandlerTypeLog ErrorHandlerType = "log"
+	// ErrorHandlerTypeSink used to send the event to a further sink (for future processing). This was previously known as dead-letter-channel.
+	ErrorHandlerTypeSink ErrorHandlerType = "sink"
+)
diff --git a/pkg/apis/camel/v1/error_handler_types_support.go b/pkg/apis/camel/v1/error_handler_types_support.go
new file mode 100644
index 000000000..a0aa93cd4
--- /dev/null
+++ b/pkg/apis/camel/v1/error_handler_types_support.go
@@ -0,0 +1,128 @@
+/*
+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 v1
+
+import (
+	"encoding/json"
+)
+
+// +kubebuilder:object:generate=false
+
+// ErrorHandler is a generic interface that represent any type of error handler specification
+type ErrorHandler interface {
+	Type() ErrorHandlerType
+	Endpoint() *Endpoint
+	Configuration() (map[string]interface{}, error)
+}
+
+// baseErrorHandler is the base used for the Error Handler hierarchy
+type baseErrorHandler struct {
+}
+
+// Type --
+func (e baseErrorHandler) Type() ErrorHandlerType {
+	return errorHandlerTypeBase
+}
+
+// Endpoint --
+func (e baseErrorHandler) Endpoint() *Endpoint {
+	return nil
+}
+
+// Configuration --
+func (e baseErrorHandler) Configuration() (map[string]interface{}, error) {
+	return nil, nil
+}
+
+// ErrorHandlerNone --
+type ErrorHandlerNone struct {
+	baseErrorHandler
+}
+
+// Type --
+func (e ErrorHandlerNone) Type() ErrorHandlerType {
+	return ErrorHandlerTypeNone
+}
+
+// Configuration --
+func (e ErrorHandlerNone) Configuration() (map[string]interface{}, error) {
+	return map[string]interface{}{
+		ErrorHandlerAppPropertiesPrefix: "#class:org.apache.camel.builder.NoErrorHandlerBuilder",
+		ErrorHandlerRefName:             ErrorHandlerRefDefaultName,
+	}, nil
+}
+
+// ErrorHandlerLog represent a default (log) error handler type
+type ErrorHandlerLog struct {
+	ErrorHandlerNone
+	Parameters *ErrorHandlerParameters `json:"parameters,omitempty"`
+}
+
+// Type --
+func (e ErrorHandlerLog) Type() ErrorHandlerType {
+	return ErrorHandlerTypeLog
+}
+
+// Configuration --
+func (e ErrorHandlerLog) Configuration() (map[string]interface{}, error) {
+	properties, err := e.ErrorHandlerNone.Configuration()
+	if err != nil {
+		return nil, err
+	}
+	properties[ErrorHandlerAppPropertiesPrefix] = "#class:org.apache.camel.builder.DefaultErrorHandlerBuilder"
+
+	if e.Parameters != nil {
+		var parameters map[string]interface{}
+		err := json.Unmarshal(e.Parameters.RawMessage, &parameters)
+		if err != nil {
+			return nil, err
+		}
+		for key, value := range parameters {
+			properties[ErrorHandlerAppPropertiesPrefix+"."+key] = value
+		}
+	}
+
+	return properties, nil
+}
+
+// ErrorHandlerSink represents a sink error handler type which behave like a dead letter channel
+type ErrorHandlerSink struct {
+	ErrorHandlerLog
+	DLCEndpoint *Endpoint `json:"endpoint,omitempty"`
+}
+
+// Type --
+func (e ErrorHandlerSink) Type() ErrorHandlerType {
+	return ErrorHandlerTypeSink
+}
+
+// Endpoint --
+func (e ErrorHandlerSink) Endpoint() *Endpoint {
+	return e.DLCEndpoint
+}
+
+// Configuration --
+func (e ErrorHandlerSink) Configuration() (map[string]interface{}, error) {
+	properties, err := e.ErrorHandlerLog.Configuration()
+	if err != nil {
+		return nil, err
+	}
+	properties[ErrorHandlerAppPropertiesPrefix] = "#class:org.apache.camel.builder.DeadLetterChannelBuilder"
+
+	return properties, err
+}
diff --git a/pkg/apis/camel/v1/jsonschema_types.go b/pkg/apis/camel/v1/jsonschema_types.go
new file mode 100644
index 000000000..41d70a70b
--- /dev/null
+++ b/pkg/apis/camel/v1/jsonschema_types.go
@@ -0,0 +1,108 @@
+/*
+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.
+*/
+
+// NOTE: this file has been originally copied from https://github.com/kubernetes/apiextensions-apiserver/blob/33bb2d8b009bae408e40818a93877459efeb4cb1/pkg/apis/apiextensions/v1/types_jsonschema.go
+
+package v1
+
+import (
+	"encoding/json"
+)
+
+type JSONSchemaProp struct {
+	ID          string `json:"id,omitempty"`
+	Deprecated  bool   `json:"deprecated,omitempty"`
+	Description string `json:"description,omitempty"`
+	Type        string `json:"type,omitempty"`
+	// format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
+	//
+	// - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
+	// - uri: an URI as parsed by Golang net/url.ParseRequestURI
+	// - email: an email address as parsed by Golang net/mail.ParseAddress
+	// - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
+	// - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
+	// - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
+	// - cidr: a CIDR as parsed by Golang net.ParseCIDR
+	// - mac: a MAC address as parsed by Golang net.ParseMAC
+	// - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+	// - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
+	// - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+	// - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
+	// - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
+	// - isbn10: an ISBN10 number string like "0321751043"
+	// - isbn13: an ISBN13 number string like "978-0321751041"
+	// - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in
+	// - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$
+	// - hexcolor: an hexadecimal color code like "#FFFFFF" following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
+	// - rgbcolor: an RGB color code like rgb like "rgb(255,255,255)"
+	// - byte: base64 encoded binary data
+	// - password: any kind of string
+	// - date: a date string like "2006-01-02" as defined by full-date in RFC3339
+	// - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
+	// - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
+	Format string `json:"format,omitempty"`
+	Title  string `json:"title,omitempty"`
+	// default is a default value for undefined object fields.
+	Default          *JSON        `json:"default,omitempty"`
+	Maximum          *json.Number `json:"maximum,omitempty"`
+	ExclusiveMaximum bool         `json:"exclusiveMaximum,omitempty"`
+	Minimum          *json.Number `json:"minimum,omitempty"`
+	ExclusiveMinimum bool         `json:"exclusiveMinimum,omitempty"`
+	MaxLength        *int64       `json:"maxLength,omitempty"`
+	MinLength        *int64       `json:"minLength,omitempty"`
+	Pattern          string       `json:"pattern,omitempty"`
+	MaxItems         *int64       `json:"maxItems,omitempty"`
+	MinItems         *int64       `json:"minItems,omitempty"`
+	UniqueItems      bool         `json:"uniqueItems,omitempty"`
+	MaxProperties    *int64       `json:"maxProperties,omitempty"`
+	MinProperties    *int64       `json:"minProperties,omitempty"`
+	MultipleOf       *json.Number `json:"multipleOf,omitempty"`
+	Enum             []JSON       `json:"enum,omitempty"`
+	Example          *JSON        `json:"example,omitempty"`
+	Nullable         bool         `json:"nullable,omitempty"`
+	// XDescriptors is a list of extended properties that trigger a custom behavior in external systems
+	XDescriptors []string `json:"x-descriptors,omitempty"`
+}
+
+// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
+type JSONSchemaProps struct {
+	ID           string                    `json:"id,omitempty"`
+	Description  string                    `json:"description,omitempty"`
+	Title        string                    `json:"title,omitempty"`
+	Properties   map[string]JSONSchemaProp `json:"properties,omitempty"`
+	Required     []string                  `json:"required,omitempty"`
+	Example      *JSON                     `json:"example,omitempty"`
+	ExternalDocs *ExternalDocumentation    `json:"externalDocs,omitempty"`
+	Schema       JSONSchemaURL             `json:"$schema,omitempty"`
+	Type         string                    `json:"type,omitempty"`
+}
+
+// +kubebuilder:validation:Type=""
+// JSON represents any valid JSON value.
+// These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
+type JSON struct {
+	RawMessage `json:",inline"`
+}
+
+// JSONSchemaURL represents a schema url.
+type JSONSchemaURL string
+
+// ExternalDocumentation allows referencing an external resource for extended documentation.
+type ExternalDocumentation struct {
+	Description string `json:"description,omitempty"`
+	URL         string `json:"url,omitempty"`
+}
diff --git a/pkg/apis/camel/v1/kamelet_types.go b/pkg/apis/camel/v1/kamelet_types.go
new file mode 100644
index 000000000..9d224b8fd
--- /dev/null
+++ b/pkg/apis/camel/v1/kamelet_types.go
@@ -0,0 +1,234 @@
+/*
+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 v1
+
+import (
+	corev1 "k8s.io/api/core/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+const (
+	// AnnotationIcon label used by icons
+	AnnotationIcon = "camel.apache.org/kamelet.icon"
+	// KameletBundledLabel label used by bundling
+	KameletBundledLabel = "camel.apache.org/kamelet.bundled"
+	// KameletReadOnlyLabel label used to identify readonly Kamelets
+	KameletReadOnlyLabel = "camel.apache.org/kamelet.readonly"
+	// KameletTypeLabel label used to identify Kamelet type
+	KameletTypeLabel = "camel.apache.org/kamelet.type"
+	// KameletGroupLabel label used to group Kamelets
+	KameletGroupLabel = "camel.apache.org/kamelet.group"
+
+	// KameletTypeSink type Sink
+	KameletTypeSink = "sink"
+	// KameletTypeSource type Source
+	KameletTypeSource = "source"
+	// KameletTypeAction type Action
+	KameletTypeAction = "action"
+)
+
+var (
+	// reservedKameletNames used to mark reserved names
+	reservedKameletNames = map[string]bool{"source": true, "sink": true}
+	// KameletIDProperty used to identify
+	KameletIDProperty = "id"
+)
+
+// +genclient
+// +kubebuilder:object:root=true
+// +kubebuilder:storageversion
+// +kubebuilder:resource:path=kamelets,scope=Namespaced,shortName=kl,categories=kamel;camel
+// +kubebuilder:subresource:status
+// +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`,description="The Kamelet phase"
+
+// Kamelet is the Schema for the kamelets API
+type Kamelet struct {
+	metav1.TypeMeta   `json:",inline"`
+	metav1.ObjectMeta `json:"metadata,omitempty"`
+
+	// the desired specification
+	Spec KameletSpec `json:"spec,omitempty"`
+	// the actual status of the resource
+	Status KameletStatus `json:"status,omitempty"`
+}
+
+// KameletSpec specifies the configuration required to execute a Kamelet
+type KameletSpec struct {
+	// defines the formal configuration of the Kamelet
+	Definition *JSONSchemaProps `json:"definition,omitempty"`
+	// sources in any Camel DSL supported
+	Sources []SourceSpec `json:"sources,omitempty"`
+	// the main source in YAML DSL
+	Template *Template `json:"template,omitempty"`
+	// data specification types for the events consumed/produced by the Kamelet
+	// Deprecated: In favor of using DataTypes
+	Types map[TypeSlot]EventTypeSpec `json:"types,omitempty"`
+	// data specification types for the events consumed/produced by the Kamelet
+	DataTypes map[TypeSlot]DataTypesSpec `json:"dataTypes,omitempty"`
+	// Camel dependencies needed by the Kamelet
+	Dependencies []string `json:"dependencies,omitempty"`
+}
+
+// Template is an unstructured object representing a Kamelet template in YAML/JSON DSL
+type Template struct {
+	// an unstructured raw message
+	RawMessage `json:",inline"`
+}
+
+// TypeSlot represent a kind of data (ie, input, output, ...)
+type TypeSlot string
+
+const (
+	// TypeSlotIn is used for the input events
+	TypeSlotIn TypeSlot = "in"
+	// TypeSlotOut is used for the output events
+	TypeSlotOut TypeSlot = "out"
+	// TypeSlotError is used for the error events
+	TypeSlotError TypeSlot = "error"
+)
+
+// EventTypeSpec represents a specification for an event type
+// Deprecated: In favor of using DataTypeSpec
+type EventTypeSpec struct {
+	// media type as expected for HTTP media types (ie, application/json)
+	MediaType string `json:"mediaType,omitempty"`
+	// the expected schema for the event
+	Schema *JSONSchemaProps `json:"schema,omitempty"`
+}
+
+// DataTypesSpec represents the specification for a set of data types
+type DataTypesSpec struct {
+	// the default data type for this Kamelet
+	Default string `json:"default,omitempty"`
+	// one to many data type specifications
+	Types map[string]DataTypeSpec `json:"types,omitempty"`
+	// one to many header specifications
+	Headers map[string]HeaderSpec `json:"headers,omitempty"`
+}
+
+// DataTypeSpec represents the specification for a data type
+type DataTypeSpec struct {
+	// the data type component scheme
+	Scheme string `json:"scheme,omitempty"`
+	// the data type format name
+	Format string `json:"format,omitempty"`
+	// optional description
+	Description string `json:"description,omitempty"`
+	// media type as expected for HTTP media types (ie, application/json)
+	MediaType string `json:"mediaType,omitempty"`
+	// the list of Camel or Maven dependencies required by the data type
+	Dependencies []string `json:"dependencies,omitempty"`
+	// one to many header specifications
+	Headers map[string]HeaderSpec `json:"headers,omitempty"`
+	// the expected schema for the data type
+	Schema *JSONSchemaProps `json:"schema,omitempty"`
+}
+
+// DataTypeReference references to the specification of a data type by its scheme and format name
+type DataTypeReference struct {
+	// the data type component scheme
+	Scheme string `json:"scheme,omitempty"`
+	// the data type format name
+	Format string `json:"format,omitempty"`
+}
+
+// HeaderSpec represents the specification for a header used in the Kamelet
+type HeaderSpec struct {
+	Type        string `json:"type,omitempty"`
+	Title       string `json:"title,omitempty"`
+	Description string `json:"description,omitempty"`
+	Required    bool   `json:"required,omitempty"`
+	Default     string `json:"default,omitempty"`
+}
+
+// KameletStatus defines the observed state of Kamelet
+type KameletStatus struct {
+	// ObservedGeneration is the most recent generation observed for this Kamelet.
+	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
+	// Phase --
+	Phase KameletPhase `json:"phase,omitempty"`
+	// Conditions --
+	Conditions []KameletCondition `json:"conditions,omitempty"`
+	// Properties --
+	Properties []KameletProperty `json:"properties,omitempty"`
+}
+
+// KameletProperty specify the behavior of a property in a Kamelet
+type KameletProperty struct {
+	// the name of the property
+	Name string `json:"name,omitempty"`
+	// the default value of the property (if any)
+	Default string `json:"default,omitempty"`
+}
+
+// KameletCondition describes the state of a resource at a certain point.
+type KameletCondition struct {
+	// Type of kamelet condition.
+	Type KameletConditionType `json:"type"`
+	// Status of the condition, one of True, False, Unknown.
+	Status corev1.ConditionStatus `json:"status"`
+	// The last time this condition was updated.
+	LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"`
+	// Last time the condition transitioned from one status to another.
+	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
+	// The reason for the condition's last transition.
+	Reason string `json:"reason,omitempty"`
+	// A human-readable message indicating details about the transition.
+	Message string `json:"message,omitempty"`
+}
+
+// KameletConditionType --
+type KameletConditionType string
+
+const (
+	// KameletConditionReady --
+	KameletConditionReady KameletConditionType = "Ready"
+)
+
+const (
+	// KameletConditionReasonInvalidName --
+	KameletConditionReasonInvalidName string = "InvalidName"
+	// KameletConditionReasonInvalidProperty --
+	KameletConditionReasonInvalidProperty string = "InvalidProperty"
+	// KameletConditionReasonInvalidTemplate --
+	KameletConditionReasonInvalidTemplate string = "InvalidTemplate"
+)
+
+// KameletPhase --
+type KameletPhase string
+
+const (
+	// KameletKind --
+	KameletKind string = "Kamelet"
+
+	// KameletPhaseNone --
+	KameletPhaseNone KameletPhase = ""
+	// KameletPhaseReady --
+	KameletPhaseReady KameletPhase = "Ready"
+	// KameletPhaseError --
+	KameletPhaseError KameletPhase = "Error"
+)
+
+// +kubebuilder:object:root=true
+
+// KameletList contains a list of Kamelet
+type KameletList struct {
+	metav1.TypeMeta `json:",inline"`
+	metav1.ListMeta `json:"metadata,omitempty"`
+	Items           []Kamelet `json:"items"`
+}
diff --git a/pkg/apis/camel/v1alpha1/binding_types_support.go b/pkg/apis/camel/v1/kamelet_types_support.go
similarity index 59%
copy from pkg/apis/camel/v1alpha1/binding_types_support.go
copy to pkg/apis/camel/v1/kamelet_types_support.go
index c44b8a2d3..c918a84eb 100644
--- a/pkg/apis/camel/v1alpha1/binding_types_support.go
+++ b/pkg/apis/camel/v1/kamelet_types_support.go
@@ -15,21 +15,18 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package v1alpha1
+package v1
 
 import (
-	"bytes"
-	"encoding/json"
-	"fmt"
+	"sort"
 
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 // GetConditions --
-func (in *BindingStatus) GetConditions() []v1.ResourceCondition {
-	res := make([]v1.ResourceCondition, 0, len(in.Conditions))
+func (in *KameletStatus) GetConditions() []ResourceCondition {
+	res := make([]ResourceCondition, 0, len(in.Conditions))
 	for _, c := range in.Conditions {
 		res = append(res, c)
 	}
@@ -37,42 +34,37 @@ func (in *BindingStatus) GetConditions() []v1.ResourceCondition {
 }
 
 // GetType --
-func (c BindingCondition) GetType() string {
+func (c KameletCondition) GetType() string {
 	return string(c.Type)
 }
 
 // GetStatus --
-func (c BindingCondition) GetStatus() corev1.ConditionStatus {
+func (c KameletCondition) GetStatus() corev1.ConditionStatus {
 	return c.Status
 }
 
 // GetLastUpdateTime --
-func (c BindingCondition) GetLastUpdateTime() metav1.Time {
+func (c KameletCondition) GetLastUpdateTime() metav1.Time {
 	return c.LastUpdateTime
 }
 
 // GetLastTransitionTime --
-func (c BindingCondition) GetLastTransitionTime() metav1.Time {
+func (c KameletCondition) GetLastTransitionTime() metav1.Time {
 	return c.LastTransitionTime
 }
 
 // GetReason --
-func (c BindingCondition) GetReason() string {
+func (c KameletCondition) GetReason() string {
 	return c.Reason
 }
 
 // GetMessage --
-func (c BindingCondition) GetMessage() string {
+func (c KameletCondition) GetMessage() string {
 	return c.Message
 }
 
-// SetOperatorID sets the given operator id as an annotation
-func (in *Binding) SetOperatorID(operatorID string) {
-	v1.SetAnnotation(&in.ObjectMeta, v1.OperatorIDAnnotation, operatorID)
-}
-
 // GetCondition returns the condition with the provided type.
-func (in *BindingStatus) GetCondition(condType BindingConditionType) *BindingCondition {
+func (in *KameletStatus) GetCondition(condType KameletConditionType) *KameletCondition {
 	for i := range in.Conditions {
 		c := in.Conditions[i]
 		if c.Type == condType {
@@ -83,8 +75,8 @@ func (in *BindingStatus) GetCondition(condType BindingConditionType) *BindingCon
 }
 
 // SetCondition --
-func (in *BindingStatus) SetCondition(condType BindingConditionType, status corev1.ConditionStatus, reason string, message string) {
-	in.SetConditions(BindingCondition{
+func (in *KameletStatus) SetCondition(condType KameletConditionType, status corev1.ConditionStatus, reason string, message string) {
+	in.SetConditions(KameletCondition{
 		Type:               condType,
 		Status:             status,
 		LastUpdateTime:     metav1.Now(),
@@ -95,8 +87,8 @@ func (in *BindingStatus) SetCondition(condType BindingConditionType, status core
 }
 
 // SetErrorCondition --
-func (in *BindingStatus) SetErrorCondition(condType BindingConditionType, reason string, err error) {
-	in.SetConditions(BindingCondition{
+func (in *KameletStatus) SetErrorCondition(condType KameletConditionType, reason string, err error) {
+	in.SetConditions(KameletCondition{
 		Type:               condType,
 		Status:             corev1.ConditionFalse,
 		LastUpdateTime:     metav1.Now(),
@@ -110,7 +102,7 @@ func (in *BindingStatus) SetErrorCondition(condType BindingConditionType, reason
 //
 // If a condition that we are about to add already exists and has the same status and
 // reason then we are not going to update.
-func (in *BindingStatus) SetConditions(conditions ...BindingCondition) {
+func (in *KameletStatus) SetConditions(conditions ...KameletCondition) {
 	for _, condition := range conditions {
 		if condition.LastUpdateTime.IsZero() {
 			condition.LastUpdateTime = metav1.Now()
@@ -135,7 +127,7 @@ func (in *BindingStatus) SetConditions(conditions ...BindingCondition) {
 }
 
 // RemoveCondition removes the resource condition with the provided type.
-func (in *BindingStatus) RemoveCondition(condType BindingConditionType) {
+func (in *KameletStatus) RemoveCondition(condType KameletConditionType) {
 	newConditions := in.Conditions[:0]
 	for _, c := range in.Conditions {
 		if c.Type != condType {
@@ -146,35 +138,65 @@ func (in *BindingStatus) RemoveCondition(condType BindingConditionType) {
 	in.Conditions = newConditions
 }
 
-// GetPropertyMap returns the EndpointProperties as map
-func (p *EndpointProperties) GetPropertyMap() (map[string]string, error) {
-	if p == nil {
-		return nil, nil
+// SortedDefinitionPropertiesKeys returns the sorted keys of the Kamelet definition properties
+func (k *Kamelet) SortedDefinitionPropertiesKeys() []string {
+	if k.Spec.Definition == nil {
+		return []string{}
+	}
+	props := k.Spec.Definition.Properties
+	if len(props) == 0 {
+		return []string{}
+	}
+	res := make([]string, len(props))
+	i := 0
+	for key := range props {
+		res[i] = string(key)
+		i++
 	}
-	if len(p.RawMessage) == 0 {
-		return nil, nil
+	sort.Strings(res)
+	return res
+}
+
+// SortedTypesKeys returns the sorted keys of the Kamelet spec types
+func (k *Kamelet) SortedTypesKeys() []TypeSlot {
+	types := k.Spec.DataTypes
+	if len(types) == 0 {
+		return []TypeSlot{}
 	}
+	strs := make([]string, len(types))
+	i := 0
+	for key := range types {
+		strs[i] = string(key)
+		i++
+	}
+	sort.Strings(strs)
+	res := make([]TypeSlot, len(types))
+	for i, s := range strs {
+		res[i] = TypeSlot(s)
+	}
+	return res
+}
+
+func ValidKameletName(name string) bool {
+	return !reservedKameletNames[name]
+}
 
-	// Convert json property values to objects before getting their string representation
-	var props map[string]interface{}
-	d := json.NewDecoder(bytes.NewReader(p.RawMessage))
-	d.UseNumber()
-	if err := d.Decode(&props); err != nil {
-		return nil, err
+func ValidKameletProperties(kamelet *Kamelet) bool {
+	if kamelet == nil || kamelet.Spec.Definition == nil || kamelet.Spec.Definition.Properties == nil {
+		return true
 	}
-	stringProps := make(map[string]string, len(props))
-	for k, v := range props {
-		stringProps[k] = fmt.Sprintf("%v", v)
+	if _, idPresent := kamelet.Spec.Definition.Properties[KameletIDProperty]; idPresent {
+		return false
 	}
-	return stringProps, nil
+	return true
 }
 
-// NewBinding --
-func NewBinding(namespace string, name string) Binding {
-	return Binding{
+// NewKamelet creates a new kamelet
+func NewKamelet(namespace string, name string) Kamelet {
+	return Kamelet{
 		TypeMeta: metav1.TypeMeta{
 			APIVersion: SchemeGroupVersion.String(),
-			Kind:       BindingKind,
+			Kind:       KameletKind,
 		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: namespace,
@@ -183,12 +205,12 @@ func NewBinding(namespace string, name string) Binding {
 	}
 }
 
-// NewBindingList --
-func NewBindingList() BindingList {
-	return BindingList{
+// NewKameletList creates a new list of kamelets
+func NewKameletList() KameletList {
+	return KameletList{
 		TypeMeta: metav1.TypeMeta{
 			APIVersion: SchemeGroupVersion.String(),
-			Kind:       BindingKind,
+			Kind:       KameletKind,
 		},
 	}
 }
diff --git a/pkg/apis/camel/v1/register.go b/pkg/apis/camel/v1/register.go
index 7f02c944b..205e4c58b 100644
--- a/pkg/apis/camel/v1/register.go
+++ b/pkg/apis/camel/v1/register.go
@@ -57,6 +57,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
 		&CamelCatalogList{},
 		&Build{},
 		&BuildList{},
+		&Kamelet{},
+		&KameletList{},
+		&Binding{},
+		&BindingList{},
 	)
 	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
 	return nil
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index f7b543f17..2af39bb18 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -6,6 +6,7 @@
 package v1
 
 import (
+	"encoding/json"
 	"github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -62,6 +63,175 @@ func (in *BaseTask) DeepCopy() *BaseTask {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BeanProperties) DeepCopyInto(out *BeanProperties) {
+	*out = *in
+	if in.RawMessage != nil {
+		in, out := &in.RawMessage, &out.RawMessage
+		*out = make(RawMessage, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BeanProperties.
+func (in *BeanProperties) DeepCopy() *BeanProperties {
+	if in == nil {
+		return nil
+	}
+	out := new(BeanProperties)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Binding) DeepCopyInto(out *Binding) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+	in.Spec.DeepCopyInto(&out.Spec)
+	in.Status.DeepCopyInto(&out.Status)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binding.
+func (in *Binding) DeepCopy() *Binding {
+	if in == nil {
+		return nil
+	}
+	out := new(Binding)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *Binding) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BindingCondition) DeepCopyInto(out *BindingCondition) {
+	*out = *in
+	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
+	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+	if in.Pods != nil {
+		in, out := &in.Pods, &out.Pods
+		*out = make([]PodCondition, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingCondition.
+func (in *BindingCondition) DeepCopy() *BindingCondition {
+	if in == nil {
+		return nil
+	}
+	out := new(BindingCondition)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BindingList) DeepCopyInto(out *BindingList) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ListMeta.DeepCopyInto(&out.ListMeta)
+	if in.Items != nil {
+		in, out := &in.Items, &out.Items
+		*out = make([]Binding, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingList.
+func (in *BindingList) DeepCopy() *BindingList {
+	if in == nil {
+		return nil
+	}
+	out := new(BindingList)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *BindingList) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BindingSpec) DeepCopyInto(out *BindingSpec) {
+	*out = *in
+	if in.Integration != nil {
+		in, out := &in.Integration, &out.Integration
+		*out = new(IntegrationSpec)
+		(*in).DeepCopyInto(*out)
+	}
+	in.Source.DeepCopyInto(&out.Source)
+	in.Sink.DeepCopyInto(&out.Sink)
+	if in.ErrorHandler != nil {
+		in, out := &in.ErrorHandler, &out.ErrorHandler
+		*out = new(ErrorHandlerSpec)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.Steps != nil {
+		in, out := &in.Steps, &out.Steps
+		*out = make([]Endpoint, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Replicas != nil {
+		in, out := &in.Replicas, &out.Replicas
+		*out = new(int32)
+		**out = **in
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingSpec.
+func (in *BindingSpec) DeepCopy() *BindingSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(BindingSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BindingStatus) DeepCopyInto(out *BindingStatus) {
+	*out = *in
+	if in.Conditions != nil {
+		in, out := &in.Conditions, &out.Conditions
+		*out = make([]BindingCondition, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Replicas != nil {
+		in, out := &in.Replicas, &out.Replicas
+		*out = new(int32)
+		**out = **in
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingStatus.
+func (in *BindingStatus) DeepCopy() *BindingStatus {
+	if in == nil {
+		return nil
+	}
+	out := new(BindingStatus)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *Build) DeepCopyInto(out *Build) {
 	*out = *in
@@ -556,36 +726,309 @@ func (in *Capability) DeepCopy() *Capability {
 }
 
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ConfigurationSpec) DeepCopyInto(out *ConfigurationSpec) {
+func (in *ConfigurationSpec) DeepCopyInto(out *ConfigurationSpec) {
+	*out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationSpec.
+func (in *ConfigurationSpec) DeepCopy() *ConfigurationSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(ConfigurationSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DataSpec) DeepCopyInto(out *DataSpec) {
+	*out = *in
+	if in.RawContent != nil {
+		in, out := &in.RawContent, &out.RawContent
+		*out = make([]byte, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataSpec.
+func (in *DataSpec) DeepCopy() *DataSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(DataSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DataTypeReference) DeepCopyInto(out *DataTypeReference) {
+	*out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataTypeReference.
+func (in *DataTypeReference) DeepCopy() *DataTypeReference {
+	if in == nil {
+		return nil
+	}
+	out := new(DataTypeReference)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DataTypeSpec) DeepCopyInto(out *DataTypeSpec) {
+	*out = *in
+	if in.Dependencies != nil {
+		in, out := &in.Dependencies, &out.Dependencies
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.Headers != nil {
+		in, out := &in.Headers, &out.Headers
+		*out = make(map[string]HeaderSpec, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+	if in.Schema != nil {
+		in, out := &in.Schema, &out.Schema
+		*out = new(JSONSchemaProps)
+		(*in).DeepCopyInto(*out)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataTypeSpec.
+func (in *DataTypeSpec) DeepCopy() *DataTypeSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(DataTypeSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DataTypesSpec) DeepCopyInto(out *DataTypesSpec) {
+	*out = *in
+	if in.Types != nil {
+		in, out := &in.Types, &out.Types
+		*out = make(map[string]DataTypeSpec, len(*in))
+		for key, val := range *in {
+			(*out)[key] = *val.DeepCopy()
+		}
+	}
+	if in.Headers != nil {
+		in, out := &in.Headers, &out.Headers
+		*out = make(map[string]HeaderSpec, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataTypesSpec.
+func (in *DataTypesSpec) DeepCopy() *DataTypesSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(DataTypesSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Endpoint) DeepCopyInto(out *Endpoint) {
+	*out = *in
+	if in.Ref != nil {
+		in, out := &in.Ref, &out.Ref
+		*out = new(corev1.ObjectReference)
+		**out = **in
+	}
+	if in.URI != nil {
+		in, out := &in.URI, &out.URI
+		*out = new(string)
+		**out = **in
+	}
+	if in.Properties != nil {
+		in, out := &in.Properties, &out.Properties
+		*out = new(EndpointProperties)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.Types != nil {
+		in, out := &in.Types, &out.Types
+		*out = make(map[TypeSlot]EventTypeSpec, len(*in))
+		for key, val := range *in {
+			(*out)[key] = *val.DeepCopy()
+		}
+	}
+	if in.DataTypes != nil {
+		in, out := &in.DataTypes, &out.DataTypes
+		*out = make(map[TypeSlot]DataTypeReference, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoint.
+func (in *Endpoint) DeepCopy() *Endpoint {
+	if in == nil {
+		return nil
+	}
+	out := new(Endpoint)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *EndpointProperties) DeepCopyInto(out *EndpointProperties) {
+	*out = *in
+	if in.RawMessage != nil {
+		in, out := &in.RawMessage, &out.RawMessage
+		*out = make(RawMessage, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointProperties.
+func (in *EndpointProperties) DeepCopy() *EndpointProperties {
+	if in == nil {
+		return nil
+	}
+	out := new(EndpointProperties)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ErrorHandlerLog) DeepCopyInto(out *ErrorHandlerLog) {
+	*out = *in
+	out.ErrorHandlerNone = in.ErrorHandlerNone
+	if in.Parameters != nil {
+		in, out := &in.Parameters, &out.Parameters
+		*out = new(ErrorHandlerParameters)
+		(*in).DeepCopyInto(*out)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorHandlerLog.
+func (in *ErrorHandlerLog) DeepCopy() *ErrorHandlerLog {
+	if in == nil {
+		return nil
+	}
+	out := new(ErrorHandlerLog)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ErrorHandlerNone) DeepCopyInto(out *ErrorHandlerNone) {
+	*out = *in
+	out.baseErrorHandler = in.baseErrorHandler
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorHandlerNone.
+func (in *ErrorHandlerNone) DeepCopy() *ErrorHandlerNone {
+	if in == nil {
+		return nil
+	}
+	out := new(ErrorHandlerNone)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ErrorHandlerParameters) DeepCopyInto(out *ErrorHandlerParameters) {
+	*out = *in
+	if in.RawMessage != nil {
+		in, out := &in.RawMessage, &out.RawMessage
+		*out = make(RawMessage, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorHandlerParameters.
+func (in *ErrorHandlerParameters) DeepCopy() *ErrorHandlerParameters {
+	if in == nil {
+		return nil
+	}
+	out := new(ErrorHandlerParameters)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ErrorHandlerSink) DeepCopyInto(out *ErrorHandlerSink) {
+	*out = *in
+	in.ErrorHandlerLog.DeepCopyInto(&out.ErrorHandlerLog)
+	if in.DLCEndpoint != nil {
+		in, out := &in.DLCEndpoint, &out.DLCEndpoint
+		*out = new(Endpoint)
+		(*in).DeepCopyInto(*out)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorHandlerSink.
+func (in *ErrorHandlerSink) DeepCopy() *ErrorHandlerSink {
+	if in == nil {
+		return nil
+	}
+	out := new(ErrorHandlerSink)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ErrorHandlerSpec) DeepCopyInto(out *ErrorHandlerSpec) {
+	*out = *in
+	if in.RawMessage != nil {
+		in, out := &in.RawMessage, &out.RawMessage
+		*out = make(RawMessage, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorHandlerSpec.
+func (in *ErrorHandlerSpec) DeepCopy() *ErrorHandlerSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(ErrorHandlerSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *EventTypeSpec) DeepCopyInto(out *EventTypeSpec) {
 	*out = *in
+	if in.Schema != nil {
+		in, out := &in.Schema, &out.Schema
+		*out = new(JSONSchemaProps)
+		(*in).DeepCopyInto(*out)
+	}
 }
 
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationSpec.
-func (in *ConfigurationSpec) DeepCopy() *ConfigurationSpec {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventTypeSpec.
+func (in *EventTypeSpec) DeepCopy() *EventTypeSpec {
 	if in == nil {
 		return nil
 	}
-	out := new(ConfigurationSpec)
+	out := new(EventTypeSpec)
 	in.DeepCopyInto(out)
 	return out
 }
 
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *DataSpec) DeepCopyInto(out *DataSpec) {
+func (in *ExternalDocumentation) DeepCopyInto(out *ExternalDocumentation) {
 	*out = *in
-	if in.RawContent != nil {
-		in, out := &in.RawContent, &out.RawContent
-		*out = make([]byte, len(*in))
-		copy(*out, *in)
-	}
 }
 
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataSpec.
-func (in *DataSpec) DeepCopy() *DataSpec {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDocumentation.
+func (in *ExternalDocumentation) DeepCopy() *ExternalDocumentation {
 	if in == nil {
 		return nil
 	}
-	out := new(DataSpec)
+	out := new(ExternalDocumentation)
 	in.DeepCopyInto(out)
 	return out
 }
@@ -643,6 +1086,21 @@ func (in *Flow) DeepCopy() *Flow {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *HeaderSpec) DeepCopyInto(out *HeaderSpec) {
+	*out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeaderSpec.
+func (in *HeaderSpec) DeepCopy() *HeaderSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(HeaderSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *HealthCheck) DeepCopyInto(out *HealthCheck) {
 	*out = *in
@@ -1276,6 +1734,314 @@ func (in *IntegrationStatus) DeepCopy() *IntegrationStatus {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *JSON) DeepCopyInto(out *JSON) {
+	*out = *in
+	if in.RawMessage != nil {
+		in, out := &in.RawMessage, &out.RawMessage
+		*out = make(RawMessage, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSON.
+func (in *JSON) DeepCopy() *JSON {
+	if in == nil {
+		return nil
+	}
+	out := new(JSON)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *JSONSchemaProp) DeepCopyInto(out *JSONSchemaProp) {
+	*out = *in
+	if in.Default != nil {
+		in, out := &in.Default, &out.Default
+		*out = new(JSON)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.Maximum != nil {
+		in, out := &in.Maximum, &out.Maximum
+		*out = new(json.Number)
+		**out = **in
+	}
+	if in.Minimum != nil {
+		in, out := &in.Minimum, &out.Minimum
+		*out = new(json.Number)
+		**out = **in
+	}
+	if in.MaxLength != nil {
+		in, out := &in.MaxLength, &out.MaxLength
+		*out = new(int64)
+		**out = **in
+	}
+	if in.MinLength != nil {
+		in, out := &in.MinLength, &out.MinLength
+		*out = new(int64)
+		**out = **in
+	}
+	if in.MaxItems != nil {
+		in, out := &in.MaxItems, &out.MaxItems
+		*out = new(int64)
+		**out = **in
+	}
+	if in.MinItems != nil {
+		in, out := &in.MinItems, &out.MinItems
+		*out = new(int64)
+		**out = **in
+	}
+	if in.MaxProperties != nil {
+		in, out := &in.MaxProperties, &out.MaxProperties
+		*out = new(int64)
+		**out = **in
+	}
+	if in.MinProperties != nil {
+		in, out := &in.MinProperties, &out.MinProperties
+		*out = new(int64)
+		**out = **in
+	}
+	if in.MultipleOf != nil {
+		in, out := &in.MultipleOf, &out.MultipleOf
+		*out = new(json.Number)
+		**out = **in
+	}
+	if in.Enum != nil {
+		in, out := &in.Enum, &out.Enum
+		*out = make([]JSON, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Example != nil {
+		in, out := &in.Example, &out.Example
+		*out = new(JSON)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.XDescriptors != nil {
+		in, out := &in.XDescriptors, &out.XDescriptors
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaProp.
+func (in *JSONSchemaProp) DeepCopy() *JSONSchemaProp {
+	if in == nil {
+		return nil
+	}
+	out := new(JSONSchemaProp)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *JSONSchemaProps) DeepCopyInto(out *JSONSchemaProps) {
+	*out = *in
+	if in.Properties != nil {
+		in, out := &in.Properties, &out.Properties
+		*out = make(map[string]JSONSchemaProp, len(*in))
+		for key, val := range *in {
+			(*out)[key] = *val.DeepCopy()
+		}
+	}
+	if in.Required != nil {
+		in, out := &in.Required, &out.Required
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.Example != nil {
+		in, out := &in.Example, &out.Example
+		*out = new(JSON)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.ExternalDocs != nil {
+		in, out := &in.ExternalDocs, &out.ExternalDocs
+		*out = new(ExternalDocumentation)
+		**out = **in
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaProps.
+func (in *JSONSchemaProps) DeepCopy() *JSONSchemaProps {
+	if in == nil {
+		return nil
+	}
+	out := new(JSONSchemaProps)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Kamelet) DeepCopyInto(out *Kamelet) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+	in.Spec.DeepCopyInto(&out.Spec)
+	in.Status.DeepCopyInto(&out.Status)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kamelet.
+func (in *Kamelet) DeepCopy() *Kamelet {
+	if in == nil {
+		return nil
+	}
+	out := new(Kamelet)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *Kamelet) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletCondition) DeepCopyInto(out *KameletCondition) {
+	*out = *in
+	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
+	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletCondition.
+func (in *KameletCondition) DeepCopy() *KameletCondition {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletCondition)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletList) DeepCopyInto(out *KameletList) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ListMeta.DeepCopyInto(&out.ListMeta)
+	if in.Items != nil {
+		in, out := &in.Items, &out.Items
+		*out = make([]Kamelet, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletList.
+func (in *KameletList) DeepCopy() *KameletList {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletList)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *KameletList) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletProperty) DeepCopyInto(out *KameletProperty) {
+	*out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletProperty.
+func (in *KameletProperty) DeepCopy() *KameletProperty {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletProperty)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletSpec) DeepCopyInto(out *KameletSpec) {
+	*out = *in
+	if in.Definition != nil {
+		in, out := &in.Definition, &out.Definition
+		*out = new(JSONSchemaProps)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.Sources != nil {
+		in, out := &in.Sources, &out.Sources
+		*out = make([]SourceSpec, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Template != nil {
+		in, out := &in.Template, &out.Template
+		*out = new(Template)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.Types != nil {
+		in, out := &in.Types, &out.Types
+		*out = make(map[TypeSlot]EventTypeSpec, len(*in))
+		for key, val := range *in {
+			(*out)[key] = *val.DeepCopy()
+		}
+	}
+	if in.DataTypes != nil {
+		in, out := &in.DataTypes, &out.DataTypes
+		*out = make(map[TypeSlot]DataTypesSpec, len(*in))
+		for key, val := range *in {
+			(*out)[key] = *val.DeepCopy()
+		}
+	}
+	if in.Dependencies != nil {
+		in, out := &in.Dependencies, &out.Dependencies
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletSpec.
+func (in *KameletSpec) DeepCopy() *KameletSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletStatus) DeepCopyInto(out *KameletStatus) {
+	*out = *in
+	if in.Conditions != nil {
+		in, out := &in.Conditions, &out.Conditions
+		*out = make([]KameletCondition, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Properties != nil {
+		in, out := &in.Properties, &out.Properties
+		*out = make([]KameletProperty, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletStatus.
+func (in *KameletStatus) DeepCopy() *KameletStatus {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletStatus)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *KanikoTask) DeepCopyInto(out *KanikoTask) {
 	*out = *in
@@ -1828,6 +2594,26 @@ func (in *Task) DeepCopy() *Task {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Template) DeepCopyInto(out *Template) {
+	*out = *in
+	if in.RawMessage != nil {
+		in, out := &in.RawMessage, &out.RawMessage
+		*out = make(RawMessage, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Template.
+func (in *Template) DeepCopy() *Template {
+	if in == nil {
+		return nil
+	}
+	out := new(Template)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *TraitConfiguration) DeepCopyInto(out *TraitConfiguration) {
 	*out = *in
diff --git a/pkg/apis/camel/v1alpha1/binding_types.go b/pkg/apis/camel/v1alpha1/kamelet_binding_types.go
similarity index 71%
rename from pkg/apis/camel/v1alpha1/binding_types.go
rename to pkg/apis/camel/v1alpha1/kamelet_binding_types.go
index 8e2857df5..fb1e44bc4 100644
--- a/pkg/apis/camel/v1alpha1/binding_types.go
+++ b/pkg/apis/camel/v1alpha1/kamelet_binding_types.go
@@ -26,27 +26,27 @@ import (
 
 // +genclient
 // +kubebuilder:object:root=true
-// +kubebuilder:resource:path=bindings,scope=Namespaced,shortName=klb,categories=kamel;camel
+// +kubebuilder:resource:path=kameletbindings,scope=Namespaced,shortName=klb,categories=kamel;camel
 // +kubebuilder:subresource:status
 // +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale
 // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
 // +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas,selectorpath=.status.selector
-// +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`,description="TheBinding phase"
+// +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`,description="The Kamelet Binding phase"
 // +kubebuilder:printcolumn:name="Replicas",type=integer,JSONPath=`.status.replicas`,description="The number of pods"
 
-// Binding is the Schema for the kamelets binding API
-type Binding struct {
+// KameletBinding is the Schema for the kamelets binding API
+type KameletBinding struct {
 	metav1.TypeMeta   `json:",inline"`
 	metav1.ObjectMeta `json:"metadata,omitempty"`
 
-	// the specification of a Binding
-	Spec BindingSpec `json:"spec,omitempty"`
-	// the status of a Binding
-	Status BindingStatus `json:"status,omitempty"`
+	// the specification of a KameletBinding
+	Spec KameletBindingSpec `json:"spec,omitempty"`
+	// the status of a KameletBinding
+	Status KameletBindingStatus `json:"status,omitempty"`
 }
 
-// BindingSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
-type BindingSpec struct {
+// KameletBindingSpec defines the binding between a source and a sink. It can include custom parameters and additional intermediate steps and error handling.
+type KameletBindingSpec struct {
 	// Integration is an optional integration used to specify custom parameters
 	Integration *v1.IntegrationSpec `json:"integration,omitempty"`
 	// Source is the starting point of the integration defined by this binding
@@ -97,24 +97,24 @@ type EndpointProperties struct {
 	RawMessage `json:",inline"`
 }
 
-// BindingStatus specify the status of a binding
-type BindingStatus struct {
-	// ObservedGeneration is the most recent generation observed for this Binding.
+// KameletBindingStatus specify the status of a binding
+type KameletBindingStatus struct {
+	// ObservedGeneration is the most recent generation observed for this KameletBinding.
 	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
 	// Phase --
-	Phase BindingPhase `json:"phase,omitempty"`
+	Phase KameletBindingPhase `json:"phase,omitempty"`
 	// Conditions --
-	Conditions []BindingCondition `json:"conditions,omitempty"`
+	Conditions []KameletBindingCondition `json:"conditions,omitempty"`
 	// Replicas is the number of actual replicas of the binding
 	Replicas *int32 `json:"replicas,omitempty"`
 	// Selector allows to identify pods belonging to the binding
 	Selector string `json:"selector,omitempty"`
 }
 
-// BindingCondition describes the state of a resource at a certain point.
-type BindingCondition struct {
-	// Type of binding condition.
-	Type BindingConditionType `json:"type"`
+// KameletBindingCondition describes the state of a resource at a certain point.
+type KameletBindingCondition struct {
+	// Type of kameletBinding condition.
+	Type KameletBindingConditionType `json:"type"`
 	// Status of the condition, one of True, False, Unknown.
 	Status corev1.ConditionStatus `json:"status"`
 	// The last time this condition was updated.
@@ -129,38 +129,38 @@ type BindingCondition struct {
 	Pods []v1.PodCondition `json:"pods,omitempty"`
 }
 
-// BindingConditionType --
-type BindingConditionType string
+// KameletBindingConditionType --
+type KameletBindingConditionType string
 
 const (
-	// BindingConditionReady --
-	BindingConditionReady BindingConditionType = "Ready"
-	// BindingIntegrationConditionError is used to report the error on the generated Integration
-	BindingIntegrationConditionError BindingConditionType = "IntegrationError"
+	// KameletBindingConditionReady --
+	KameletBindingConditionReady KameletBindingConditionType = "Ready"
+	// KameletBindingIntegrationConditionError is used to report the error on the generated Integration
+	KameletBindingIntegrationConditionError KameletBindingConditionType = "IntegrationError"
 )
 
-// BindingPhase --
-type BindingPhase string
+// KameletBindingPhase --
+type KameletBindingPhase string
 
 const (
-	// BindingKind --
-	BindingKind string = "Binding"
-
-	// BindingPhaseNone --
-	BindingPhaseNone BindingPhase = ""
-	// BindingPhaseCreating --
-	BindingPhaseCreating BindingPhase = "Creating"
-	// BindingPhaseError --
-	BindingPhaseError BindingPhase = "Error"
-	// BindingPhaseReady --
-	BindingPhaseReady BindingPhase = "Ready"
+	// KameletBindingKind --
+	KameletBindingKind string = "KameletBinding"
+
+	// KameletBindingPhaseNone --
+	KameletBindingPhaseNone KameletBindingPhase = ""
+	// KameletBindingPhaseCreating --
+	KameletBindingPhaseCreating KameletBindingPhase = "Creating"
+	// KameletBindingPhaseError --
+	KameletBindingPhaseError KameletBindingPhase = "Error"
+	// KameletBindingPhaseReady --
+	KameletBindingPhaseReady KameletBindingPhase = "Ready"
 )
 
 // +kubebuilder:object:root=true
 
-// BindingList contains a list of Binding
-type BindingList struct {
+// KameletBindingList contains a list of KameletBinding
+type KameletBindingList struct {
 	metav1.TypeMeta `json:",inline"`
 	metav1.ListMeta `json:"metadata,omitempty"`
-	Items           []Binding `json:"items"`
+	Items           []KameletBinding `json:"items"`
 }
diff --git a/pkg/apis/camel/v1alpha1/binding_types_support.go b/pkg/apis/camel/v1alpha1/kamelet_binding_types_support.go
similarity index 74%
rename from pkg/apis/camel/v1alpha1/binding_types_support.go
rename to pkg/apis/camel/v1alpha1/kamelet_binding_types_support.go
index c44b8a2d3..20d55df1b 100644
--- a/pkg/apis/camel/v1alpha1/binding_types_support.go
+++ b/pkg/apis/camel/v1alpha1/kamelet_binding_types_support.go
@@ -28,7 +28,7 @@ import (
 )
 
 // GetConditions --
-func (in *BindingStatus) GetConditions() []v1.ResourceCondition {
+func (in *KameletBindingStatus) GetConditions() []v1.ResourceCondition {
 	res := make([]v1.ResourceCondition, 0, len(in.Conditions))
 	for _, c := range in.Conditions {
 		res = append(res, c)
@@ -37,42 +37,42 @@ func (in *BindingStatus) GetConditions() []v1.ResourceCondition {
 }
 
 // GetType --
-func (c BindingCondition) GetType() string {
+func (c KameletBindingCondition) GetType() string {
 	return string(c.Type)
 }
 
 // GetStatus --
-func (c BindingCondition) GetStatus() corev1.ConditionStatus {
+func (c KameletBindingCondition) GetStatus() corev1.ConditionStatus {
 	return c.Status
 }
 
 // GetLastUpdateTime --
-func (c BindingCondition) GetLastUpdateTime() metav1.Time {
+func (c KameletBindingCondition) GetLastUpdateTime() metav1.Time {
 	return c.LastUpdateTime
 }
 
 // GetLastTransitionTime --
-func (c BindingCondition) GetLastTransitionTime() metav1.Time {
+func (c KameletBindingCondition) GetLastTransitionTime() metav1.Time {
 	return c.LastTransitionTime
 }
 
 // GetReason --
-func (c BindingCondition) GetReason() string {
+func (c KameletBindingCondition) GetReason() string {
 	return c.Reason
 }
 
 // GetMessage --
-func (c BindingCondition) GetMessage() string {
+func (c KameletBindingCondition) GetMessage() string {
 	return c.Message
 }
 
 // SetOperatorID sets the given operator id as an annotation
-func (in *Binding) SetOperatorID(operatorID string) {
+func (in *KameletBinding) SetOperatorID(operatorID string) {
 	v1.SetAnnotation(&in.ObjectMeta, v1.OperatorIDAnnotation, operatorID)
 }
 
 // GetCondition returns the condition with the provided type.
-func (in *BindingStatus) GetCondition(condType BindingConditionType) *BindingCondition {
+func (in *KameletBindingStatus) GetCondition(condType KameletBindingConditionType) *KameletBindingCondition {
 	for i := range in.Conditions {
 		c := in.Conditions[i]
 		if c.Type == condType {
@@ -83,8 +83,8 @@ func (in *BindingStatus) GetCondition(condType BindingConditionType) *BindingCon
 }
 
 // SetCondition --
-func (in *BindingStatus) SetCondition(condType BindingConditionType, status corev1.ConditionStatus, reason string, message string) {
-	in.SetConditions(BindingCondition{
+func (in *KameletBindingStatus) SetCondition(condType KameletBindingConditionType, status corev1.ConditionStatus, reason string, message string) {
+	in.SetConditions(KameletBindingCondition{
 		Type:               condType,
 		Status:             status,
 		LastUpdateTime:     metav1.Now(),
@@ -95,8 +95,8 @@ func (in *BindingStatus) SetCondition(condType BindingConditionType, status core
 }
 
 // SetErrorCondition --
-func (in *BindingStatus) SetErrorCondition(condType BindingConditionType, reason string, err error) {
-	in.SetConditions(BindingCondition{
+func (in *KameletBindingStatus) SetErrorCondition(condType KameletBindingConditionType, reason string, err error) {
+	in.SetConditions(KameletBindingCondition{
 		Type:               condType,
 		Status:             corev1.ConditionFalse,
 		LastUpdateTime:     metav1.Now(),
@@ -110,7 +110,7 @@ func (in *BindingStatus) SetErrorCondition(condType BindingConditionType, reason
 //
 // If a condition that we are about to add already exists and has the same status and
 // reason then we are not going to update.
-func (in *BindingStatus) SetConditions(conditions ...BindingCondition) {
+func (in *KameletBindingStatus) SetConditions(conditions ...KameletBindingCondition) {
 	for _, condition := range conditions {
 		if condition.LastUpdateTime.IsZero() {
 			condition.LastUpdateTime = metav1.Now()
@@ -135,7 +135,7 @@ func (in *BindingStatus) SetConditions(conditions ...BindingCondition) {
 }
 
 // RemoveCondition removes the resource condition with the provided type.
-func (in *BindingStatus) RemoveCondition(condType BindingConditionType) {
+func (in *KameletBindingStatus) RemoveCondition(condType KameletBindingConditionType) {
 	newConditions := in.Conditions[:0]
 	for _, c := range in.Conditions {
 		if c.Type != condType {
@@ -169,12 +169,12 @@ func (p *EndpointProperties) GetPropertyMap() (map[string]string, error) {
 	return stringProps, nil
 }
 
-// NewBinding --
-func NewBinding(namespace string, name string) Binding {
-	return Binding{
+// NewKameletBinding --
+func NewKameletBinding(namespace string, name string) KameletBinding {
+	return KameletBinding{
 		TypeMeta: metav1.TypeMeta{
 			APIVersion: SchemeGroupVersion.String(),
-			Kind:       BindingKind,
+			Kind:       KameletBindingKind,
 		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: namespace,
@@ -183,12 +183,12 @@ func NewBinding(namespace string, name string) Binding {
 	}
 }
 
-// NewBindingList --
-func NewBindingList() BindingList {
-	return BindingList{
+// NewKameletBindingList --
+func NewKameletBindingList() KameletBindingList {
+	return KameletBindingList{
 		TypeMeta: metav1.TypeMeta{
 			APIVersion: SchemeGroupVersion.String(),
-			Kind:       BindingKind,
+			Kind:       KameletBindingKind,
 		},
 	}
 }
diff --git a/pkg/apis/camel/v1alpha1/binding_types_support_test.go b/pkg/apis/camel/v1alpha1/kamelet_binding_types_support_test.go
similarity index 100%
rename from pkg/apis/camel/v1alpha1/binding_types_support_test.go
rename to pkg/apis/camel/v1alpha1/kamelet_binding_types_support_test.go
diff --git a/pkg/apis/camel/v1alpha1/register.go b/pkg/apis/camel/v1alpha1/register.go
index 6676d3b1a..f472e4d78 100644
--- a/pkg/apis/camel/v1alpha1/register.go
+++ b/pkg/apis/camel/v1alpha1/register.go
@@ -47,8 +47,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
 	scheme.AddKnownTypes(SchemeGroupVersion,
 		&Kamelet{},
 		&KameletList{},
-		&Binding{},
-		&BindingList{},
+		&KameletBinding{},
+		&KameletBindingList{},
 	)
 	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
 	return nil
diff --git a/pkg/apis/camel/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/camel/v1alpha1/zz_generated.deepcopy.go
index 5bd413b4a..ee2885294 100644
--- a/pkg/apis/camel/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1alpha1/zz_generated.deepcopy.go
@@ -32,155 +32,6 @@ func (in *BeanProperties) DeepCopy() *BeanProperties {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Binding) DeepCopyInto(out *Binding) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	in.Status.DeepCopyInto(&out.Status)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binding.
-func (in *Binding) DeepCopy() *Binding {
-	if in == nil {
-		return nil
-	}
-	out := new(Binding)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *Binding) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *BindingCondition) DeepCopyInto(out *BindingCondition) {
-	*out = *in
-	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
-	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
-	if in.Pods != nil {
-		in, out := &in.Pods, &out.Pods
-		*out = make([]v1.PodCondition, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingCondition.
-func (in *BindingCondition) DeepCopy() *BindingCondition {
-	if in == nil {
-		return nil
-	}
-	out := new(BindingCondition)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *BindingList) DeepCopyInto(out *BindingList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]Binding, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingList.
-func (in *BindingList) DeepCopy() *BindingList {
-	if in == nil {
-		return nil
-	}
-	out := new(BindingList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *BindingList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *BindingSpec) DeepCopyInto(out *BindingSpec) {
-	*out = *in
-	if in.Integration != nil {
-		in, out := &in.Integration, &out.Integration
-		*out = new(v1.IntegrationSpec)
-		(*in).DeepCopyInto(*out)
-	}
-	in.Source.DeepCopyInto(&out.Source)
-	in.Sink.DeepCopyInto(&out.Sink)
-	if in.ErrorHandler != nil {
-		in, out := &in.ErrorHandler, &out.ErrorHandler
-		*out = new(ErrorHandlerSpec)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Steps != nil {
-		in, out := &in.Steps, &out.Steps
-		*out = make([]Endpoint, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.Replicas != nil {
-		in, out := &in.Replicas, &out.Replicas
-		*out = new(int32)
-		**out = **in
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingSpec.
-func (in *BindingSpec) DeepCopy() *BindingSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(BindingSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *BindingStatus) DeepCopyInto(out *BindingStatus) {
-	*out = *in
-	if in.Conditions != nil {
-		in, out := &in.Conditions, &out.Conditions
-		*out = make([]BindingCondition, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.Replicas != nil {
-		in, out := &in.Replicas, &out.Replicas
-		*out = new(int32)
-		**out = **in
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingStatus.
-func (in *BindingStatus) DeepCopy() *BindingStatus {
-	if in == nil {
-		return nil
-	}
-	out := new(BindingStatus)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *DataTypeReference) DeepCopyInto(out *DataTypeReference) {
 	*out = *in
@@ -635,6 +486,155 @@ func (in *Kamelet) DeepCopyObject() runtime.Object {
 	return nil
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletBinding) DeepCopyInto(out *KameletBinding) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+	in.Spec.DeepCopyInto(&out.Spec)
+	in.Status.DeepCopyInto(&out.Status)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletBinding.
+func (in *KameletBinding) DeepCopy() *KameletBinding {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletBinding)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *KameletBinding) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletBindingCondition) DeepCopyInto(out *KameletBindingCondition) {
+	*out = *in
+	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
+	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
+	if in.Pods != nil {
+		in, out := &in.Pods, &out.Pods
+		*out = make([]v1.PodCondition, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletBindingCondition.
+func (in *KameletBindingCondition) DeepCopy() *KameletBindingCondition {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletBindingCondition)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletBindingList) DeepCopyInto(out *KameletBindingList) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ListMeta.DeepCopyInto(&out.ListMeta)
+	if in.Items != nil {
+		in, out := &in.Items, &out.Items
+		*out = make([]KameletBinding, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletBindingList.
+func (in *KameletBindingList) DeepCopy() *KameletBindingList {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletBindingList)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *KameletBindingList) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletBindingSpec) DeepCopyInto(out *KameletBindingSpec) {
+	*out = *in
+	if in.Integration != nil {
+		in, out := &in.Integration, &out.Integration
+		*out = new(v1.IntegrationSpec)
+		(*in).DeepCopyInto(*out)
+	}
+	in.Source.DeepCopyInto(&out.Source)
+	in.Sink.DeepCopyInto(&out.Sink)
+	if in.ErrorHandler != nil {
+		in, out := &in.ErrorHandler, &out.ErrorHandler
+		*out = new(ErrorHandlerSpec)
+		(*in).DeepCopyInto(*out)
+	}
+	if in.Steps != nil {
+		in, out := &in.Steps, &out.Steps
+		*out = make([]Endpoint, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Replicas != nil {
+		in, out := &in.Replicas, &out.Replicas
+		*out = new(int32)
+		**out = **in
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletBindingSpec.
+func (in *KameletBindingSpec) DeepCopy() *KameletBindingSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletBindingSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *KameletBindingStatus) DeepCopyInto(out *KameletBindingStatus) {
+	*out = *in
+	if in.Conditions != nil {
+		in, out := &in.Conditions, &out.Conditions
+		*out = make([]KameletBindingCondition, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	if in.Replicas != nil {
+		in, out := &in.Replicas, &out.Replicas
+		*out = new(int32)
+		**out = **in
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KameletBindingStatus.
+func (in *KameletBindingStatus) DeepCopy() *KameletBindingStatus {
+	if in == nil {
+		return nil
+	}
+	out := new(KameletBindingStatus)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *KameletCondition) DeepCopyInto(out *KameletCondition) {
 	*out = *in
diff --git a/pkg/client/camel/applyconfiguration/camel/v1alpha1/binding.go b/pkg/client/camel/applyconfiguration/camel/v1/binding.go
similarity index 99%
copy from pkg/client/camel/applyconfiguration/camel/v1alpha1/binding.go
copy to pkg/client/camel/applyconfiguration/camel/v1/binding.go
index 0c8e09fc7..6f9fb21a3 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1alpha1/binding.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/binding.go
@@ -17,7 +17,7 @@ limitations under the License.
 
 // Code generated by applyconfiguration-gen. DO NOT EDIT.
 
-package v1alpha1
+package v1
 
 import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -41,7 +41,7 @@ func Binding(name, namespace string) *BindingApplyConfiguration {
 	b.WithName(name)
 	b.WithNamespace(namespace)
 	b.WithKind("Binding")
-	b.WithAPIVersion("camel.apache.org/v1alpha1")
+	b.WithAPIVersion("camel.apache.org/v1")
 	return b
 }
 
diff --git a/pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingcondition.go b/pkg/client/camel/applyconfiguration/camel/v1/bindingcondition.go
similarity index 78%
copy from pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingcondition.go
copy to pkg/client/camel/applyconfiguration/camel/v1/bindingcondition.go
index 7ae16279d..30cb41a51 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingcondition.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/bindingcondition.go
@@ -17,25 +17,24 @@ limitations under the License.
 
 // Code generated by applyconfiguration-gen. DO NOT EDIT.
 
-package v1alpha1
+package v1
 
 import (
-	v1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
-	camelv1 "github.com/apache/camel-k/v2/pkg/client/camel/applyconfiguration/camel/v1"
-	v1 "k8s.io/api/core/v1"
+	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
+	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 // BindingConditionApplyConfiguration represents an declarative configuration of the BindingCondition type for use
 // with apply.
 type BindingConditionApplyConfiguration struct {
-	Type               *v1alpha1.BindingConditionType           `json:"type,omitempty"`
-	Status             *v1.ConditionStatus                      `json:"status,omitempty"`
-	LastUpdateTime     *metav1.Time                             `json:"lastUpdateTime,omitempty"`
-	LastTransitionTime *metav1.Time                             `json:"lastTransitionTime,omitempty"`
-	Reason             *string                                  `json:"reason,omitempty"`
-	Message            *string                                  `json:"message,omitempty"`
-	Pods               []camelv1.PodConditionApplyConfiguration `json:"pods,omitempty"`
+	Type               *v1.BindingConditionType         `json:"type,omitempty"`
+	Status             *corev1.ConditionStatus          `json:"status,omitempty"`
+	LastUpdateTime     *metav1.Time                     `json:"lastUpdateTime,omitempty"`
+	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
+	Reason             *string                          `json:"reason,omitempty"`
+	Message            *string                          `json:"message,omitempty"`
+	Pods               []PodConditionApplyConfiguration `json:"pods,omitempty"`
 }
 
 // BindingConditionApplyConfiguration constructs an declarative configuration of the BindingCondition type for use with
@@ -47,7 +46,7 @@ func BindingCondition() *BindingConditionApplyConfiguration {
 // WithType sets the Type field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Type field is set to the value of the last call.
-func (b *BindingConditionApplyConfiguration) WithType(value v1alpha1.BindingConditionType) *BindingConditionApplyConfiguration {
+func (b *BindingConditionApplyConfiguration) WithType(value v1.BindingConditionType) *BindingConditionApplyConfiguration {
 	b.Type = &value
 	return b
 }
@@ -55,7 +54,7 @@ func (b *BindingConditionApplyConfiguration) WithType(value v1alpha1.BindingCond
 // WithStatus sets the Status field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Status field is set to the value of the last call.
-func (b *BindingConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *BindingConditionApplyConfiguration {
+func (b *BindingConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *BindingConditionApplyConfiguration {
 	b.Status = &value
 	return b
 }
@@ -95,7 +94,7 @@ func (b *BindingConditionApplyConfiguration) WithMessage(value string) *BindingC
 // WithPods adds the given value to the Pods field in the declarative configuration
 // and returns the receiver, so that objects can be build by chaining "With" function invocations.
 // If called multiple times, values provided by each call will be appended to the Pods field.
-func (b *BindingConditionApplyConfiguration) WithPods(values ...*camelv1.PodConditionApplyConfiguration) *BindingConditionApplyConfiguration {
+func (b *BindingConditionApplyConfiguration) WithPods(values ...*PodConditionApplyConfiguration) *BindingConditionApplyConfiguration {
 	for i := range values {
 		if values[i] == nil {
 			panic("nil value passed to WithPods")
diff --git a/pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingspec.go b/pkg/client/camel/applyconfiguration/camel/v1/bindingspec.go
similarity index 83%
copy from pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingspec.go
copy to pkg/client/camel/applyconfiguration/camel/v1/bindingspec.go
index 885d67fb2..887c313e5 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingspec.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/bindingspec.go
@@ -17,22 +17,18 @@ limitations under the License.
 
 // Code generated by applyconfiguration-gen. DO NOT EDIT.
 
-package v1alpha1
-
-import (
-	v1 "github.com/apache/camel-k/v2/pkg/client/camel/applyconfiguration/camel/v1"
-)
+package v1
 
 // BindingSpecApplyConfiguration represents an declarative configuration of the BindingSpec type for use
 // with apply.
 type BindingSpecApplyConfiguration struct {
-	Integration        *v1.IntegrationSpecApplyConfiguration `json:"integration,omitempty"`
-	Source             *EndpointApplyConfiguration           `json:"source,omitempty"`
-	Sink               *EndpointApplyConfiguration           `json:"sink,omitempty"`
-	ErrorHandler       *ErrorHandlerSpecApplyConfiguration   `json:"errorHandler,omitempty"`
-	Steps              []EndpointApplyConfiguration          `json:"steps,omitempty"`
-	Replicas           *int32                                `json:"replicas,omitempty"`
-	ServiceAccountName *string                               `json:"serviceAccountName,omitempty"`
+	Integration        *IntegrationSpecApplyConfiguration  `json:"integration,omitempty"`
+	Source             *EndpointApplyConfiguration         `json:"source,omitempty"`
+	Sink               *EndpointApplyConfiguration         `json:"sink,omitempty"`
+	ErrorHandler       *ErrorHandlerSpecApplyConfiguration `json:"errorHandler,omitempty"`
+	Steps              []EndpointApplyConfiguration        `json:"steps,omitempty"`
+	Replicas           *int32                              `json:"replicas,omitempty"`
+	ServiceAccountName *string                             `json:"serviceAccountName,omitempty"`
 }
 
 // BindingSpecApplyConfiguration constructs an declarative configuration of the BindingSpec type for use with
@@ -44,7 +40,7 @@ func BindingSpec() *BindingSpecApplyConfiguration {
 // WithIntegration sets the Integration field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Integration field is set to the value of the last call.
-func (b *BindingSpecApplyConfiguration) WithIntegration(value *v1.IntegrationSpecApplyConfiguration) *BindingSpecApplyConfiguration {
+func (b *BindingSpecApplyConfiguration) WithIntegration(value *IntegrationSpecApplyConfiguration) *BindingSpecApplyConfiguration {
 	b.Integration = value
 	return b
 }
diff --git a/pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/bindingstatus.go
similarity index 93%
copy from pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingstatus.go
copy to pkg/client/camel/applyconfiguration/camel/v1/bindingstatus.go
index a832f87b0..1d5ae7691 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1alpha1/bindingstatus.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/bindingstatus.go
@@ -17,17 +17,17 @@ limitations under the License.
 
 // Code generated by applyconfiguration-gen. DO NOT EDIT.
 
-package v1alpha1
+package v1
 
 import (
-	v1alpha1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
+	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 )
 
 // BindingStatusApplyConfiguration represents an declarative configuration of the BindingStatus type for use
 // with apply.
 type BindingStatusApplyConfiguration struct {
 	ObservedGeneration *int64                               `json:"observedGeneration,omitempty"`
-	Phase              *v1alpha1.BindingPhase               `json:"phase,omitempty"`
+	Phase              *v1.BindingPhase                     `json:"phase,omitempty"`
 	Conditions         []BindingConditionApplyConfiguration `json:"conditions,omitempty"`
 	Replicas           *int32                               `json:"replicas,omitempty"`
 	Selector           *string                              `json:"selector,omitempty"`
@@ -50,7 +50,7 @@ func (b *BindingStatusApplyConfiguration) WithObservedGeneration(value int64) *B
 // WithPhase sets the Phase field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Phase field is set to the value of the last call.
-func (b *BindingStatusApplyConfiguration) WithPhase(value v1alpha1.BindingPhase) *BindingStatusApplyConfiguration {
+func (b *BindingStatusApplyConfiguration) WithPhase(value v1.BindingPhase) *BindingStatusApplyConfiguration {
 	b.Phase = &value
 	return b
 }
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/datatypereference.go b/pkg/client/camel/applyconfiguration/camel/v1/datatypereference.go
new file mode 100644
index 000000000..6836e0956
--- /dev/null
+++ b/pkg/client/camel/applyconfiguration/camel/v1/datatypereference.go
@@ -0,0 +1,49 @@
+/*
+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.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// DataTypeReferenceApplyConfiguration represents an declarative configuration of the DataTypeReference type for use
+// with apply.
+type DataTypeReferenceApplyConfiguration struct {
+	Scheme *string `json:"scheme,omitempty"`
+	Format *string `json:"format,omitempty"`
+}
+
+// DataTypeReferenceApplyConfiguration constructs an declarative configuration of the DataTypeReference type for use with
+// apply.
+func DataTypeReference() *DataTypeReferenceApplyConfiguration {
+	return &DataTypeReferenceApplyConfiguration{}
+}
+
+// WithScheme sets the Scheme field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Scheme field is set to the value of the last call.
+func (b *DataTypeReferenceApplyConfiguration) WithScheme(value string) *DataTypeReferenceApplyConfiguration {
+	b.Scheme = &value
+	return b
+}
+
+// WithFormat sets the Format field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Format field is set to the value of the last call.
+func (b *DataTypeReferenceApplyConfiguration) WithFormat(value string) *DataTypeReferenceApplyConfiguration {
+	b.Format = &value
+	return b
+}
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/datatypespec.go b/pkg/client/camel/applyconfiguration/camel/v1/datatypespec.go
new file mode 100644
index 000000000..920d03bc8
--- /dev/null
+++ b/pkg/client/camel/applyconfiguration/camel/v1/datatypespec.go
@@ -0,0 +1,102 @@
+/*
+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.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// DataTypeSpecApplyConfiguration represents an declarative configuration of the DataTypeSpec type for use
+// with apply.
+type DataTypeSpecApplyConfiguration struct {
+	Scheme       *string                                 `json:"scheme,omitempty"`
+	Format       *string                                 `json:"format,omitempty"`
+	Description  *string                                 `json:"description,omitempty"`
+	MediaType    *string                                 `json:"mediaType,omitempty"`
+	Dependencies []string                                `json:"dependencies,omitempty"`
+	Headers      map[string]HeaderSpecApplyConfiguration `json:"headers,omitempty"`
+	Schema       *JSONSchemaPropsApplyConfiguration      `json:"schema,omitempty"`
+}
+
+// DataTypeSpecApplyConfiguration constructs an declarative configuration of the DataTypeSpec type for use with
+// apply.
+func DataTypeSpec() *DataTypeSpecApplyConfiguration {
+	return &DataTypeSpecApplyConfiguration{}
+}
+
+// WithScheme sets the Scheme field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Scheme field is set to the value of the last call.
+func (b *DataTypeSpecApplyConfiguration) WithScheme(value string) *DataTypeSpecApplyConfiguration {
+	b.Scheme = &value
+	return b
+}
+
+// WithFormat sets the Format field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Format field is set to the value of the last call.
+func (b *DataTypeSpecApplyConfiguration) WithFormat(value string) *DataTypeSpecApplyConfiguration {
+	b.Format = &value
+	return b
+}
+
+// WithDescription sets the Description field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Description field is set to the value of the last call.
+func (b *DataTypeSpecApplyConfiguration) WithDescription(value string) *DataTypeSpecApplyConfiguration {
+	b.Description = &value
+	return b
+}
+
+// WithMediaType sets the MediaType field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the MediaType field is set to the value of the last call.
+func (b *DataTypeSpecApplyConfiguration) WithMediaType(value string) *DataTypeSpecApplyConfiguration {
+	b.MediaType = &value
+	return b
+}
+
+// WithDependencies adds the given value to the Dependencies field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Dependencies field.
+func (b *DataTypeSpecApplyConfiguration) WithDependencies(values ...string) *DataTypeSpecApplyConfiguration {
+	for i := range values {
+		b.Dependencies = append(b.Dependencies, values[i])
+	}
+	return b
+}
+
+// WithHeaders puts the entries into the Headers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Headers field,
... 7370 lines suppressed ...