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-kamelets.git
The following commit(s) were added to refs/heads/main by this push:
new 4bc56007a feat(doc): adding Kamelet spec
4bc56007a is described below
commit 4bc56007ac72b1f3779cf3e0ff135653c43874fc
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Thu Sep 11 16:11:00 2025 +0200
feat(doc): adding Kamelet spec
Generating and adding doc to have a complete separation from Camel K
---
Makefile | 3 +-
crds/gen_crd/gen-crd-api-config.json | 22 +
crds/gen_crd/gen_crd_api.sh | 40 +
crds/gen_crd/template/members.tpl | 30 +
crds/gen_crd/template/pkg.tpl | 32 +
crds/gen_crd/template/type.tpl | 32 +
crds/pkg/apis/camel/v1/doc.go | 21 +
.../camel/applyconfiguration/camel/v1/kamelet.go | 2 +-
crds/pkg/client/camel/applyconfiguration/utils.go | 2 +-
.../versioned/typed/camel/v1/camel_client.go | 2 +-
.../camel/informers/externalversions/generic.go | 2 +-
docs/modules/ROOT/pages/apis/spec.adoc | 4 +
docs/modules/ROOT/pages/index.adoc | 2 +-
.../ROOT/partials/apis/camel-kamelets-crds.adoc | 1083 ++++++++++++++++++++
14 files changed, 1271 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index 5c5f1defb..860641232 100644
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,8 @@ generate:
./gen_client.sh && \
./generate.sh && \
cd ../script/generator && \
- go run . ../../kamelets/ ../../docs/modules/ROOT/
+ go run . ../../kamelets/ ../../docs/modules/ROOT/ && \
+ cd ../../crds && ./gen_crd/gen_crd_api.sh
validate:
cd script/validator && \
diff --git a/crds/gen_crd/gen-crd-api-config.json
b/crds/gen_crd/gen-crd-api-config.json
new file mode 100644
index 000000000..e0975ad8f
--- /dev/null
+++ b/crds/gen_crd/gen-crd-api-config.json
@@ -0,0 +1,22 @@
+{
+ "hideMemberFields": [
+ "TypeMeta",
+ "baseErrorHandler"
+ ],
+ "hideTypePatterns": [
+ "ParseError$",
+ "List$"
+ ],
+ "externalPackages": [
+ {
+ "typeMatchPrefix": "^k8s\\.io/(api|apimachinery/pkg/apis)/",
+ "docsURLTemplate":
"https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.dex
.PackageSegments -2}}"
+ }
+ ],
+ "typeDisplayNamePrefixOverrides": {
+ "k8s.io/api/": "Kubernetes ",
+ "k8s.io/apimachinery/pkg/apis/": "Kubernetes "
+ },
+ "markdownDisabled": true,
+ "asciiDoc": true
+}
diff --git a/crds/gen_crd/gen_crd_api.sh b/crds/gen_crd/gen_crd_api.sh
new file mode 100755
index 000000000..a834c4f42
--- /dev/null
+++ b/crds/gen_crd/gen_crd_api.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# 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.
+
+location=$(dirname $0)
+rootdir=$location/../..
+crd_file_camel=$rootdir/docs/modules/ROOT/partials/apis/camel-kamelets-crds.adoc
+
+# Until the pull req below is merged upstream, we need to use a self-hosted
+# version of gen-crd-api-reference-docs:
+# https://github.com/ahmetb/gen-crd-api-reference-docs/pull/45
+
+## update the kubernetes version for the generated links
+ver=$(grep k8s.io/client-go ${rootdir}/go.mod |sed 's/.*v0\.\(..\)\../\1/g')
+sed -i "/docsURLTemplate/s/\(kubernetes-api\/v1\.\)../\1${ver}/"
$location/gen-*.json
+
+echo "Generating CRD API documentation..."
+# to run a local copy use something like
+#go run /Users/david/projects/camel/gen-crd-api-reference-docs/main.go \
+#you will probably need to comment out use of blackfriday.
+go run github.com/tadayosi/[email protected] \
+ -config $location/gen-crd-api-config.json \
+ -template-dir $location/template \
+ -api-dir "github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1" \
+ -out-file $crd_file_camel
+
+echo "Generating CRD API documentation... Done."
diff --git a/crds/gen_crd/template/members.tpl
b/crds/gen_crd/template/members.tpl
new file mode 100644
index 000000000..23afa3784
--- /dev/null
+++ b/crds/gen_crd/template/members.tpl
@@ -0,0 +1,30 @@
+{{ define "members" -}}
+
+{{ range .Members -}}
+ {{- if not (hiddenMember .) -}}
+|`{{ fieldName . }}` +
+{{ if linkForType .Type -}}
+ {{- if isLocalType .Type -}}
+*xref:#{{ sanitizeId (anchorIDForType .Type) }}[{{ asciiDocAttributeEscape
(typeDisplayName .Type) }}]*
+ {{- else -}}
+*{{ linkForType .Type}}[{{ asciiDocAttributeEscape (typeDisplayName .Type) }}]*
+ {{- end -}}
+{{- else -}}
+ {{- typeDisplayName .Type -}}
+{{- end }}
+|{{ if fieldEmbedded . -}}
+(Members of `{{ fieldName . }}` are embedded into this type.)
+{{- end }}
+{{ if isOptionalMember . -}}
+*(Optional)*
+{{- end }}
+
+{{ renderComments .CommentLines }}
+
+{{ if and (eq (.Type.Name.Name) "ObjectMeta") -}}
+Refer to the Kubernetes API documentation for the fields of the `metadata`
field.
+{{ end -}}
+{{- end -}}
+{{- end -}}
+
+{{- end }}
diff --git a/crds/gen_crd/template/pkg.tpl b/crds/gen_crd/template/pkg.tpl
new file mode 100644
index 000000000..e539cdc47
--- /dev/null
+++ b/crds/gen_crd/template/pkg.tpl
@@ -0,0 +1,32 @@
+{{ define "packages" -}}
+{{ range .packages -}}
+
+[#{{ sanitizeId (packageAnchorID .) }}]
+== {{ packageDisplayName . }}
+
+ {{- with (index .GoPackages 0 ) -}}
+ {{- with .DocComments }}
+
+{{ renderComments . }}
+ {{- end -}}
+ {{- end }}
+
+== Resource Types
+
+ {{- range (visibleTypes (sortedTypes .Types)) -}}
+ {{- if isExportedType . -}}
+ {{- template "type" . }}
+ {{- end -}}
+ {{- end }}
+
+== Internal Types
+
+ {{- range (visibleTypes (sortedTypes .Types)) -}}
+ {{- if not (isExportedType .) -}}
+ {{- template "type" . }}
+ {{- end -}}
+ {{- end -}}
+
+{{- end -}}
+
+{{- end }}
diff --git a/crds/gen_crd/template/type.tpl b/crds/gen_crd/template/type.tpl
new file mode 100644
index 000000000..d52c4c34a
--- /dev/null
+++ b/crds/gen_crd/template/type.tpl
@@ -0,0 +1,32 @@
+{{ define "type" }}
+
+[#{{ sanitizeId (anchorIDForType .) }}]
+=== {{ .Name.Name }}{{ if eq .Kind "Alias" }}(`{{.Underlying}}` alias){{ end }}
+{{- with (typeReferences .) }}
+
+*Appears on:*
+{{ range . }}
+* <<#{{ sanitizeId (anchorIDForType .) }}, {{ typeDisplayName . }}>>
+{{- end -}}
+{{- end }}
+
+{{ renderComments .CommentLines }}
+{{ if .Members }}
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+{{ if isExportedType . }}
+|`apiVersion` +
+string
+|`{{apiGroup .}}`
+
+|`kind` +
+string
+|`{{.Name.Name}}`
+{{- end }}
+{{ template "members" . }}
+|===
+{{- end -}}
+
+{{- end -}}
diff --git a/crds/pkg/apis/camel/v1/doc.go b/crds/pkg/apis/camel/v1/doc.go
new file mode 100644
index 000000000..1f4fbdc32
--- /dev/null
+++ b/crds/pkg/apis/camel/v1/doc.go
@@ -0,0 +1,21 @@
+/*
+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 contains API Schema definitions for the camel v1 API group
+// +kubebuilder:object:generate=true
+// +groupName=camel.apache.org
+package v1
diff --git a/crds/pkg/client/camel/applyconfiguration/camel/v1/kamelet.go
b/crds/pkg/client/camel/applyconfiguration/camel/v1/kamelet.go
index 93e62572f..ef71104aa 100644
--- a/crds/pkg/client/camel/applyconfiguration/camel/v1/kamelet.go
+++ b/crds/pkg/client/camel/applyconfiguration/camel/v1/kamelet.go
@@ -41,7 +41,7 @@ func Kamelet(name, namespace string)
*KameletApplyConfiguration {
b.WithName(name)
b.WithNamespace(namespace)
b.WithKind("Kamelet")
- b.WithAPIVersion("camel/v1")
+ b.WithAPIVersion("camel.apache.org/v1")
return b
}
diff --git a/crds/pkg/client/camel/applyconfiguration/utils.go
b/crds/pkg/client/camel/applyconfiguration/utils.go
index 5be3b892b..b7267c311 100644
--- a/crds/pkg/client/camel/applyconfiguration/utils.go
+++ b/crds/pkg/client/camel/applyconfiguration/utils.go
@@ -32,7 +32,7 @@ import (
// apply configuration type exists for the given GroupVersionKind.
func ForKind(kind schema.GroupVersionKind) interface{} {
switch kind {
- // Group=camel, Version=v1
+ // Group=camel.apache.org, Version=v1
case v1.SchemeGroupVersion.WithKind("DataSpec"):
return &camelv1.DataSpecApplyConfiguration{}
case v1.SchemeGroupVersion.WithKind("DataTypeSpec"):
diff --git
a/crds/pkg/client/camel/clientset/versioned/typed/camel/v1/camel_client.go
b/crds/pkg/client/camel/clientset/versioned/typed/camel/v1/camel_client.go
index 15b782d28..6eb28859b 100644
--- a/crds/pkg/client/camel/clientset/versioned/typed/camel/v1/camel_client.go
+++ b/crds/pkg/client/camel/clientset/versioned/typed/camel/v1/camel_client.go
@@ -32,7 +32,7 @@ type CamelV1Interface interface {
KameletsGetter
}
-// CamelV1Client is used to interact with features provided by the camel group.
+// CamelV1Client is used to interact with features provided by the
camel.apache.org group.
type CamelV1Client struct {
restClient rest.Interface
}
diff --git a/crds/pkg/client/camel/informers/externalversions/generic.go
b/crds/pkg/client/camel/informers/externalversions/generic.go
index ac70689ec..31ed31b31 100644
--- a/crds/pkg/client/camel/informers/externalversions/generic.go
+++ b/crds/pkg/client/camel/informers/externalversions/generic.go
@@ -53,7 +53,7 @@ func (f *genericInformer) Lister() cache.GenericLister {
// TODO extend this to unknown resources with a client pool
func (f *sharedInformerFactory) ForResource(resource
schema.GroupVersionResource) (GenericInformer, error) {
switch resource {
- // Group=camel, Version=v1
+ // Group=camel.apache.org, Version=v1
case v1.SchemeGroupVersion.WithResource("kamelets"):
return &genericInformer{resource: resource.GroupResource(),
informer: f.Camel().V1().Kamelets().Informer()}, nil
diff --git a/docs/modules/ROOT/pages/apis/spec.adoc
b/docs/modules/ROOT/pages/apis/spec.adoc
new file mode 100644
index 000000000..fcafecc28
--- /dev/null
+++ b/docs/modules/ROOT/pages/apis/spec.adoc
@@ -0,0 +1,4 @@
+= Camel Kamelets API
+:page-aliases: camel.adoc
+
+include::partial$apis/camel-kamelets-crds.adoc[]
diff --git a/docs/modules/ROOT/pages/index.adoc
b/docs/modules/ROOT/pages/index.adoc
index babae9287..dcb0b4809 100644
--- a/docs/modules/ROOT/pages/index.adoc
+++ b/docs/modules/ROOT/pages/index.adoc
@@ -2,7 +2,7 @@
== Kamelet specification
-Kamelets were originally born for Kubernetes and they have eventually moved to
be used as Camel core resources. Its specification is a Kubernetes CRD
specification. You can use it in your project by using Maven dependency
`org.apache.camel.kamelets:camel-kamelets-crds`.
+Kamelets were originally born for Kubernetes and they have eventually moved to
be used as Camel core resources. Its specification is a
xref:apis/spec.adoc[Kubernetes CRD specification]. You can use it in your
project by using Maven dependency
`org.apache.camel.kamelets:camel-kamelets-crds`.
== Development guide
diff --git a/docs/modules/ROOT/partials/apis/camel-kamelets-crds.adoc
b/docs/modules/ROOT/partials/apis/camel-kamelets-crds.adoc
new file mode 100644
index 000000000..88b7acbb1
--- /dev/null
+++ b/docs/modules/ROOT/partials/apis/camel-kamelets-crds.adoc
@@ -0,0 +1,1083 @@
+[#_camel_apache_org_v1]
+== camel.apache.org/v1
+
+Package v1 contains API Schema definitions for the camel v1 API group
+
+== Resource Types
+
+[#_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.dex
.PackageSegments -2}}[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
+Deprecated no longer in use
+
+
+|===
+
+== Internal Types
+
+[#_camel_apache_org_v1_DataSpec]
+=== DataSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_SourceSpec, SourceSpec>>
+
+DataSpec represents the way the source is materialized in the running `Pod`.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`name` +
+string
+|
+
+
+the name of the specification
+
+|`path` +
+string
+|
+
+
+the path where the file is stored
+
+|`content` +
+string
+|
+
+
+the source code (plain text)
+
+|`rawContent` +
+[]byte
+|
+
+
+the source code (binary)
+
+|`contentRef` +
+string
+|
+
+
+the confimap reference holding the source content
+
+|`contentKey` +
+string
+|
+
+
+the confimap key holding the source content
+
+|`contentType` +
+string
+|
+
+
+the content type (typically text or binary)
+
+|`compression` +
+bool
+|
+
+
+if the content is compressed (base64 encrypted)
+
+
+|===
+
+[#_camel_apache_org_v1_DataTypeReference]
+=== DataTypeReference
+
+DataTypeReference references to the specification of a data type by its scheme
and format name.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`scheme` +
+string
+|
+
+
+the data type component scheme
+
+|`format` +
+string
+|
+
+
+the data type format name
+
+
+|===
+
+[#_camel_apache_org_v1_DataTypeSpec]
+=== DataTypeSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_DataTypesSpec, DataTypesSpec>>
+
+DataTypeSpec represents the specification for a data type.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`scheme` +
+string
+|
+
+
+the data type component scheme
+
+|`format` +
+string
+|
+
+
+the data type format name
+
+|`description` +
+string
+|
+
+
+optional description
+
+|`mediaType` +
+string
+|
+
+
+media type as expected for HTTP media types (ie, application/json)
+
+|`dependencies` +
+[]string
+|
+
+
+the list of Camel or Maven dependencies required by the data type
+
+|`headers` +
+*xref:#_camel_apache_org_v1_HeaderSpec[map[string\]github.com/apache/camel-kamelets/crds/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_DataTypesSpec]
+=== DataTypesSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletSpecBase, KameletSpecBase>>
+
+DataTypesSpec represents the specification for a set of data types.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`default` +
+string
+|
+
+
+the default data type for this Kamelet
+
+|`types` +
+*xref:#_camel_apache_org_v1_DataTypeSpec[map[string\]github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.DataTypeSpec]*
+|
+
+
+one to many data type specifications
+
+|`headers` +
+*xref:#_camel_apache_org_v1_HeaderSpec[map[string\]github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.HeaderSpec]*
+|
+
+
+one to many header specifications
+
+
+|===
+
+[#_camel_apache_org_v1_EventTypeSpec]
+=== EventTypeSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletSpecBase, KameletSpecBase>>
+
+EventTypeSpec represents a specification for an event type.
+Deprecated: In favor of using DataTypeSpec.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`mediaType` +
+string
+|
+
+
+media type as expected for HTTP media types (ie, application/json)
+
+|`schema` +
+*xref:#_camel_apache_org_v1_JSONSchemaProps[JSONSchemaProps]*
+|
+
+
+the expected schema for the event
+
+
+|===
+
+[#_camel_apache_org_v1_ExternalDocumentation]
+=== ExternalDocumentation
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_JSONSchemaProps, JSONSchemaProps>>
+
+ExternalDocumentation allows referencing an external resource for extended
documentation.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`description` +
+string
+|
+
+
+
+
+|`url` +
+string
+|
+
+
+
+
+
+|===
+
+[#_camel_apache_org_v1_HeaderSpec]
+=== HeaderSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_DataTypeSpec, DataTypeSpec>>
+* <<#_camel_apache_org_v1_DataTypesSpec, DataTypesSpec>>
+
+HeaderSpec represents the specification for a header used in the Kamelet.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`type` +
+string
+|
+
+
+
+
+|`title` +
+string
+|
+
+
+
+
+|`description` +
+string
+|
+
+
+
+
+|`required` +
+bool
+|
+
+
+
+
+|`default` +
+string
+|
+
+
+
+
+
+|===
+
+[#_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]*
+|
+
+
+
+
+|`example` +
+*xref:#_camel_apache_org_v1_JSON[JSON]*
+|
+
+
+
+
+|`nullable` +
+bool
+|
+
+
+
+
+|`x-descriptors` +
+[]string
+|
+
+
+XDescriptors is a list of extended properties that trigger a custom behavior
in external systems
+
+
+|===
+
+[#_camel_apache_org_v1_JSONSchemaProps]
+=== JSONSchemaProps
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_DataTypeSpec, DataTypeSpec>>
+* <<#_camel_apache_org_v1_EventTypeSpec, EventTypeSpec>>
+* <<#_camel_apache_org_v1_KameletSpecBase, KameletSpecBase>>
+
+JSONSchemaProps is a JSON-Schema following Specification Draft 4
(http://json-schema.org/).
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`id` +
+string
+|
+
+
+
+
+|`description` +
+string
+|
+
+
+
+
+|`title` +
+string
+|
+
+
+
+
+|`properties` +
+*xref:#_camel_apache_org_v1_JSONSchemaProp[map[string\]github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.JSONSchemaProp]*
+|
+
+
+
+
+|`required` +
+[]string
+|
+
+
+
+
+|`example` +
+*xref:#_camel_apache_org_v1_JSON[JSON]*
+|
+
+
+
+
+|`externalDocs` +
+*xref:#_camel_apache_org_v1_ExternalDocumentation[ExternalDocumentation]*
+|
+
+
+
+
+|`$schema` +
+*xref:#_camel_apache_org_v1_JSONSchemaURL[JSONSchemaURL]*
+|
+
+
+
+
+|`type` +
+string
+|
+
+
+
+
+
+|===
+
+[#_camel_apache_org_v1_JSONSchemaURL]
+=== JSONSchemaURL(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_JSONSchemaProps, JSONSchemaProps>>
+
+JSONSchemaURL represents a schema url.
+
+
+[#_camel_apache_org_v1_KameletCondition]
+=== KameletCondition
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletStatus, KameletStatus>>
+
+KameletCondition describes the state of a resource at a certain point.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`type` +
+*xref:#_camel_apache_org_v1_KameletConditionType[KameletConditionType]*
+|
+
+
+Type of kamelet condition.
+
+|`status` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.dex
.PackageSegments -2}}[Kubernetes core/v1.ConditionStatus]*
+|
+
+
+Status of the condition, one of True, False, Unknown.
+
+|`lastUpdateTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.dex
.PackageSegments -2}}[Kubernetes meta/v1.Time]*
+|
+
+
+The last time this condition was updated.
+
+|`lastTransitionTime` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.dex
.PackageSegments -2}}[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_KameletConditionType]
+=== KameletConditionType(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletCondition, KameletCondition>>
+
+KameletConditionType --.
+
+
+[#_camel_apache_org_v1_KameletPhase]
+=== KameletPhase(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletStatus, KameletStatus>>
+
+KameletPhase --.
+
+
+[#_camel_apache_org_v1_KameletProperty]
+=== KameletProperty
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletStatus, KameletStatus>>
+
+KameletProperty specify the behavior of a property in a Kamelet.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`name` +
+string
+|
+
+
+the name of the property
+
+|`default` +
+string
+|
+
+
+the default value of the property (if any)
+
+
+|===
+
+[#_camel_apache_org_v1_KameletSpec]
+=== KameletSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Kamelet, Kamelet>>
+
+KameletSpec specifies the configuration required to execute a Kamelet.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`KameletSpecBase` +
+*xref:#_camel_apache_org_v1_KameletSpecBase[KameletSpecBase]*
+|(Members of `KameletSpecBase` are embedded into this type.)
+
+
+
+
+|`versions` +
+*xref:#_camel_apache_org_v1_KameletSpecBase[map[string\]github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.KameletSpecBase]*
+|
+
+
+the optional versions available for this Kamelet. This field may not be taken
in account by Camel core and is meant to support
+any user defined versioning model on cluster only. If the user wants to use
any given version, she must materialize a file with the given version spec
+as the `main` Kamelet spec on the runtime.
+
+
+|===
+
+[#_camel_apache_org_v1_KameletSpecBase]
+=== KameletSpecBase
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletSpec, KameletSpec>>
+
+KameletSpecBase specifies the base configuration of a Kamelet.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`definition` +
+*xref:#_camel_apache_org_v1_JSONSchemaProps[JSONSchemaProps]*
+|
+
+
+defines the formal configuration of the Kamelet
+
+|`sources` +
+*xref:#_camel_apache_org_v1_SourceSpec[[\]SourceSpec]*
+|
+
+
+sources in any Camel DSL supported
+
+|`template` +
+*xref:#_camel_apache_org_v1_Template[Template]*
+|
+
+
+the main source in YAML DSL
+
+|`types` +
+*xref:#_camel_apache_org_v1_EventTypeSpec[map[github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.TypeSlot\]github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.EventTypeSpec]*
+|
+
+
+data specification types for the events consumed/produced by the Kamelet
+Deprecated: In favor of using DataTypes
+
+|`dataTypes` +
+*xref:#_camel_apache_org_v1_DataTypesSpec[map[github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.TypeSlot\]github.com/apache/camel-kamelets/crds/pkg/apis/camel/v1.DataTypesSpec]*
+|
+
+
+data specification types for the events consumed/produced by the Kamelet
+
+|`dependencies` +
+[]string
+|
+
+
+Camel dependencies needed by the Kamelet
+
+
+|===
+
+[#_camel_apache_org_v1_KameletStatus]
+=== KameletStatus
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Kamelet, Kamelet>>
+
+KameletStatus defines the observed state of Kamelet.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`observedGeneration` +
+int64
+|
+
+
+ObservedGeneration is the most recent generation observed for this Kamelet.
+
+|`phase` +
+*xref:#_camel_apache_org_v1_KameletPhase[KameletPhase]*
+|
+
+
+Phase --
+
+|`conditions` +
+*xref:#_camel_apache_org_v1_KameletCondition[[\]KameletCondition]*
+|
+
+
+Conditions --
+
+|`properties` +
+*xref:#_camel_apache_org_v1_KameletProperty[[\]KameletProperty]*
+|
+
+
+Properties --
+
+
+|===
+
+[#_camel_apache_org_v1_Language]
+=== Language(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_SourceSpec, SourceSpec>>
+
+Language represents a supported language (Camel DSL).
+
+
+[#_camel_apache_org_v1_RawMessage]
+=== RawMessage(`[]byte` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_JSON, JSON>>
+* <<#_camel_apache_org_v1_Template, Template>>
+
+RawMessage is a raw encoded JSON value.
+It implements Marshaler and Unmarshaler and can
+be used to delay JSON decoding or precompute a JSON encoding.
+
+
+[#_camel_apache_org_v1_ResourceCondition]
+=== ResourceCondition
+
+ResourceCondition is a common type for all conditions.
+
+
+[#_camel_apache_org_v1_SourceSpec]
+=== SourceSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletSpecBase, KameletSpecBase>>
+
+SourceSpec defines the configuration for one or more routes to be executed in
a certain Camel DSL language.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`DataSpec` +
+*xref:#_camel_apache_org_v1_DataSpec[DataSpec]*
+|(Members of `DataSpec` are embedded into this type.)
+
+
+contains configuration related to the source code
+
+|`language` +
+*xref:#_camel_apache_org_v1_Language[Language]*
+|
+
+
+specify which is the language (Camel DSL) used to interpret this source code
+
+|`loader` +
+string
+|
+
+
+Loader is an optional id of the org.apache.camel.k.RoutesLoader that will
+interpret this source at runtime
+
+|`interceptors` +
+[]string
+|
+
+
+Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
+uses to pre/post process sources
+
+|`type` +
+*xref:#_camel_apache_org_v1_SourceType[SourceType]*
+|
+
+
+Type defines the kind of source described by this object
+
+|`property-names` +
+[]string
+|
+
+
+List of property names defined in the source (e.g. if type is "template")
+
+|`from-kamelet` +
+bool
+|
+
+
+True if the spec is generated from a Kamelet
+
+
+|===
+
+[#_camel_apache_org_v1_SourceType]
+=== SourceType(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_SourceSpec, SourceSpec>>
+
+SourceType represents an available source type.
+
+
+[#_camel_apache_org_v1_Template]
+=== Template
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_KameletSpecBase, KameletSpecBase>>
+
+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_TypeSlot]
+=== TypeSlot(`string` alias)
+
+TypeSlot represent a kind of data (ie, input, output, ...).