# The name of the Kamelet
kameletMetadataName=my-sample-sink
# The icon for the Kamelet
kameletMetadataIcon=
# All of the kamelets are in Preview support level at the moment
kameletMetadataSupportLevel=Preview

# The provider
kameletMetadataProvider=Apache Software Foundation

# The catalog version
kameletMetadataCataLogVersion=3.20.1-SNAPSHOT
# The group for the kamelet
kameletMetadataKameletGroup=
# One of sink, source or action
kameletMetadataKameletType=sink

# The required runtime
kameletMetadataRequiresRuntime=

# The title for the Kamelet
kameletSpecTitle=

# The description for the Kamelet
kameletSpecDescription=

# Properties
kameletProperties=myProperty1,myProperty2,myProperty3
requiredKameletProperties=myProperty1,myProperty2

# (Optional) Beans used in the kamelet
kameletBeans=myBean1,myBean2

# The from URI
kameletFromUri=kamelet:source
fromParameters=fromParam1,fromParam2

# The to URI
kameletToUri=log:info
toParameters=toParam1,toParam2
