// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/json-schema-validators-action.svg[] Json Schema Validator Action

*Provided by: "Apache Software Foundation"*

*Support Level for this Kamelet is: "Preview"*

Apply a Json Schema Template to validate the payload against.

The template property needs to be encoded in base64, so when you pass it as parameter, don't forget to encode it.

== Configuration Options

The following table summarizes the configuration options available for the `json-schema-validators-action` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *template {empty}* *| Template| The inline template| binary| | 
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `json-schema-validators-action` can be used in various contexts.

=== Knative Action

The `json-schema-validators-action` Kamelet can be used as intermediate step in a Knative binding.

.json-schema-validators-action-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: json-schema-validators-action-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: timer-source
    properties:
      message: "Hello"
  steps:
  - ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: json-schema-validators-action
    properties:
      template: "The Template"
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel

----

Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `json-schema-validators-action-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the action using the following command:

[source,shell]
----
kubectl apply -f json-schema-validators-action-binding.yaml
----

==== *Binding to Knative using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind timer-source?message=Hello --step json-schema-validators-action -p "step-0.template=The Template" channel/mychannel
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

=== Kafka Action

The `json-schema-validators-action` Kamelet can be used as intermediate step in a Kafka binding.

.json-schema-validators-action-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: json-schema-validators-action-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: timer-source
    properties:
      message: "Hello"
  steps:
  - ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: json-schema-validators-action
    properties:
      template: "The Template"
  sink:
    ref:
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic

----

Ensure that you've installed https://strimzi.io/[Strimzi] and created a topic named `my-topic` in the current namespace.
Make also sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `json-schema-validators-action-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the action using the following command:

[source,shell]
----
kubectl apply -f json-schema-validators-action-binding.yaml
----

==== *Binding to Kafka using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind timer-source?message=Hello --step json-schema-validators-action -p "step-0.template=The Template" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
